Mysql查询报错:The total number of locks exceeds the lock table size
为何会出现这种错误
这是由于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;
MySQL> flush
privileges
;
MySQL> exit
(3). 重启服务
切记,一定要重启mysql服务修改才能生效。
posted on 2023-05-16 09:36 zyp_java_net 阅读(834) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-05-16 NPM 换源