对于MySQL速度慢的问题,除了优化 SQL 以外,应该必须优先想到的即使 MySQL 数据库的 innodb_buffer_pool_size 配置问题。
一般来说,innodb_buffer_pool_size 的默认大小都是很小的,尤其是 win 下其默认大小更是只有离谱的 8M。Linux 的默认大小大一些,是128M,但也是不怎么够用的。因此在 innodb_buffer_pool_size 配置值当前较小的情况下,当出现性能问题时,应当考虑重设 innodb_buffer_pool_size 值。
1、查看当前innodb_buffer_pool_size 大小
查看当前 innodb_buffer_pool_size 大小的 SQL 语句:
show global variables like 'innodb_buffer_pool_size';
返回结果:
这里的 Value 值的单位是 Byte。167772160 即 160M
2、修改 innodb_buffer_pool_size 大小
一般来说,有两种修改 innodb_buffer_pool_size 的方式。
第一种:直接通过 sql 语句进行修改,但这种方式修改的配置不是持久化的,数据库重启之后就会失效。
第二种:修改配置文件,这种方式做出的修改是持久化的。
具体方式:
第一种:sql 语句直接修改
set global innodb_buffer_pool_size = 167772160
上面 sql 的意思是将当前 innodb_buffer_pool_size 设置为167772160Byte,即160M。
第二种:修改配置文件
修改 MySQL 的 my.cnf 配置
如:
innodb_buffer_pool_size = 2147483648 #设置2G
innodb_buffer_pool_size = 2G #设置2G
innodb_buffer_pool_size = 500M #设置500M
MySQL5.7及以后版本,改参数时动态的,修改后,无需重启MySQL,但是低版本,静态的,修改后,需要重启MySQL。
my.cnf 配置文件修改参数时既支持单位字节、也支持单位G或M。但session中修改仅支持单位字节的方式、不支持G、M单位方式,即仅支持:innodb_buffer_pool_size = 2147483648。
附
在线单位换算网址:https://www.toolhelper.cn/Digit/UnitConvert?tab=byte