日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MYSQL数据库应用优化

發布時間:2023/12/15 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 可以知道:

  • 書面時候必須為表加入索引,以得到一個使用索引找到記錄的更快的 select 方法
  • 優化器是否以一個最佳次序連接表
  • 另外,mysql 中有多種存儲引擎,每種存儲引擎都有自己的特色,想要好的性能,第一步就是選擇合適的數據庫引擎。

    通常的觀點是 myisam 注重性能,innodb 注重事務,故一般使用 myisam 類的表做非事務型的業務。這種觀點產生于早起innodb引擎還不成熟的時候,而事實上并不是這樣。mysql在高并發下的性能瓶頸很明顯,主要原因是鎖定機制導致的堵塞。而innodb在鎖定機制上采用了行級鎖,不同于myisam的表級鎖,行級鎖在鎖定上帶來的消耗大于表級鎖,但是在系統并發訪問量較高時,innodb整體性能遠高于myisam。同時,innodb的索引不僅緩存索引本身,也緩存數據,所以innodb需要更大的內存,應在這個年代,內存是很廉價的。

    選擇存儲引擎的基本原則如下:

    • 采用myisam引擎:
  • R/W > 100 : 1 且 update 相對較少;
  • 并發不高,不需要事務;
  • 表數據量小;
  • 硬件資源有限。
    • 采用innodb引擎:
  • R/W比較小,頻繁更新大字段;
  • 表數據量超過1000萬,并發高;
  • 安全性和可用性要求高。
    • 采用memory引擎:
  • 有足夠的內存;
  • 對數據一致性要求不高,如在線人數和session等應用;
  • 需要定期歸檔的數據。
  • ?

    總結

    以上是生活随笔為你收集整理的MYSQL数据库应用优化的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。