如何做强一个网站的品牌,福田庆三眼睛案例图片,迎中国建设银行网站,郴州专业的网站建设MySQL select count 性能分析
问题#xff1a;mysql 在count时发现非常慢
select count(*) from xxx; 无论执行多少次#xff0c;查询速度基本稳定在10-12秒之间
环境说明
windows11 x64SSD硬盘MySQL8.0.35数据库引擎为InnoDB数据行数不到3万行#xff0c;但是数据量将近…MySQL select count 性能分析
问题mysql 在count时发现非常慢
select count(*) from xxx; 无论执行多少次查询速度基本稳定在10-12秒之间
环境说明
windows11 x64SSD硬盘MySQL8.0.35数据库引擎为InnoDB数据行数不到3万行但是数据量将近900M这900M中包含了数据本身和索引。
思路
排除count(*) count(id)对性能的干扰。经过show profile分析在execute阶段有将近9秒多的时间。于是怀疑是io的问题。修改innodb的buffer相关进行测试
[mysqld]
# innodb_log_files_in_group 和innodb_log_file_size 8.0之后废弃
# 用innodb_redo_log_capacity代替默认100M最大128GB
innodb_redo_log_capacity1G# 三者之间的关系
# innodb_buffer_pool_size / innodb_buffer_pool_chunk_size innodb_buffer_pool_instances
# win32系统 innodb_buffer_pool_chunk_size 默认为128M
# 其他系统 innodb_buffer_pool_size 小于1G时innodb_buffer_pool_instances 默认为1
# 大于1G时。innodb_buffer_pool_instances 默认为8取值范围 1-64
innodb_buffer_pool_chunk_size512M
innodb_buffer_pool_instances8
innodb_buffer_pool_size4Gshow engine status\G查看buffer pool中描述(buffer pool的数量是 上面的instances数量对应) 关注 free buffers 有0的情况 如果有考虑buffer_size太小show status like %buffer%;查看
#从内存读取的大小
Innodb_buffer_pool_read_requests#无法满足内存读取从磁盘读取的大小
Innodb_buffer_pool_reads#计数器计算innodb需要创建页面的次数大于0时考虑buffer_size太小
Innodb_buffer_pool_wait_free buffer命中率 innodb_buffer_pool_read_requests / (innodb_buffer_pool_read_requests innodb_buffer_pool_reads) * 100 根据4,5步骤的情况修改了innodb_buffer_pool_size结果查询时第一次时长为10多秒后续每次查询稳定在0.01秒和之前比相关与多了一次缓存 我对比了下openEuler系统上同样数据库的同样操作第一次不到2秒后续每次0.01秒 对比了下innodb的所有参数除过上述提到的buffer_pool的三个参数被修改过其他都一致 有那个英雄路过时麻烦留言指点下问题出在哪里