MySQL千万级数据表的优化实战记录
MySQL千万级数据表的优化实战记录,博智网带你了解详细信息 。
前言这里先说明一下 , 网上很多人说阿里规定500w数据就要分库分表 。实际上 , 这个500w并不是定义死的 , 而是与MySQL的配置以及机器的硬件有关 。MySQL为了提升性能 , 会将表的索引装载到内存中 。但是当表的数据到达一定的量的时候 , 会导致内存无法存储这些索引 , 无法存储索引 , 就只能进行磁盘IO , 从而导致性能下降 。
实战调优
【MySQL千万级数据表的优化实战记录】我这里有张表 , 数据有1000w , 目前只有一个主键索引
CREATE TABLE `user` (`id` int(10) NOT NULL AUTO_INCREMENT,`uname` varchar(20) DEFAULT NULL COMMENT '账号',`pwd` varchar(20) DEFAULT NULL COMMENT '密码',`addr` varchar(80) DEFAULT NULL COMMENT '地址',`tel` varchar(20) DEFAULT NULL COMMENT '电话',`regtime` char(30) DEFAULT NULL COMMENT '注册时间',`age` int(11) DEFAULT NULL COMMENT '年龄',PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=10000003 DEFAULT CHARSET=utf8;





这里说一下 , 这种表一般不会查所有 , 只会查询一条 , 所以建表的时候 , 可以建成hash
select formcount from attribute where formname='user' //几乎不用时
count就进行优化完了 。如果上面有选择条件的话 , 就可以建立索引 , 通过走索引筛选的形式来查询 , 这样就可以不用读这个count了 。
那么 , count是没问题了 , 分页查询优化要如何优化呢?这里可以使用子查询来优化
select * from user whereid>=(select id from user limit 9000000,1) limit 10 //1.7s
其实子查询这种写法 , 判断id , 其实就是通过覆盖索引来查询 。效率会大大增加 。不过我这里测试是1.7s , 以前在公司优化这方面的时候 , 比这个查询时间要低 , 大家也可以自己生成数据自己测试
但是如果说数据量太大了 , 我还是建议走es或者进行一些默认选择 , count可以单独列出来
至此 , 一个千万级的数据分页查询的优化就完成了 。
总结到此这篇关于MySQL千万级数据表优化的文章就介绍到这了,更多相关MySQL千万级数据表优化内容请搜索趣讯吧以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣讯吧!
推荐阅读
- 10h是什么意思
- 1到12级风用那些现象表_示
- 全国英语等级考试怎么发短信查询
- 全国英语口语二级考试多少分及格
- 全国有多少个5A级景区
- 17级的台风有多大
- 县级机关的党组成员是什么级别
- 3级风有多大
- ipx7级防水是什么
- 班级文化的功能有哪些
