【问题标题】:Creating an empty TEMPORARY table taking more than 10 seconds创建一个空的 TEMPORARY 表需要超过 10 秒
【发布时间】:2014-02-04 02:38:43
【问题描述】:

我正在尝试在我的一台安装了 mysql 5.5.27 的服务器上创建一个临时表。令我惊讶的是,它需要 12 秒。

CREATE TEMPORARY TABLE TEST (name VARCHAR(10)) ;
Query OK, 0 rows affected (12.02 sec)

有人能解释一下这里出了什么问题吗?

这是分析信息:

+----------------------+-----------+
| Status               | Duration  |
+----------------------+-----------+
| starting             |  0.000094 |
| checking permissions |  0.000007 |
| Opening tables       |  0.000009 |
| System lock          |  0.000031 |
| creating table       | 12.011561 |
| After create         |  0.000022 |
| query end            |  0.000004 |
| osing tables         |  0.000003 |
| freeing items        |  0.000022 |
| logging slow query   |  0.000007 |
| logging slow query   |  0.000059 |
| cleaning up          |  0.000003 |
+----------------------+-----------+

【问题讨论】:

  • 64 MB 是内存临时表的限制。内存方面,服务器上没有问题。服务器也空闲...
  • 这种情况是否始终如一,您的平均时间是多少?
  • @scrowler:是的,这一直在发生,平均时间是 12 秒。
  • 你用的是什么引擎?
  • 你的tmpdir 是什么类型的文件系统/它们在什么类型的文件系统上?

标签: mysql temp-tables query-performance


【解决方案1】:

您能检查一下服务器的平均负载吗? 如果您有权访问 shell,则可以使用 uptime 命令。

$正常运行时间

12:50:10 310 天,21:15,45 个用户,平均负载:0.50、0.25、0.10

也许问题不在你的 MySQL 上

这篇文章可以帮助您了解平均负载。 http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

您可以使用 shell 中的 top 命令和 MySQL 中的 SHOW FULL PROCESSLIST 来搜索您的 MySQL 服务器上正在运行的进程。 希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2017-03-13
    • 2021-04-24
    • 2012-02-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    相关资源
    最近更新 更多