如何调整MySQL参数
作者:angushine
调整InnoDB缓冲池大小有两种方法:1. 修改配置文件my.cnf/my.ini并重启MySQL,永久生效;2. 动态调整(需MySQL 5.7+),通过SQL语句设置,重启失效,注意Chunk_size倍数及权限
调整innodb_buffer_pool_size
方法一:修改配置文件(永久生效)
打开MySQL配置文件my.cnf(Linux)或my.ini(Windows)
在[mysqld]部分添加或修改innodb_buffer_pool_size参数,可设置具体值,单位为字节,如innodb_buffer_pool_size=8589934592。
保存文件后,重启MySQL服务使更改生效,命令为sudo systemctl restart mysql(Linux)或net stop mysql和net start mysql(Windows)。
方法二:动态修改(仅适用于MySQL 5.7及以上版本,重启后失效)
- 使用SQL语句
SHOW VARIABLES LIKE ‘innodb_buffer_pool_size';
- 查看当前设置。
mysql> SHOW VARIABLES LIKE 'innodb_buffer_pool_size'; +-------------------------+-------------+ | Variable_name | Value | +-------------------------+-------------+ | innodb_buffer_pool_size | 12884901888 | +-------------------------+-------------+ 1 row in set (0.01 sec)
- 执行
SET GLOBAL innodb_buffer_pool_size = 新值;
来修改,新值需是innodb_buffer_pool_chunk_size的整数倍。
mysql> SET GLOBAL innodb_buffer_pool_size=8589934592; ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation
如果出现上面的错误,需要授予SYSTEM_VARIABLES_ADMIN权限,可以看到授权后,可正常设置参数
mysql> GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO 'root'@'%'; Query OK, 0 rows affected (0.01 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> SET GLOBAL innodb_buffer_pool_size=8589934592; Query OK, 0 rows affected (0.00 sec)
可通过
SHOW VARIABLES LIKE ‘innodb_buffer_pool_resize_status';
查看调整进度。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。