2013-05-10 53 views
0

我想優化我的MySQL數據庫。 我有大約90張桌子,其中大部分幾乎都沒有用過。 運行我網站的大部分工作只有10個左右。MySQL優化表緩存和tmp磁盤表

MySQL狀態統計信息在2.5天內顯示大約2M查詢,並報告1.7k的Opened_tables(Open_tables 256)。我將table_cache設置爲256,從32增加。

我推測大多數打開的表是多個來自不同連接或臨時表的相同表的多個實例。

在同一時期,它報告了19.1 k的「Created_tmp_tables」,更令人討厭的是5.7k的Created_tmp_disk_tables。我將max_heap_table_size和tmp_table_size都設置爲128M。

我試圖優化我的索引&盡我所能,我嘗試避免表中的BLOB和TEXT字段,以避免磁盤使用。

有什麼建議可以改善事情嗎?

+0

你是否依賴子查詢? – 2013-05-10 11:28:36

+0

不,我試圖避免這些 – 2013-05-10 11:33:49

回答

0

首先,根據這些內部統計數據,不要總結您的MySQL數據庫表現不佳。 tmp表沒有問題。事實上,涉及訂購或摘要的查詢需要創建。

這就像試圖在分析二檔齒輪花費的時間後修理車輛。基本上不到1%的查詢生成tmp表。那很好。該數量足夠低,這些查詢可能用於備份或某種維護操作,而不是生產。

如果您遇到性能問題,您會知道,因爲某些查詢工作速度太慢,並且您的Web應用程序中的某些頁面速度很慢。你能弄清楚哪些查詢有問題嗎?有一個緩慢的查詢日誌可能會幫助你。

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

,如果你有足夠的RAM不妨增加tmp_table_size的。爲什麼不把它提高到幾兆字節,看看事情是否會好轉?但是,他們可能不會明顯改變。

+0

非常感謝 – 2013-05-14 16:15:37