欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mycat搭建分庫分表方式

 更新時間:2025年01月08日 08:53:18   作者:MuseLss  
文章介紹了如何使用分庫分表架構(gòu)來解決單表數(shù)據(jù)量過大帶來的性能和存儲容量限制的問題,通過在一對主從復(fù)制節(jié)點(diǎn)上配置數(shù)據(jù)源,并使用分片算法將數(shù)據(jù)分配到不同的數(shù)據(jù)庫表中,可以有效降低單表數(shù)據(jù)量過大導(dǎo)致的效率問題

分庫分表解決的問題

單表數(shù)據(jù)量過大帶來的性能和存儲容量的限制的問題:

  • 索引效率下降
  • 讀寫瓶頸
  • 存儲容量限制
  • 事務(wù)性能問題

分庫分表架構(gòu)

  • 再搭建一對主從復(fù)制節(jié)點(diǎn),3307主節(jié)點(diǎn),3309從節(jié)點(diǎn)
  • 配置數(shù)據(jù)源 dw1 , dr1,
  • 創(chuàng)建集群c1
  • 創(chuàng)建邏輯庫  CREATE DATABASE clusterdb;
  • 創(chuàng)建廣播表 BROADCAST代表廣播表,意味著所有的數(shù)據(jù)源都會創(chuàng)建這張表

CREATE TABLE clusterdb.`dict_type` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`type_id` int(11) NOT NULL COMMENT '業(yè)務(wù)類型id',
`name` varchar(255) DEFAULT NULL COMMENT '名稱',
PRIMARY KEY (`id`) USING BTREE
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='類型字典' BROADCAST;

添加數(shù)據(jù)

INSERT INTO clusterdb.`dict_type` VALUES (1,1,'發(fā)貨單');
INSERT INTO clusterdb.`dict_type` VALUES (2,2,'收貨單');
INSERT INTO clusterdb.`dict_type` VALUES (3,3,'出庫單');
INSERT INTO clusterdb.`dict_type` VALUES (4,4,'入庫單');
INSERT INTO clusterdb.`dict_type` VALUES (5,5,'出室單');
INSERT INTO clusterdb.`dict_type` VALUES (6,6,'入室單');

驗證一下是否每個數(shù)據(jù)節(jié)點(diǎn)都有數(shù)據(jù)

創(chuàng)建分片庫表

  • 分庫分片表就是把數(shù)據(jù)按照特定的算法,分配到不同的數(shù)據(jù)庫表中,達(dá)到降低單表數(shù)據(jù)量過大導(dǎo)致的效率問題。

CREATE TABLE clusterdb.orders(
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`order_type` int(11) NOT NULL COMMENT '業(yè)務(wù)類型id',
`order_name` varchar(255) DEFAULT NULL COMMENT '名稱',
PRIMARY KEY (`id`) USING BTREE
)ENGINE=INNODB DEFAULT CHARSET=utf8
dbpartition BY mod_hash(id) tbpartition BY mod_hash(id)
tbpartitions 1 dbpartitions 2;

INSERT into clusterdb.orders values(1,1,'test1');
INSERT into clusterdb.orders values(2,1,'test2');
INSERT into clusterdb.orders values(3,2,'test3');
INSERT into clusterdb.orders values(4,3,'test4');
INSERT into clusterdb.orders values(5,3,'test5');
INSERT into clusterdb.orders values(6,4,'test6');
INSERT into clusterdb.orders values(7,5,'test7');
INSERT into clusterdb.orders values(8,5,'test8');
INSERT into clusterdb.orders values(9,5,'test9');
INSERT into clusterdb.orders values(10,5,'test10');

驗證結(jié)果 

在mycat進(jìn)行查詢 select * from clusterdb.orders; 能得到全部的結(jié)果

主節(jié)點(diǎn)1,自動創(chuàng)建clusterdb_0 orders_0 并且存放的是id偶數(shù)的數(shù)據(jù)

主節(jié)點(diǎn)2,自動創(chuàng)建clusterdb_1 orders_1 并且存放的id是基數(shù)的數(shù)據(jù)

到這里分庫分表就成功啦~~

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論