国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

MySQL性能優化技巧分享

瀏覽:93日期:2023-10-12 09:43:33

MySQL性能優化

在互聯網公司MySQL的使用非常廣泛,大家經常會有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的偏移量越大性能越慢 編寫查詢語句時應該避免單行查找、盡可能的使用數據原生順序從而避免額外的排序操作,并盡可能使用索引覆蓋查詢

查詢性能優化

1.對于低效的查詢,通常從兩個方面來分析:

確認應用程序是否在檢索大量超過需要的數據。這通常意味著訪問了太多的行,但有時候可能是訪問了太多的列 確認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性能優化技巧分享的文章就介紹到這了,更多相關MySQL性能優化內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 国产综合久久 | 视频偷拍一级视频在线观看 | 超级碰碰碰视频视频在线视频 | 国产精品亚洲片在线观看不卡 | 精品在线视频观看 | 亚洲欧美一区二区三区 | 亚洲一区二区天海翼 | 91久久99| 久久久久日韩精品无 | 精品国产一区二区三区国产馆 | 中文字幕一二区 | 久久免费公开视频 | 91香蕉国产线在线观看免费 | 精品久久久久久久久免费影院 | 亚洲国产精品线在线观看 | 亚洲视频 中文字幕 | 黄色美女视频免费看 | 亚洲午夜久久久久国产 | 一级黄色毛片免费看 | 国产成人福利视频网站 | 99国产精品久久久久久久日本 | 爱爱客影院在线影院gf发现 | 久草在线视频精品 | 久久99久久99精品观看 | 精品久久久久久中文字幕一区 | 国产综合精品久久亚洲 | 亚洲欧美手机在线观看 | 欧美aav| 9久re在线观看视频精品 | 精品国产日韩亚洲一区二区 | 自拍 欧美 在线 综合 另类 | 久草视屏| 杨幂丝袜国产福利视频 | 国产精选经典三级小泽玛利亚 | 久久精品在线免费观看 | 韩国免费一级成人毛片 | 日韩一区二区三区不卡视频 | 在线综合+亚洲+欧美中文字幕 | 天堂mv亚洲mv在线播放9蜜 | 国产精品一区二区四区 | 亚洲欧美日产综合在线看 |