文章目录
- 前言
- 一、基本参数
- 二、提分参数
- 三、关键参数
- 四、遗漏参数
- 总结
前言
今年由于阿里承办了全国大学生计算机系统能力大赛PolarDB数据库创新设计赛,本以为数据库大赛会取消,直到十一左右比赛才姗姗来迟,所以赛程较往年缩短了一个月左右,初赛和复赛都只有一个月时间,时间很紧,加之到了年底工作又比较忙,初赛的参数调优环节成绩并不理想,所以对复赛也没抱多大希望,但是进入复赛之后发现复赛跟初赛完全不同,一开始的时候成绩还不错,就又开始了熬夜模式,进程也是比较顺利,最终拿到了第5的名次,比去年又进步了几名。在参赛过程中对数据库的参数有了系统和深入的了解学习,对数据库的线程池机制有了更深的理解,解锁了LTO链接时优化和PGO运行时优化等技能,分享出来供大家参考。
本次赛题是mysql数据库的性能优化,我按照优化方法分为3个部分:参数调优、线程池机制、编译优化。
一、基本参数
首先最基本的就是参数调优,参数很多,我列了几个有代表性的基本参数:
1、max_connections
最大连接数,加载数据用了32个连接,然后压测时用了10乘warehouse个连接,所以最大连接数必须大于10乘warehouse个连接,看了mysql源码最大值是10W,所以直接开到10W个。
2、innodb_buffer_pool_size
一般来说这个参数越大分越高,可以设置到可用内存的70-80%,但是实际上当连接数上来之后经常出现内存不够用的情况。刚开始这个参数我们设到了24G,最后2200warehouse时只能设到18G左右。
3、innodb_buffer_pool_insta