MySQL——全球最流行的数据库(没有之一,就使用量而言)。
——开源数据库。
——与mongoDB不同,MySQL是一门关系型数据库。
此系列文章,作者本人将推演至个人毕业设计之中。所以在毕设前,git项目不公开。若有真实的必要需求,请在文章底部联系本人。
转载文章需注明出处,thank you!PS.文章颇显粗糙稚嫩,承望不吝赐教!
性能测试灵感来源:
前几天在读的《深入NOSQL》时,引发一个思考,在庞大的数据中,是否应该思考一下MySQL关联查询的实用性!
举一个简单的例子,微博网站,A关注了100个人,B关注了100个人,A和B是好友,那么两个人共同关注了哪些人呢,然后查询显示出来?(在数据量是百万级千万级的情况下)
那么,是否这个时候,使用NOSQL来设计整个数据库更加优越呢?
研究方向:
1.使用批量插入数据快?还是循环一条条插入数据快?两者相差多少?
(批量插入:关闭事务,等数据全部加入命令列表,再开启事务插入数据)
(单一插入:一条一条数据插入)
2.数据池的加入对数据插入性能是否有影响?
3.远程数据库与本地数据库插入的差距?
测试环境:
本地机器:CPU:i5-4210U 双核四线程
内存:8GB,DDR3L
系统:Windows10专业版 1709版本
服务器:系统:CentOS7.4 64位
CPU:Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz 单核
内存:2GB
测试工具:
开发工具:IDEA 2017.3
本地MySQL版本:MySQL 5.7.17
远程MySQL版本:MySQL 5.7.17
其他:JDK1.8,阿里maven仓库,阿里druid连接池
百万级数据插入:
——为了保证数据的精确性,每次数据测试,都将进行三次测试!
项目目录结构(后续将加入c3p0、dbcp以及hikaricp连接池的性能测试)
数据库设计
万级数据的本地插入
——druid/local/批量数据插入
万级数据的本地插入
——druid/local/一一数据插入
总结:万级的数据的本地插入既可以看出,MySQL中用批量插入,性能是一条条数据插入的13倍!
因此在下一级的十万级数据插入,只进行一次一一插入数据的测试。
十万级数据的本地插入
——druid/local/批量数据插入
十万级数据的本地插入
——druid/local/一一数据插入
总结:十万级的数据本地插入即可以看出,MySQL中用批量插入,性能消耗和数据量插入应该不是成正比的,同时一条条数据插入完全可以淘汰!
万级数据的远程插入
——druid/remote/一一数据插入
未完待续!待补:
1.远程数据库连接 插入数据(万级、十万级、百万级)
2.本地数据库连接 插入数据(百万级)
3.不用数据库连接 插入数据(本地+远程 (万,十万,百万)级)
4.打包项目,在服务器模拟服务器本地数据库插入,打印日志,进行测试
5.购买阿里的云数据库RDS,插入比较
6. c3p0、dbcp以及hikaricp连接池的性能测试
关于查询
1.建立索引查询与纯粹关联查询差距
2.使用nosql的插入数据性能测试
3.使用nosql的查询数据性能测试
(后续测试不会基本不会测试单一数据插入,毕竟是不推荐的技术,性能差距太大。后续应该基本采用数据库连接池查询,因为实际开发中项目都是需要数据库连接池的开进行高效复用)
个人博客:写过诗的程序猿(https://www.hezhiming.xin)
个人邮箱:hezhimingabc@qq.com
个人微信:hezhiming_
如果您喜欢请点击一波关注,谢谢你的支持!