0

我正在尝试优化我的 MySQL 数据库。我有大约 90 张桌子,其中大部分几乎从未使用过。运行我的网站的大部分工作只有 10 人左右。

MySQL 状态统计显示在 2.5 天内大约有 200 万次查询,并报告“Opened_tables”为 1.7k(Open_tables 为 256)。我将 table_cache 设置为 256,从 32 增加。

我认为大多数打开的表要么是来自不同连接的同一表的多个实例,要么是一些临时表。

在同一时期,它报告“Created_tmp_tables”为 19.1 k,更烦人的是 Created_tmp_disk_tables 为 5.7k。我将 max_heap_table_size 和 tmp_table_size 都设置为 128M。

我已经尽我所能优化我的索引和连接,并且我试图避免表中的 BLOB 和 TEXT 字段以避免磁盘使用。

您有什么可以改进的建议吗?

4

1 回答 1

0

首先,不要根据这些内部统计数据断定您的 MySQL 数据库性能不佳。tmp 表没有任何问题。事实上,涉及排序或摘要的查询需要创建它们。

这就像在分析车辆在二档所花费的时间后试图修理您的车辆。几乎只有不到 1% 的查询正在生成 tmp 表。那很好。这个数字足够低,以至于这些查询可能用于备份或某种维护操作,而不是生产。

如果您遇到性能问题,您会知道这是因为某些查询运行速度太慢,并且您的 Web 应用程序上的某些页面速度很慢。你能找出哪些查询有问题吗?有一个慢查询日志可能会对您有所帮助。

http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

如果您有足够的 RAM,您可以尝试增加 tmp_table_size。为什么不把它增加到几兆字节,看看情况是否会好转?但是,它们可能不会有明显的变化。

于 2013-05-10T11:42:13.960 回答