一、簡介
通過合理安排資源,調整系統參數使MySQL運行更快、更節省資源。
二、優化查詢
1.使用索引查詢
MySQL中提高性能的一個最有效方式就是對數據表設計合理的索引。但並不是使用帶索引的字段查詢時,索引都會起作用。
(1) 使用like的查詢語句中,如果匹配字符串的第一個字符爲“%”,索引不會起作用
(2) 對於多列索引,只有查詢條件中使用了第一個字段時,索引纔會被使用
(3) 關鍵字or前後兩個條件都是索引時,索引纔有效
2.優化子查詢
分析:MySQL需要爲內層查詢語句的查詢結果建立一個臨時表,然後外層查詢語句從臨時表中查詢記錄。因此子查詢的速度會受到一定影響。如果數據量較大,這種影響就會隨之增大。
解決方法:用join來代替子查詢,連接查詢不需要建立臨時表,如果使用了索引,性能會更好。
三、優化數據庫結構
1.對於字段較多的表,如果有些字段的使用頻率很低,可以將這些字段分離出來形成新表。
2.通過建立中間表,把經常需要聯合查詢的數據插入到中間表中,然後將原來的聯合查詢改爲對中間表的查詢。
3.設計數據庫表時應儘量遵守範式理論的規約,儘可能減少冗餘字段。但是合理的加入冗餘字段可以提高查詢速度
四、優化MySQL服務器
1.優化服務器硬件。配置較大的內存和高速磁盤。
2.優化MySQL參數。修改my.cnf或my.ini文件的配置參數。
key_buffer_size:表示索引緩衝區的大小。索引緩衝區所有線程共享。增加緩衝區可以得到更好處理的索引。但是如果這個值過 大,會導致操作系統頻繁換頁,反倒降低性能。
sort_buffer_size:表示排序緩存區的大小。這個值越大,進行排序的速度越快。
max_connections:表示數據庫的最大連接數。連接會浪費內存資源,過多連接可能會造成MySQL服務器僵死。
thread_cache_size:表示可以複用的線程的數量。如果有很多新的線程,爲了提高性能可以增大該參數值。
除上述外,還有許多配置參數,合理配置這些參數可以提高服務器的性能。