繁体   English   中英

如何设置全局 innodb_buffer_pool_size?

[英]How to set global innodb_buffer_pool_size?

如何设置全局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-only 安装,您可以将此值设置为可用内存的 70-80%

看这里innodb_buffer_pool_size 文档

在那里它说这个变量可以在启动服务器时在选项文件(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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM