Mysql分库分表方案
来源:互联网 发布:黑马java就业班视频 编辑:程序博客网 时间:2024/04/29 17:48
1.为什么要分表:
当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。
mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作。
2.大数据量并且访问频繁的表,将其分为若干个表
比如对于某网站平台的数据库表-公司表,数据量很大,这种能预估出来的大数据量表,我们就事先分出个N个表,这个N是多少,根据实际情况而定。
某网站现在的数据量至多是5000万条,可以设计每张表容纳的数据量是500万条,也就是拆分成10张表,那么如何判断某张表的数据是否容量已满呢?可以在程序段对于要新增数据的表,在插入前先做统计表记录数量的操作,当<500万条数据,就直接插入,当已经到达阀值,可以在程序段新创建数据库表(或者已经事先创建好),再执行插入操作。
3. 利用merge存储引擎来实现分表
如果要把已有的大数据量表分开比较痛苦,最痛苦的事就是改代码,因为程序里面的sql语句已经写好了。用merge存储引擎来实现分表, 这种方法比较适合.
第一步:建立user1及usersCREATE TABLE user1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(20), pass CHAR(32), sex tinyint(1)) ENGINE=Myisam; CREATE TABLE users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(20), pass CHAR(32), sex tinyint(1)) ENGINE=MERGE UNION=(user1) INSERT_METHOD=LAST; INSERT INTO users (name,pass,sex) VALUES ('user11','123456',1),('user12','123456',1),('user13','123456',0);
第二步:建立user2及修改usersCREATE TABLE user2 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(20), pass CHAR(32), sex tinyint(1)) ENGINE=Myisam;ALTER TABLE users UNION=(user1,user2) INSERT_METHOD=LAST;INSERT INTO users (name,pass,sex) VALUES ('user21','123456',1),('user22','123456',1),('user23','123456',0);
第三步:建立user3及修改usersCREATE TABLE user3 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(20), pass CHAR(32), sex tinyint(1)) ENGINE=Myisam;ALTER TABLE users UNION=(user1,user2,user3) INSERT_METHOD=LAST;INSERT INTO users (name,pass,sex) VALUES ('user31','123456',1),('user32','123456',1),('user33','123456',0);
0 0
- 转Mysql分库分表方案
- Mysql分库分表方案
- Mysql分库分表方案
- Mysql分库分表方案
- Mysql分库分表方案
- Mysql分库分表方案
- Mysql分库分表方案
- Mysql分库分表方案
- mysql分库分表方案浅析
- Mysql分库分表方案
- Mysql分库分表方案
- mysql分库分表方案demo
- Mysql分库分表方案
- Mysql分库分表方案
- Mysql分库分表方案
- Mysql分库分表方案
- Mysql分库分表方案
- Mysql分库分表方案
- Linux中的IO模型
- JS事件委托
- 工作十年,我是如何达到年薪40W以上
- android 裁剪屏幕中特定区域内的内容
- Java中自然排序和比较器排序详解
- Mysql分库分表方案
- Linux下安装Redis
- [CCF-CSP]2016-1(中间数)
- datepicker,结束时间必须大于开始时间
- java获取某个文件夹内所有文件的名称
- ABAP 生产订单的创建与修改函数
- c++指针函数与函数指针实例讲解
- Oracle数据库的启动和关闭
- 解决viewpager的预加载