2011-06-01 46 views
5

对于我正在构建的用于报告目的的临时表而言,MySQL有一个有趣的问题。缓慢的临时表

我发现,如果我没有指定存储引擎,DROP TEMPORARY TABLE命令会挂起长达半秒。

如果我定义我的表作为ENGINE = MEMORY这短短的悬挂就会消失。

因为我有一个解决这个问题(使用MEMORY表),我的问题是,为什么会一个临时表需要很长的时间下降?他们是否默认不使用MEMORY引擎?它甚至不是一张很大的桌子,有几百行记录我现在的测试数据。

回答

4

临时表,默认情况下,将创建在以往任何时候mysql的配置它告诉到,典型的/ tmp或其他地方的磁盘上。您可以将此位置(甚至多个位置)设置为RAM磁盘位置,例如/ dev/shm。

希望这会有所帮助!

+1

看起来很奇怪,只是删除一个文件(这是一个DROP TABLE真的会这样做)会导致半秒的无响应。 – GordonM 2011-06-01 14:02:39