将行插入临时表时 ENGINE=MEMORY 我遇到了一个错误:“tmp”表已满我知道我可以提高 max_heap_table_size 但问题是我不知道当前数据使用了多少内存。我试过了 SHOW TABLE STATUS; 但它似乎不包括临时表。我也看过 information_schema.tables 但是,它也不会显示任何关于临时表的信息。如何获取临时表的当前使用统计信息?
ENGINE=MEMORY
max_heap_table_size
SHOW TABLE STATUS;
information_schema.tables
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 不是最好的解决办法。
tmp
innodb_buffer_pool_size
MEMORY
1条答案
按热度按时间nwsw7zdq1#
为了进行此调试,请将其设置为一个足够长的永久表,以便获得您的答案。甚至把它烤进去:
如果这个tmp表需要同时存在于多个连接中,那么您可能会遇到更糟糕的问题——交换或内存不足。我是提出来的,而不是讨论你怎么能取这个名字
tmp
唯一的连接。请注意,您需要减少
innodb_buffer_pool_size
(可能还有其他缓存限制)为tmp表留下足够的ram。你是“抢彼得还保罗”;它可能会导致整体性能下降。请进一步描述你在做什么。可能是这样的
MEMORY
不是最好的解决办法。