《工具用得好,下班走得早!MYSQL性能優化秘籍來啦》 在互聯網行業,MySQL數據庫因其廉價、靈活、社區覆蓋面廣,且主要功能不輸收費昂貴的Oracle,成為互聯網公司的首選,使用範圍非常廣泛。正是如此,就產生了MySQL性能優化方面的需求。今天牛鷺學院給大家整理了一些MySQL優化方面的實用技巧,希望能幫到大家。 Schema與數據類型優化整數通常是標識列最好的選擇,因為它們很快並且可以使用 AUTO_INCREMENT完全“隨機”的字符串(如:MD5()、SHA1()或者UUID()等產生的字符串)會任意分布在很大的空間內,會導致INSERT以及一些SELECT語句變得很慢。如果希望查詢執行得快速且並發性好,單個查詢最好不要做太多的關聯查詢(互聯網公司非常忌諱關聯查詢),利用程序來完成關聯操作。如果需要對一張比較大的表做表結構變更(ALTER TABLE操作增加一列),建議先拷貝一張與原表結構一樣的表,再將數據複制進去,最後通過重命名將新表的表名稱修改為原表的表名稱。因為在變更表結構的時候很有可能會鎖住整個表,並且可能會有長時間的不可用。避免多表關聯的時候可以適當考慮一些反範式的建表方案,增加一些冗餘字段InnoDB索引優化如果不是按照索引的最左列開始查找,則無法使用索引。所有的非聚簇索引都需要先通過索引定位到對應的主鍵,然後再到聚簇索引查找數據,所以在定義主鍵索引的時候一定要謹慎。只有當索引的列順序和ORDER BY子句的順序完全一致,並且所有列的排序方向(倒序或者正序)都一樣時,MySQL才能夠使用索引來對結果做排序。有一種情況下ORDER BY子句可以不滿足索引的最左前綴的要求,就是前導列為常量的時候。在使用like來匹配字符串類型的字段的值時,盡可能的使用前綴匹配like ‘XX%’,避免使用 like ‘%XX’哈希索引是基於哈希表實現的,只有精確匹配索引所有列的查詢才有效,也不遵循索引的最左匹配原則。當服務器需要對多個索引做聯合操作時(通常有多個OR條件),建議修改成UNION的方式,這樣方便命中索引。對於如何選擇索引的列順序有一個經驗法則:將選擇性最高的列放到索引最前列。盡可能多的使用覆蓋索引(如果一個索引包含或者說覆蓋所有需要查詢的字段的值,我們就稱之為覆蓋索引),通過EXPLAIN的Extra列可以看到“Using index”信息當ID為主鍵時,創建索引(A),相當於創建了(A)和(A, ID)兩個索引表中的索引越多對SELECT、UPDATE和DELETE操作速度變慢,同時占用的內存也會比較多。InnoDB在二級索引上使用共享鎖,但是訪問主鍵索引需要排他鎖。盡可能的使用WHERE IN和WHERE BETWEEN AND的方式來進行範圍查詢。LIMIT的偏移量越大性能越慢。編寫查詢語句時應該避免單行查找、盡可能的使用數據原生順序從而避免額外的排序操作,並盡可能使用索引覆蓋查詢。查詢性能優化對於低效的查詢,通常從兩個方面來分析:確認應用程序是否在檢索大量超過需要的數據。這通常意味著訪問了太多的行,但有時候可能是訪問了太多的列確認MySQL服務器層是否在分析大量超過需要的數據行2.一般MySQL能夠使用以下三種方式應用WHERE條件,從好到壞依次為:在索引中使用WHERE條件過濾不匹配的記錄使用索引覆蓋掃描來返回記錄從數據表中返回數據,然後過濾不滿足條件的記錄3.MySQL從設計上讓連接和斷開連接都很輕量級,在返回一個小的查詢結果方面很高效。在一個通用服務器上,也能夠運行每秒超過10萬的查詢,一個千兆網卡也能輕松滿足每秒超過2000次的查詢,MySQL內部每秒能夠掃描內存中上百萬行數據。4.在刪除大量數據時,建議每次刪除一小批量數據後,暫停一會兒再做下一次的刪除。5.無論如何排序都是一個成本很高的操作,所以從性能角度考慮,應盡可能避免排序或者盡可能避免對大量數據進行排序。6.COUNT()函數有兩種不同的作用:它可以統計某個列值的數量,也可以統計行數。最簡單的就是通過COUNT(*)來統計行數。7.關聯查詢的時候要確保關聯的字段上有索引。8.在數據量很大並且歷史數據需要定期刪除的情況下,可以考慮使用分區表。9.如果定了的索引列和分區列不匹配,會導致查詢無法進行分區過濾。10.外鍵約束盡可能避免,通常通過程序來實現,心中要有外鍵。11.觸發器、存儲過程、自定義函數等最好不要使用。12.盡可能的利用查詢緩存,如果在寫查詢語句的時候有一些不確定的數據(NOW()或者CURRENT_DATE()等)時,則不會被緩存。13.用多個小表代替一個大表對查詢緩存有好處。14.批量寫入時只需要做一次緩存失效,所以相比單條寫入(每寫入一次,緩存就失效)效率更好,對於寫密集型的應用,直接禁用查詢緩存。15.如果緩存的空間太大,在過期操作的時候可能會導致服務器僵死。 《工具用得好,下班走得早!MYSQL性能優化秘籍來啦》完,請繼續朗讀精采文章。 喜歡 小編的世界 e4to.com,請記得按讚、收藏及分享!
音調
速度
音量
語言
工具用得好,下班走得早!MYSQL性能優化秘籍來啦
精確朗讀模式適合大多數瀏覽器,也相容於桌上型與行動裝置。
不過,使用Chorme瀏覽器仍存在一些問題,不建議使用Chorme瀏覽器進行精確朗讀。