MySQL 优化学习6 --分库分表?
分库分表
又优点也有缺点,还要根据实际情况而定
此文代码和数据表实践github: https://github.com/doctording/sharding-sql
新增数据操作对比效率
1. java代码Junit 测试一次
-
普通mybatis操作,往已有一千万数据的user表新增数据
-
分库分表,新增一条记录
2. jmeter 测试
开了20个线程
- 普通mybatis操作
- 分库分表,新增一条记录
分开测试 ,数字表示jmeter所开的线程数量
普通的
100
1k
5k
1w
分库分表的
100
1k
5k
1w
说明:
对于1千万
数据的实践, 线程数设为10,1000,5000时,普通一张mysql的效率比分库分表是高的;但是当测试线程为10000时,对于新增操作,普通一张表直接jmeter测试,线程阻塞了一样; 而对于分库分表的,jmeter能够轻松执行完成,注意到分库分表的响应时间也比普通一张表的好
可以想象,对于更大规模的数据量
,高并发
的访问,如果仍然还用一张普通的mysql表来处理,那结果将是非常糟糕的。
主要参考:
-
吞吐量(Throughput)、QPS、并发数、响应时间(RT)
https://www.cnblogs.com/quchengfeng/p/4958924.html -
分库分表相关的博文:
https://www.cnblogs.com/jshen/p/7682502.html
https://blog.****.net/winy_lm/article/details/50708493
- 分库分表的采用了sharding-jdbc
https://github.com/sharding-sphere/sharding-sphere
代码来自:http://www.cnblogs.com/2YSP/p/9746981.html
不过原文的代码跑起来有问题,测试数据也没造