欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql分庫(kù)分表的設(shè)計(jì)規(guī)則

MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),使用廣泛。而MySQL分庫(kù)分表設(shè)計(jì)原則是一種非常重要的設(shè)計(jì)規(guī)則,它可以很好地優(yōu)化我們的數(shù)據(jù)庫(kù)性能,提高我們的應(yīng)用程序的效率。那么,以下是關(guān)于MySQL分庫(kù)分表設(shè)計(jì)的幾個(gè)原則:

一、分庫(kù)分表的目的,主要是解決數(shù)據(jù)量和并發(fā)訪(fǎng)問(wèn)的問(wèn)題,所以一定要非常謹(jǐn)慎的進(jìn)行庫(kù)和表的選擇。

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

二、分庫(kù)策略要考慮應(yīng)用負(fù)載和數(shù)據(jù)規(guī)模兩個(gè)因素,從而分成若干個(gè)數(shù)據(jù)分區(qū),在這些分區(qū)之間進(jìn)行數(shù)據(jù)的切分和遷移。

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;

三、分表策略要考慮數(shù)據(jù)切分的規(guī)則,比如根據(jù)商品ID、地區(qū)、時(shí)間等進(jìn)行切分,以實(shí)現(xiàn)更好的數(shù)據(jù)查詢(xún)效率。

//按商品ID切分表
create table goods_0( -- 商品表下標(biāo)從0開(kāi)始
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;
//按地區(qū)切分表
create table goods_beijing( --北京地區(qū)商品表
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( --上海地區(qū)商品表
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;

四、在進(jìn)行MySQL分庫(kù)分表之前,需要保證開(kāi)發(fā)人員足夠理解業(yè)務(wù),理解場(chǎng)景,才能確定合適的分庫(kù)分表策略。

以上是MySQL分庫(kù)分表的設(shè)計(jì)規(guī)則,通過(guò)有效的MySQL分庫(kù)分表設(shè)計(jì),可以更好地優(yōu)化我們的數(shù)據(jù)庫(kù)性能,提高我們的應(yīng)用程序的效率。