如何简单粗暴的优化一张数据量增长很快的千万级大表?

1

当一张表的数据量达到千万级别的时候,任何对表的操作都得小心翼翼。核心点在于避免全表扫描、避免锁表、避免产生大量行锁。

本质上是让每一次sql的执行都更快的完成,避免过长时间占用数据库连接,让连接能够迅速的释放回数据库连接池,提供更多稳定的服务。

一旦产生大量的行锁甚至表锁,将会带来连接瞬间被打满、数据库资源耗尽、服务宕机的灾难性后果。所以如何避免以上问题的发生才是最重要的,绝不能等问题发生之后再去解决。

SQL查询的执行路径:

sql优化

  1. 所有sql必须命中索引,禁止全表扫描

2

千万级大表在不考虑分库分表的情况下有如下几个可以优化的地方,仅供参考:

数据库层面

  • 主键最好是递增的,不要用uuid,降低空间占用;

  • 根据需要查询的字段,建立合适的索引(包括联合索引),必要的时候根据explain查看执行计划分析索引是否被命中

  • 根据查询条件,删掉一些命中率比较低的索引,提高数据插入效率;

  • 对于一些复杂查询,比如order by、group by等,要注意执行计划的Extra列是否有Using temporary字样,如果有的话就意味着使用了临时表,这种查询的频率比较高的话,可以适当增大内存临时表空间,可以提高查询速度;

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章