如何获得临时mysql内存表的大小?

hfsqlsce  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(326)

将行插入临时表时 ENGINE=MEMORY 我遇到了一个错误:
“tmp”表已满
我知道我可以提高 max_heap_table_size 但问题是我不知道当前数据使用了多少内存。
我试过了 SHOW TABLE STATUS; 但它似乎不包括临时表。我也看过 information_schema.tables 但是,它也不会显示任何关于临时表的信息。
如何获取临时表的当前使用统计信息?

nwsw7zdq

nwsw7zdq1#

为了进行此调试,请将其设置为一个足够长的永久表,以便获得您的答案。甚至把它烤进去:

CREATE /* not TEMPORARY */ TABLE tmp...;
INSERT INTO tmp...;
use `tmp`
SHOW TABLE STATUS LIKE 'tmp';
DROP TABLE tmp;

如果这个tmp表需要同时存在于多个连接中,那么您可能会遇到更糟糕的问题——交换或内存不足。我是提出来的,而不是讨论你怎么能取这个名字 tmp 唯一的连接。
请注意,您需要减少 innodb_buffer_pool_size (可能还有其他缓存限制)为tmp表留下足够的ram。你是“抢彼得还保罗”;它可能会导致整体性能下降。
请进一步描述你在做什么。可能是这样的 MEMORY 不是最好的解决办法。

相关问题