色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql分庫分表的設計規則

林雅南1年前8瀏覽0評論

MySQL是一種關系型數據庫管理系統,使用廣泛。而MySQL分庫分表設計原則是一種非常重要的設計規則,它可以很好地優化我們的數據庫性能,提高我們的應用程序的效率。那么,以下是關于MySQL分庫分表設計的幾個原則:

一、分庫分表的目的,主要是解決數據量和并發訪問的問題,所以一定要非常謹慎的進行庫和表的選擇。

// 庫的選擇規則如下:
a. 庫名要有意義,很好的反映應用的業務(比如購物系統,每個庫可以按城市、按類別等等分庫)
b. 庫的建議數量為【數據量/10億】,上限100.
c. 庫要將一些經常被查詢的數據放在同一個庫中,這樣可以提高查詢的效率。
// 表的選擇規則如下:
a. 分區列的選取要求 : 均勻,高并發性能好,查詢效率高
b. 每張表的數據量要控制在1億以下
c. 每個表的主鍵值類型必須為整形,并且必須是64位的整形(bigint類型)。

二、分庫策略要考慮應用負載和數據規模兩個因素,從而分成若干個數據分區,在這些分區之間進行數據的切分和遷移。

create table t_order_202101( -- 2021年1月份訂單表
id bigint unsigned not null auto_increment primary key,
user_id int unsigned not null,
goods_id int unsigned not null,
create_time timestamp default current_timestamp
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
create table t_order_202102( -- 2021年2月份訂單表
id bigint unsigned not null auto_increment primary key,
user_id int unsigned not null,
goods_id int unsigned not null,
create_time timestamp default current_timestamp
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

三、分表策略要考慮數據切分的規則,比如根據商品ID、地區、時間等進行切分,以實現更好的數據查詢效率。

//按商品ID切分表
create table goods_0( -- 商品表下標從0開始
id int(11) not null auto_increment, 
name varchar(20) not null,
price decimal(10,2) not null default 0.00,
primary key (id)
) engine=innodb default charset=utf8mb4;
create table goods_1(
id int(11) not null auto_increment, 
name varchar(20) not null,
price decimal(10,2) not null default 0.00,
primary key (id)
) engine=innodb default charset=utf8mb4;
//按地區切分表
create table goods_beijing( --北京地區商品表
id int(11) not null auto_increment, 
name varchar(20) not null,
price decimal(10,2) not null default 0.00,
primary key (id)
) engine=innodb default charset=utf8mb4;
create table goods_shanghai( --上海地區商品表
id int(11) not null auto_increment, 
name varchar(20) not null,
price decimal(10,2) not null default 0.00,
primary key (id)
) engine=innodb default charset=utf8mb4;

四、在進行MySQL分庫分表之前,需要保證開發人員足夠理解業務,理解場景,才能確定合適的分庫分表策略。

以上是MySQL分庫分表的設計規則,通過有效的MySQL分庫分表設計,可以更好地優化我們的數據庫性能,提高我們的應用程序的效率。