MYSQL数据库应用优化
數據庫的優化主要包括兩個方面,一方面是 sql 程序語句的優化,另一方面是數據庫服務和配置的優化。查詢語句優化主要涉及兩個方面:一些普遍遵循的原則,以及怎樣對查詢語句進行性能分析。
為了更好的體會 sql 語句帶來的小類差異,建議手工創建幾個結構復雜的表,多導入一些數據(例如十萬條以上)進行測試,效果會比較直觀。
下面讓我們來看看基本語句優化的 10 個原則:
在數據庫的應用中,程序員們通過不斷的時間總結了很多經驗,這些經驗是一些普遍使用的規則。每一個程序員都應該了解并記住他們,在構造 sql 時,養成良好的習慣。
原則1:盡量避免在列上進行運算,這樣會導致索引失效。
原則2:使用 join 時,應該用小結果集驅動大結果集。同時把復雜的 join 查詢拆分成多個 query。
原則3:主意like模糊查詢的使用,避免%%。
原則4:僅列出需要查詢的字段,這對速度不會有明顯影響,主要考慮節省內存。
原則5:使用批量插入語句節省交互。
原則6:limit的基數比較大時用between。
原則7:不要使用rand函數獲取多條隨機記錄。
原則8:避免使用 null。
原則9:不要使用count(id),而應該是count(*)。
原則10:不要做無謂的排序操作,而應盡可能在索引中完成排序。
那么在實際的開發中,如何進行索引與性能分析呢!
直觀的方法就是看客戶端返回的執行時間。此外,還有更精確的做法,就是查看性能報告。
MYSQL執行計劃就是在一條select語句錢放上關鍵詞 explain,mysql解釋它將如何處理查詢,提供有關表如何聯合和以書面次序聯合的信息。借助于 explain 可以知道:
另外,mysql 中有多種存儲引擎,每種存儲引擎都有自己的特色,想要好的性能,第一步就是選擇合適的數據庫引擎。
通常的觀點是 myisam 注重性能,innodb 注重事務,故一般使用 myisam 類的表做非事務型的業務。這種觀點產生于早起innodb引擎還不成熟的時候,而事實上并不是這樣。mysql在高并發下的性能瓶頸很明顯,主要原因是鎖定機制導致的堵塞。而innodb在鎖定機制上采用了行級鎖,不同于myisam的表級鎖,行級鎖在鎖定上帶來的消耗大于表級鎖,但是在系統并發訪問量較高時,innodb整體性能遠高于myisam。同時,innodb的索引不僅緩存索引本身,也緩存數據,所以innodb需要更大的內存,應在這個年代,內存是很廉價的。
選擇存儲引擎的基本原則如下:
- 采用myisam引擎:
- 采用innodb引擎:
- 采用memory引擎:
?
總結
以上是生活随笔為你收集整理的MYSQL数据库应用优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 约2779元!荣耀Magic5 Lite
- 下一篇: linux cmake编译源码,linu