mysql如何实现单表数亿级数据查询不卡?

相信大家可能在平时mysql进行单表百万级千万级数据查询时,肯定会遇到一个问题,那就是查询数据非常之卡!

就不说数亿的吧,我之前客户的数据库单张表百万级的,查询动辄几十秒一分钟左右!这就造成了一个问题,系统卡死的错觉!后面我花了几天的时间进行优化,终于变成了0.000几秒,后面就算是数亿级的单表查询也变成0.0几秒,没有优化之前数亿级的单表查询半小时到1小时左右,特别恐怖!

好了,话不多说!开始优化吧!

我这个客户是每隔几天定期导数据到数据库表里供用户查询的,该数据表没有涉及增删改的需求!这里我选用的是myisam数据库引擎!为何?怎么确定数据库引擎?

首先,你要看你的数据表查询用的多还是增删改用的多。查询用的多就选myisam数据库引擎,查询性能据说是innoDB数据库引擎的6、7倍,我经过测试,300多万的单表数据查询,myisam花了大概0.00几秒,而innoDB则是花了1、2秒2、3秒的样子!这里有个误区,很多初学者可能认为一个数据库只能选择一个数据库引擎,其实不然,数据库引擎不是跟数据库挂钩,而是跟数据表挂钩的,可以一张表是myisam引擎另一张是innoDB引擎!

引擎选对了性能就上去了一些,但这并不能达到0.0几秒的性能,还需要进行优化,因为我们这边选的是myisam引擎,所以varchar类型字段全部改成char类型

CHAR和VARCHAR的区别如下:
1)、CHAR是固定长度字符, VARCHAR是可变长度字符;
2)、CHAR会自动删除插入数据的尾部空格, VARCHA

猜你喜欢

转载自blog.csdn.net/BenChiZhuBaDaoWang/article/details/131885515