Mysql 如何设置全局innodb\u缓冲区\u池\u大小?

Mysql 如何设置全局innodb\u缓冲区\u池\u大小?,mysql,Mysql,如何设置全局innodb\u buffer\u pool\u sizemySQL变量?当我将其设置为系统显示时会出现以下错误: ERROR 1238 (HY000): Variable 'innodb_buffer_pool_size' is a read only variable 看这里 在那里,它说这个变量可以在选项文件(my.cnf)中设置,也可以在启动服务器时在命令行上设置 还有。我认为您无法将“系统显示”的值分配给这个变量,因为它是一个数字。请参阅文档。innodb\u缓冲区\u池

如何设置全局
innodb\u buffer\u pool\u size
mySQL变量?当我将其设置为
系统显示时
会出现以下错误:

ERROR 1238 (HY000): Variable 'innodb_buffer_pool_size' is a read only variable
看这里

在那里,它说这个变量可以在选项文件(my.cnf)中设置,也可以在启动服务器时在命令行上设置


还有。我认为您无法将“系统显示”的值分配给这个变量,因为它是一个数字。请参阅文档。

innodb\u缓冲区\u池\u大小

您应该在[mysqld]部分下将此变量值设置为:

innodb_buffer_pool_size=2G
并重新启动MySQL服务以使其生效


InnoDB缓冲池缓存数据页和索引页。您可以将此值设置为仅用于Innodb安装的可用内存的70-80%

在早期版本的MySQL(<5.7.5)中,这是设置

'innodb_缓冲区_池_大小'

变量是通过将其写入[mysqld]部分下的my.cnf(linux版)my.ini(windows版)来实现的:

[mysqld]

innodb_buffer_pool_size = 2147483648
您需要重新启动mysql服务器以使其生效

更新: 从MySQL 5.7.5开始,innodb_buffer_pool_size配置选项 可以使用set语句动态设置,允许您调整大小 在不重新启动服务器的情况下启动缓冲池。例如:

mysql> SET GLOBAL innodb_buffer_pool_size=402653184;
参考:

注 缓冲池大小必须始终等于或等于 innodb_buffer_pool_chunk_size*innodb_buffer_pool_实例。如果你 将innodb_buffer_pool_size配置为不等于或 innodb\u缓冲区\u池\u块大小的倍数* innodb_buffer_pool_实例,缓冲池大小自动 调整为等于或等于的倍数的值 innodb_buffer_pool_chunk_size*innodb_buffer_pool_实例 不小于指定的缓冲池


作者@FlyingAtom我也面临同样的问题:

错误1238(HY000):变量“innodb\u buffer\u pool\u size”是只读变量


然后我注意到我在顶部写错了
[mysqly]
,这就是我的.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的go-to命令

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在文件底部添加此项

innodb_buffer_pool_size        = 8G
保存并退出。重新启动MySQL

sudo systemctl restart mysql

“当我将其设置为系统显示时”是什么意思
inno_db_buffer_pool_size
应该是一个大小,例如
16M
我可以键入设置全局innodb_buffer_pool_size=1.5GB;说明:缓冲池大小必须始终等于或是innodb_Buffer_pool_chunk_size*innodb_Buffer_pool_实例的倍数。如果将innodb_buffer_pool_size配置为不等于或不等于innodb_buffer_pool_chunk_size*innodb_buffer_pool_实例的倍数的值,缓冲池大小自动调整为不小于指定缓冲池大小的innodb_buffer_pool_chunk_size*innodb_buffer_pool_实例的值或其倍数@FlyingAtomSo,如果1.5G是
=innodb\u buffer\u pool\u chunk\u size*innodb\u buffer\u pool\u instances
,则您可以设置该值,否则它将按上述方式自动调整@FlyingAtom如果您想将池大小增加X-这对我来说很有效设置全局innodb_buffer_pool_size=(选择@@innodb_buffer_pool_size)*10选择@@innodb_buffer_pool_size/1024/1024如果我有1000GB ram怎么办?仍为%70-80或接近%100?:)