- 为何会出现这种错误
这是由于innodb_buffer_pool_size过小导致的。在MySQL5.5之前,广泛使用的和默认的存储引擎是MyISAM,MyISAM使用操作系统缓存来缓存数据,InnoDB需要innodb buffer pool中处理缓存,当InnoDB表执行大批量数据的增删改查时,就需要有足够的innodb buffer pool 空间。
- 如何设置缓冲池大小
innodb_buffer_pool_size默认大小为8388608(即8M ∗ \ast ∗ 1024 ∗ \ast ∗ 1024),最大值取决于CPU的架构,在32-bit的平台上,最大值为2^32-1, 在64-bit的平台上最大值为2^64-1。当缓冲池大小大于1G时,设置innnodb_buffer_pool_instances的值大于1可以提高服务器的可扩展性。
缓冲池大小必须始终等于或是innodb_buffer_pool_chunk_size *innodb_buffer_pool_instances的倍数,若不符合条件,则缓冲池大小将自动调整。
- 配置示例
(1). 查询缓冲池大小
进入Mysql命令行,输入show variables like “innodb_buffer_pool%”;
显示如下:
这里缓冲池大小默认是8M(8 ∗ \ast ∗ 1024 ∗ \ast ∗ 1024 = 8388608),刚好等于innodb_buffer_pool_instances ∗ \ast ∗ innodb_buffer_pool_chunk_size的积。
(2). 修改缓冲池大小
下面将缓冲池大小设为1G(1
∗
\ast
∗ 1024
∗
\ast
∗ 1024
∗
\ast
∗ 1024 = 1073741824),而1G是innodb_buffer_pool_instances
∗
\ast
∗ innodb_buffer_pool_chunk_size的积的倍数,所以1G是有效的size值。
命令行输入set global innodb_buffer_pool_size=1073741824;
(3). 重启服务
切记,一定要重启mysql服务修改才能生效。
退出mysql命令行:exit
重启mysql服务:net restart mysql
问题解决!