如何设置全局innodb_buffer_pool_size
mySQL 变量?当我将其设置system display
为时出现此错误:
ERROR 1238 (HY000): Variable 'innodb_buffer_pool_size' is a read only variable
如何设置全局innodb_buffer_pool_size
mySQL 变量?当我将其设置system display
为时出现此错误:
ERROR 1238 (HY000): Variable 'innodb_buffer_pool_size' is a read only variable
在MySQL 的早期版本 (< 5.7.5 )中设置的唯一方法
'innodb_buffer_pool_size'
变量是通过将其写入[mysqld] 部分下的my.cnf(对于 linux)和my.ini(对于 windows) :
[mysqld]
innodb_buffer_pool_size = 2147483648
您需要重新启动 mysql 服务器才能使其生效。
从 MySQL 5.7.5 开始,可以使用 SET 语句动态设置 innodb_buffer_pool_size 配置选项,从而允许您在不重新启动服务器的情况下调整缓冲池的大小。例如:
mysql> SET GLOBAL innodb_buffer_pool_size=402653184;
参考:http ://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-online-resize.html
缓冲池大小必须始终等于或倍数 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances。如果将 innodb_buffer_pool_size 配置为不等于或倍数 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances 的值,则缓冲池大小会自动调整为不小于指定缓冲池的等于或倍数的 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances 的值
通过@FlyingAtom
innodb_buffer_pool_size
您应该在 [mysqld] 部分下将此变量值设置为:
innodb_buffer_pool_size=2G
并重启MySQL服务生效。
InnoDB 缓冲池缓存数据和索引页面。您可以将此值设置为仅 Innodb 安装的可用内存的 70-80%
在那里它说这个变量可以在选项文件(my.cnf)中设置,也可以在启动服务器时在命令行中设置。
还。我认为您不能将“系统显示”的值分配给该变量,因为它是一个数字。请参阅文档。
我遇到了同样的问题:
错误 1238 (HY000): 变量 'innodb_buffer_pool_size' 是只读变量
然后我注意到我[mysqly]
在顶部写错了,这就是 my.cnf 无法正常工作的原因。我将其更改为[mysqld]
并重新启动 MySQL,然后一切正常。
临时增加缓冲池大小:
SET GLOBAL innodb_buffer_pool_size= (SELECT @@innodb_buffer_pool_size)*10
#check via this:
#SELECT @@innodb_buffer_pool_size/1024/1024/1024
要永久增加,您需要编辑 my.cnf 文件。这是我的 ubuntu + mysql 8 命令。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在文件底部添加这个
innodb_buffer_pool_size = 8G
保存并退出。重启 MySQL。
sudo systemctl restart mysql