扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
数据库越来越大,单个表中数据过多,查询读写,还有锁机制,会导致严重的数据库性能影响.
表锁,行锁,都是为了保证数据的完整性,
分表
分表是把一个大表,分成若干个独立储存空间的表,每个表都对应MYD数据文件,MYI索引文件,FRM表结构文件,这些表可以分布在一个存储设备,也可以分在不同存储设备.
相当于一个表变为多个表,如果这时候有APP已经在使用中,而且会对原表进行操作等等,需要开发修改代码,因为原来的一个表已经分成好几个,按照原来的表肯定是搜索不到的.
将单表拆分,再根据一定算法,就可以将数据分散到多个表中,对数据量大的数据库,会有明显的提升,
减少数据库负担,缩短查询时间,这是分表的主要目的
MySQL分表-分为垂直切分,和水平切分.
垂直切分是按照列切分,水平就是行切分(需求不同自行挑选)
垂直切分
一般垂直切分都是把经常查询的列单独分到一张表中,方便查询
水平拆分
表的数据非常庞大,可以分成多个表,提高查询效率
--------------------------------------------------------------------------------------------------------
分表的几种方式
1-mysql集群
这个不是分表但是也是相同的作用,任务分担到多台mysql数据库
2-预先估计表的访问量,提前分为若干表,以防万一
根据一定算法,将数据分散到不同表中.
3-利用merge存储引擎来分表
merge只能用在myisam上进行分表.
merge分为主表跟子表,主表中是子表的位置,如果使用myisam来分表的话APP可以不需要修改连接数据的信息,还是可以直接从主表中查询.
做一个merge的实例
create database gao;
use gao;
create table gao(
id bigint auto_increment primary key,
name varchar(20),
sex tinyint not null default '0')
engine=myisam default charset=utf8 auto_increment=1;
批量加入数据
insert into gao(name,sex) values('gao',1);
insert into gao(name,sex)select name,sex from gao; 将查询到的数据插入,所以,数据都一样只是测验用
开始进行分表,首先创建两个子表
use gao;
drop table if exists gao_1;
create table gao_1(
id bingint primary key,
name varchar(20)
sex tinyint not null default '0')
engine=myisam default charset=utf8;
因为第二个表跟上面的一模一样除了名字
create table gao_2 like gao_1;
创建主表
drop table if exists mastergao;
create table mastergao(
id bigint primary key auto_increment ,
name varchar(20),
sex tinyint not null default '0')
engine=mergeunion=(gao_1,gao_2) insert_method=last charset=utf8 auto_increment=1;
insert_method = last 表示茶如道最后一张表 first 表示插入到第一张表
数据导入到两个子表当中.
insert into gao_1(id,name,sex) select id,name,sex from gao where id%2=1;
insert into gao_2(id,name,sex) select id,name,sex from gao where id%2=0;
id%2后的值单双导入到两个表中
这时候查询两个表跟主表,数据都有了就可以删除原来的gao将mastergao更改为gao即可.
alter table mastergao rename gao;完成
--------------------------------------------------------------------------------------------------------------
创新互联成立十载来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供成都网站设计、网站制作、外贸营销网站建设、网站策划、网页设计、域名注册、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,创新互联通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流