【发布时间】:2018-05-17 08:05:23
【问题描述】:
我在运行查询时收到错误消息“ERROR 1206 (HY000): The total number of locks beyond the lock table size”。经过几次搜索,我了解到增加 innodb_buffer_pool_size 应该可以解决此问题。但是我在这样做时遇到了一些麻烦。
我正在使用 MySQL Workbench 6.3 CE 并找到一个名为“...\MySQL\MySQL Server 5.6\my-default.ini”的文件。我找不到任何名为 my.ini 或 my.cnf 的文件。根据本网站上其他问题的答案的建议,我编辑了这个文件,以便阅读的部分
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
现在读取
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
innodb_buffer_pool_size = 1024M
但这似乎对原始错误和我运行时没有影响
SELECT variable_value FROM information_schema.global_variables
WHERE variable_name = 'innodb_buffer_pool_size';
返回的大小没有区别:263,192,576。
我已尝试创建 my-default.ini 的副本并将其保存为 my.ini,但这也无济于事。
任何帮助将不胜感激!
【问题讨论】:
-
我认为你应该看看替代方法。如果发生这种情况,我认为您的查询可能结构不正确或过于复杂。你能告诉我们你的问题查询吗?
-
这是一个相当简单的查询,但按照我的标准,我正在处理一个相当大的数据集(80m 行,200 个变量)。我正在寻找将数据集的一个子集(或几年)选择到一个新表中。这是查询 - Create X as Select * from Y where Z in ('2012','2013', '2014', '2015');
-
如果 Mysql 支持
no lock提示可能会有所帮助。
标签: mysql configuration-files buffer-overflow