国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

這篇具有很好參考價(jià)值的文章主要介紹了MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、垂直分庫(kù)場(chǎng)景

  場(chǎng)景:在業(yè)務(wù)系統(tǒng)中,涉及一下表結(jié)構(gòu),但是由于用戶(hù)與訂單每天都會(huì)產(chǎn)生大量的數(shù)據(jù),單臺(tái)服務(wù)器的數(shù)據(jù)存儲(chǔ)以及處理能力是有限的,可以對(duì)數(shù)據(jù)庫(kù)表進(jìn)行拆分,原有數(shù)據(jù)庫(kù)如下

  MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

  說(shuō)明1:整個(gè)業(yè)務(wù)系統(tǒng)中的表,大致分為四個(gè),商品信息類(lèi)的表,訂單相關(guān)的表,用戶(hù)相關(guān)表及省市區(qū)相關(guān)的表,這里暫時(shí)將省市區(qū)的表和用戶(hù)相關(guān)的表放在一個(gè)數(shù)據(jù)節(jié)點(diǎn)上。

  說(shuō)明2:因?yàn)樯唐?,訂單和用?hù)相關(guān)的數(shù)據(jù),每天都會(huì)產(chǎn)生海量的數(shù)據(jù),所以我們采取的分庫(kù)策略是將不同業(yè)務(wù)類(lèi)型數(shù)據(jù),放在不同數(shù)據(jù)庫(kù)中,即垂直分庫(kù)。

?

MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

二、準(zhǔn)備工作

  在192.168.3.90,192.168.3.91,192.168.3.92三臺(tái)服務(wù)器上創(chuàng)建shopping數(shù)據(jù)庫(kù)

  MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

三、配置schema.xml

  MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

  說(shuō)明1:在schema標(biāo)簽里面的table標(biāo)簽不需要rule屬性的,只有在分表時(shí)才需要rule,我們現(xiàn)在是分庫(kù)操作,不需要rule屬性
  說(shuō)明2:在table標(biāo)簽中,商品相關(guān)的表都放在dn1數(shù)據(jù)節(jié)點(diǎn)上,和訂單相關(guān)的表都放在dn2數(shù)據(jù)節(jié)點(diǎn)上,和用戶(hù)和地址相關(guān)的都放在dn3數(shù)據(jù)節(jié)點(diǎn)上

四、配置server.xml

  MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

  說(shuō)明1:修改schemas標(biāo)簽中的數(shù)據(jù)庫(kù)名稱(chēng)為shopping??

五、Mycat分庫(kù)測(cè)試

  首先因?yàn)樾薷腗ycat的配置文件,所以需要重啟一下Mycat,保證新的配置起作用。

  MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

  重啟之后,在192.168.3.91服務(wù)器上連接Mycat

  MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

  查看邏輯庫(kù)和邏輯表

  MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

  說(shuō)明1:目前這些表都還只是邏輯表,在mycat中存在,但是在MySQL的數(shù)據(jù)庫(kù)中都沒(méi)不存在,所以還需要把這些表創(chuàng)建出來(lái)。

  說(shuō)明2:這里我們創(chuàng)建三個(gè)表作為代表,其他暫時(shí)用不到的表就先不創(chuàng)建了,每個(gè)數(shù)據(jù)節(jié)點(diǎn)上創(chuàng)建一個(gè)表,然后這些表就會(huì)自動(dòng)的出現(xiàn)在配置好的數(shù)據(jù)節(jié)點(diǎn)上。

create table tb_goods_base(id int auto_increment primary key, goods_name varchar(20),  category varchar(20), price int);
create table tb_order_master(order_id int auto_increment primary key, money int, goods_id int, receiver_province varchar(6), receiver_city varchar(6), receiver varchar(20));
create table tb_user(id int auto_increment primary key, name varchar(20),  age int, gender varchar(1));

  MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

?

  在往每個(gè)表中插入一些測(cè)試數(shù)據(jù)

insert into tb_user (name, age, gender) values ("張三", 21, "男");
insert into tb_user (name, age, gender) values ("李四", 22, "女");
insert into tb_user (name, age, gender) values ("王五", 23, "男");
insert into tb_goods_base (goods_name, category, price) values ("華為手機(jī)","家電", 5888); insert into tb_goods_base (goods_name, category, price) values ("中國(guó)李寧","服裝", 499); insert into tb_goods_base (goods_name, category, price) values ("雙匯火腿","食品", 15); insert into tb_order_master (money, goods_id, receiver_province, receiver_city, receiver) values (5888, 1, "130000", "130200", "張三"); insert into tb_order_master (money, goods_id, receiver_province, receiver_city, receiver) values (499, 2, "130000", "130800", "李四"); insert into tb_order_master (money, goods_id, receiver_province, receiver_city, receiver) values (15, 3, "110000", 110100, "王五");

  MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

  以上是對(duì)Mycat數(shù)據(jù)垂直分庫(kù)的創(chuàng)建表,插入數(shù)據(jù)和查詢(xún)數(shù)據(jù)的測(cè)試。

六、Mycat多表查詢(xún)測(cè)試

  情況一:同一數(shù)據(jù)節(jié)點(diǎn)上的多表查詢(xún)

    首先創(chuàng)建一個(gè)三個(gè)的表用于測(cè)試,同一數(shù)據(jù)節(jié)點(diǎn)內(nèi)的多表查詢(xún),tb_areas_provinces, tb_areas_city, tb_user_address 三個(gè)表都是在dn3數(shù)據(jù)節(jié)點(diǎn)上的。

create table tb_areas_provinces (id int auto_increment primary key, provinceid varchar(6), province varchar(20));
create table tb_areas_city (id int auto_increment primary key, cityid varchar(6), city varchar(20), provinceid varchar(6));
create table tb_user_address (id int auto_increment primary key, user_id int, province_id varchar(6), city_id varchar(6), address varchar(20));

    說(shuō)明1:根據(jù)分庫(kù)策略,創(chuàng)建的這三個(gè)測(cè)試表,都是屬于用戶(hù)和地址相關(guān)的數(shù)據(jù),都在dn3數(shù)據(jù)節(jié)點(diǎn)上。

    MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

    添加一些測(cè)試數(shù)據(jù)

insert into tb_areas_provinces (provinceid, province) values ("110000", "北京市");
insert into tb_areas_provinces (provinceid, province) values ("120000", "天津市");
insert into tb_areas_provinces (provinceid, province) values ("130000", "河北省");

insert into tb_areas_city (cityid, city, provinceid) values ("110100", "市轄區(qū)", "110000");
insert into tb_areas_city (cityid, city, provinceid) values ("130200", "唐山市", "130000");
insert into tb_areas_city (cityid, city, provinceid) values ("130800", "承德市", "130000");


insert into tb_user_address (user_id, province_id, city_id, address) values (1, "110000", "110100", "清河毛紡廠");
insert into tb_user_address (user_id, province_id, city_id, address) values (2, "130000", "130200", "里二胡同");
insert into tb_user_address (user_id, province_id, city_id, address) values (3, "130000", "130800", "避暑山莊");

    MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

    現(xiàn)多表查詢(xún)需求是:根據(jù)tb_user, tb_user_address表,tb_areas_provinces表和tb_areas_city表查出用戶(hù)的名字已經(jīng)所在的省,市,已經(jīng)詳細(xì)的地址:使用Mycat查詢(xún)

select u.name, p.province, c.city, ua.address from tb_user as u, tb_user_address as ua, tb_areas_provinces as p, tb_areas_city as c where u.id = ua.user_id and ua.province_id = p.provinceid and ua.city_id = c.cityid;

    MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

    說(shuō)明:同一數(shù)據(jù)節(jié)點(diǎn)內(nèi)的多表聯(lián)合查詢(xún)?cè)趍ycat中可以正確查出結(jié)果。?

  情況二:不在同一數(shù)據(jù)節(jié)點(diǎn)上的多表查詢(xún)
    需求:查詢(xún)每一筆訂單的收件地址信息(包含省、市信息),其中要用到tb_order_master在dn2數(shù)據(jù)節(jié)點(diǎn)上,tb_areas_provinces和tb_areas_city在dn3數(shù)據(jù)節(jié)點(diǎn)上
select o.order_id, o.receiver,p.province, c.city from tb_order_master as o, tb_areas_provinces as p, tb_areas_city as c where o.receive_province=p.provinceid and o.receiver_city=c.cityid;

    MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

    這個(gè)時(shí)候就報(bào)錯(cuò)了, 報(bào)錯(cuò)的原因是:夸數(shù)據(jù)節(jié)點(diǎn)的多表查詢(xún),在執(zhí)行sql的時(shí)候,Mycat并不知道,將這條sql給哪一個(gè)數(shù)據(jù)節(jié)點(diǎn)處理。

    解決方式:將一些數(shù)據(jù)量少,并且一旦確定了就很少改變的表,設(shè)置為全局表,全局表可以在每個(gè)數(shù)據(jù)節(jié)點(diǎn)上都能訪問(wèn)。而本案例中的省/市表就符合這個(gè)特性,中國(guó)每個(gè)城市的編碼一旦確定,幾乎就不會(huì)變化,這樣的數(shù)據(jù)表,我們就可以設(shè)置為全局表。全局表會(huì)存在每一個(gè)數(shù)據(jù)節(jié)點(diǎn)上。

    如果要設(shè)置全局表,只需要在schema.xml設(shè)置邏輯表的時(shí)候加上 type="global"參數(shù)即可

    MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

    說(shuō)明1: 因?yàn)槭∈邢嚓P(guān)的數(shù)據(jù)表需要在dn1,dn2,dn3 三個(gè)數(shù)據(jù)節(jié)點(diǎn)上,所以dataNode這里要設(shè)置dn1,dn2,dn3三個(gè)節(jié)點(diǎn)

    說(shuō)明2:在table標(biāo)簽內(nèi)添加type="global"屬性

    說(shuō)明3:因?yàn)橹暗腶reas的表,都要變成全局表,所以需要數(shù)據(jù)清空在重新添加測(cè)試數(shù)據(jù)

    MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

    說(shuō)明4:因?yàn)樾薷牧薓ycat配置,所以需要重新啟動(dòng)Mycat

    MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

    重新創(chuàng)建tb_areas_provinces和tb_areas_city兩個(gè)表

create table tb_areas_provinces (id int auto_increment primary key, provinceid varchar(6), province varchar(20));
create table tb_areas_city (id int auto_increment primary key, cityid varchar(6), city varchar(20), provinceid varchar(6));  

    MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

    MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

    說(shuō)明5:這時(shí)候就會(huì)發(fā)現(xiàn)tb_areas_procinces和tb_areas_city出現(xiàn)在了三個(gè)數(shù)據(jù)節(jié)點(diǎn)上

    再次插入數(shù)據(jù)進(jìn)行多表查詢(xún)測(cè)試:

insert into tb_areas_provinces (provinceid, province) values ("110000", "北京市");
insert into tb_areas_provinces (provinceid, province) values ("120000", "天津市");
insert into tb_areas_provinces (provinceid, province) values ("130000", "河北省");

insert into tb_areas_city (cityid, city, provinceid) values ("110100", "市轄區(qū)", "110000");
insert into tb_areas_city (cityid, city, provinceid) values ("130200", "唐山市", "130000");
insert into tb_areas_city (cityid, city, provinceid) values ("130800", "承德市", "130000"); 

    會(huì)發(fā)現(xiàn)插入的這些測(cè)試數(shù)據(jù),會(huì)在dn1,dn2,dn3的每個(gè)數(shù)據(jù)節(jié)點(diǎn)的表中都添加成功。

    現(xiàn)在就可以順利的進(jìn)行多表查詢(xún)了。

    MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)

    說(shuō)明6:當(dāng)全局表中的數(shù)據(jù)發(fā)生改變的時(shí)候,每個(gè)數(shù)據(jù)節(jié)點(diǎn)下的表,也都會(huì)發(fā)生數(shù)據(jù)改變。?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-760150.html

到了這里,關(guān)于MySQL運(yùn)維6-Mycat分庫(kù)分表之垂直分庫(kù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • mysql運(yùn)維------分庫(kù)分表

    mysql運(yùn)維------分庫(kù)分表

    隨著互聯(lián)網(wǎng)以及移動(dòng)互聯(lián)網(wǎng)的發(fā)展,應(yīng)用系統(tǒng)的數(shù)據(jù)量也是成指數(shù)式增長(zhǎng),若采用單數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ),存在以下性能瓶頸: IO瓶頸 :熱點(diǎn)數(shù)據(jù)太多,數(shù)據(jù)庫(kù)緩存不足,產(chǎn)生大量磁盤(pán)IO,效率較低。請(qǐng)求數(shù)據(jù)太多,帶寬不夠,網(wǎng)絡(luò)IO瓶頸。 CPU瓶頸 :排序、分組、連接查詢(xún)、

    2023年04月11日
    瀏覽(20)
  • MySQL運(yùn)維3-分庫(kù)分表策略

    MySQL運(yùn)維3-分庫(kù)分表策略

    單庫(kù)瓶頸:如果在項(xiàng)目中使用的都是單MySQL服務(wù)器,則會(huì)隨著互聯(lián)網(wǎng)及移動(dòng)互聯(lián)網(wǎng)的發(fā)展,應(yīng)用系統(tǒng)的數(shù)據(jù)量也是成指數(shù)式增長(zhǎng),若采用單數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),存在一下性能瓶頸: IO瓶頸:熱點(diǎn)數(shù)據(jù)太多,數(shù)據(jù)庫(kù)緩存不足,產(chǎn)生大量磁盤(pán)IO,效率低下,請(qǐng)求數(shù)據(jù)太多,帶寬不夠,

    2024年02月05日
    瀏覽(37)
  • Mycat分庫(kù)分表實(shí)時(shí)同步到GreatSQL

    Mycat分庫(kù)分表實(shí)時(shí)同步到GreatSQL

    MyCat作為經(jīng)典的分庫(kù)分表中間件,在長(zhǎng)時(shí)間內(nèi)被廣泛認(rèn)為是管理超大MySQL數(shù)據(jù)庫(kù)集合的有效解決方案。近來(lái)接到客戶(hù)需求,需要將MyCat集群遷移到GreatSQL中,并且在一段時(shí)間內(nèi)需要實(shí)時(shí)從MyCat中同步數(shù)據(jù)到GreatSQL中,全量同步數(shù)據(jù)比較容易操作,增量同步有如下兩個(gè)棘手的問(wèn)題:

    2024年02月03日
    瀏覽(18)
  • 15天學(xué)習(xí)MySQL計(jì)劃(運(yùn)維篇)分庫(kù)分表-監(jiān)控-第十四天

    15天學(xué)習(xí)MySQL計(jì)劃(運(yùn)維篇)分庫(kù)分表-監(jiān)控-第十四天

    1.介紹 1.問(wèn)題分析 ? 隨著互聯(lián)網(wǎng)及移動(dòng)互聯(lián)網(wǎng)的發(fā)展,應(yīng)用系統(tǒng)的數(shù)據(jù)量也是成指數(shù)式增加,若采用但數(shù)據(jù)進(jìn)行數(shù)據(jù)存儲(chǔ),存在以下性能瓶頸: IO瓶頸:熱點(diǎn)數(shù)據(jù)太多,數(shù)據(jù)庫(kù)緩存不足,產(chǎn)生大量磁盤(pán)IO,效率較低。請(qǐng)求數(shù)據(jù)太多,帶寬不夠,網(wǎng)絡(luò)IO瓶頸。 CPU瓶頸:排序,分

    2024年02月05日
    瀏覽(35)
  • MyCat2介紹以及部署和讀寫(xiě)分離/分庫(kù)分表(MyCat2.0)

    MyCat2介紹以及部署和讀寫(xiě)分離/分庫(kù)分表(MyCat2.0)

    1.什么是mycat ? mycat是數(shù)據(jù)庫(kù)中間件 它可以干什么? 讀寫(xiě)分離 數(shù)據(jù)分片:垂直拆分,水平拆分 多數(shù)據(jù)源整合 2.數(shù)據(jù)庫(kù)中間件 ? 中間件:是一類(lèi)連接軟件組件和應(yīng)用的計(jì)算機(jī)軟件,以便于軟件各部件之間的溝通。 ? 例子:tomcat,kafka,redis等中間件 3.為什么使用macat java與數(shù)

    2024年02月09日
    瀏覽(27)
  • MySQL 數(shù)據(jù)存儲(chǔ)和優(yōu)化------MySQL索引原理和優(yōu)化 ---- (架構(gòu)---索引---事務(wù)---鎖---集群---性能---分庫(kù)分表---實(shí)戰(zhàn)---運(yùn)維)持續(xù)更新

    MySQL 數(shù)據(jù)存儲(chǔ)和優(yōu)化------MySQL索引原理和優(yōu)化 ---- (架構(gòu)---索引---事務(wù)---鎖---集群---性能---分庫(kù)分表---實(shí)戰(zhàn)---運(yùn)維)持續(xù)更新

    Mysql架構(gòu)體系全系列文章主目錄(進(jìn)不去說(shuō)明還沒(méi)寫(xiě)完) https://blog.csdn.net/grd_java/article/details/123033016 本文只是整個(gè)系列筆記的第二章:MySQL索引原理和優(yōu)化,只解釋索引相關(guān)概念。 索引可以提高查詢(xún)效率,影響where查詢(xún)和order by排序,它可以從多方面進(jìn)行分類(lèi),但是實(shí)際創(chuàng)建時(shí)

    2024年02月02日
    瀏覽(23)
  • 運(yùn)維高級(jí)--shell腳本完成分庫(kù)分表

    運(yùn)維高級(jí)--shell腳本完成分庫(kù)分表

    ?????隨著系統(tǒng)的運(yùn)行,存儲(chǔ)的數(shù)據(jù)量會(huì)越來(lái)越大,系統(tǒng)的訪問(wèn)的壓力也會(huì)隨之增大,如果一個(gè)庫(kù)中的表數(shù)據(jù)超過(guò)了一定的數(shù)量,比如說(shuō)MySQL中的表數(shù)據(jù)達(dá)到千萬(wàn)級(jí)別,就需要考慮進(jìn)行分庫(kù)分表; ?????其次隨著表數(shù)據(jù)的不斷增大,會(huì)發(fā)現(xiàn)查詢(xún)也隨著變得緩慢,如果添加索

    2024年02月15日
    瀏覽(31)
  • 運(yùn)維——編寫(xiě)腳本,使用mysqldump實(shí)現(xiàn)分庫(kù)分表備份。

    ?編寫(xiě)腳本,使用mysqldump實(shí)現(xiàn)分庫(kù)分表備份。 需要將 和 替換為您的 MySQL 用戶(hù)名和密碼,并將 替換為您希望保存?zhèn)浞菸募穆窂健?your_username your_password \\\"/path/to/backup\\\" 此腳本將遍歷所有數(shù)據(jù)庫(kù)和表,并使用 mysqldump 工具將每個(gè)表的數(shù)據(jù)導(dǎo)出到單獨(dú)的備份文件中。備份文件的命

    2024年02月15日
    瀏覽(24)
  • 【分庫(kù)分表】基于mysql+shardingSphere的分庫(kù)分表技術(shù)

    【分庫(kù)分表】基于mysql+shardingSphere的分庫(kù)分表技術(shù)

    目錄 1.什么是分庫(kù)分表 2.分片方法 3.測(cè)試數(shù)據(jù) 4.shardingSphere 4.1.介紹 4.2.sharding jdbc 4.3.sharding proxy 4.4.兩者之間的對(duì)比 5.留個(gè)尾巴 分庫(kù)分表是一種場(chǎng)景解決方案,它的出現(xiàn)是為了解決一些場(chǎng)景問(wèn)題的,哪些場(chǎng)景喃? 單表過(guò)大的話,讀請(qǐng)求進(jìn)來(lái),查數(shù)據(jù)需要的時(shí)間會(huì)過(guò)長(zhǎng) 讀請(qǐng)求過(guò)

    2024年03月12日
    瀏覽(46)
  • 掌握MySQL分庫(kù)分表(一)數(shù)據(jù)庫(kù)性能優(yōu)化思路、分庫(kù)分表優(yōu)缺點(diǎn)

    不能?上來(lái)就說(shuō)分庫(kù)分表! 根據(jù)實(shí)際情況分析,兩個(gè)角度思考:不分庫(kù)分表、分庫(kù)分表 軟優(yōu)化 數(shù)據(jù)庫(kù)參數(shù)調(diào)優(yōu) 分析慢查詢(xún)SQL語(yǔ)句,分析執(zhí)行計(jì)劃,進(jìn)行sql改寫(xiě)和程序改寫(xiě) 優(yōu)化數(shù)據(jù)庫(kù)索引結(jié)構(gòu) 優(yōu)化數(shù)據(jù)表結(jié)構(gòu)優(yōu)化 引入NOSQL和程序架構(gòu)調(diào)整 硬優(yōu)化 提升系統(tǒng)硬件(更快的IO、更

    2023年04月19日
    瀏覽(36)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包