MySQL 优化学习6 --分库分表?

分库分表 又优点也有缺点,还要根据实际情况而定

此文代码和数据表实践github: https://github.com/doctording/sharding-sql


新增数据操作对比效率

1. java代码Junit 测试一次

  • 普通mybatis操作,往已有一千万数据的user表新增数据
    MySQL 优化学习6 --分库分表?

  • 分库分表,新增一条记录
    MySQL 优化学习6 --分库分表?

2. jmeter 测试

开了20个线程

  • 普通mybatis操作
    MySQL 优化学习6 --分库分表?

MySQL 优化学习6 --分库分表?

  • 分库分表,新增一条记录
    MySQL 优化学习6 --分库分表?

MySQL 优化学习6 --分库分表?


分开测试 ,数字表示jmeter所开的线程数量

普通的

100

MySQL 优化学习6 --分库分表?

1k

MySQL 优化学习6 --分库分表?

5k

MySQL 优化学习6 --分库分表?

1w
MySQL 优化学习6 --分库分表?


分库分表的

100

MySQL 优化学习6 --分库分表?

1k

MySQL 优化学习6 --分库分表?

5k

MySQL 优化学习6 --分库分表?

1w

MySQL 优化学习6 --分库分表?


说明:

对于1千万数据的实践, 线程数设为10,1000,5000时,普通一张mysql的效率比分库分表是高的;但是当测试线程为10000时,对于新增操作,普通一张表直接jmeter测试,线程阻塞了一样; 而对于分库分表的,jmeter能够轻松执行完成,注意到分库分表的响应时间也比普通一张表的好

可以想象,对于更大规模的数据量高并发的访问,如果仍然还用一张普通的mysql表来处理,那结果将是非常糟糕的。

主要参考:

https://www.cnblogs.com/jshen/p/7682502.html

https://blog.csdn.net/winy_lm/article/details/50708493

  • 分库分表的采用了sharding-jdbc

https://github.com/sharding-sphere/sharding-sphere

代码来自:http://www.cnblogs.com/2YSP/p/9746981.html
不过原文的代码跑起来有问题,测试数据也没造