數據庫優化之實例和故事

數據庫優化之實例和故事

簡要:每一項技術都離不開數據庫,數據庫猶如人的大腦;密不可分,一旦出了問題(故障),停頓,卡主後果可想而知;潛心學習數據庫優化3個月,現在將學到的經驗分享給大家,希望能夠跟各位PHP大神分享和學習探索,如果有不對或者好的建議告知下;~

一、合理時間備份數據

備份數據,是每個項目維護的日常工作;有利於數據在系統遭受破壞或其他特定情況下,重新加以利用的一個過程;項目的備份時間,大都是根據項目需求來決定,比如:每小時,指定時間等; 

 案例: 某個項目正進行大型活動,數據庫由於巨大用戶量的訪問以及定時備份;造成帶寬出現峯值,大量執行操作處於隊列狀態,致使數據庫停止工作;

 方法:

  1. 若拓撲結構單一結構(單臺數據庫),停止定時任務(備份);
  2. 若拓撲結構非單一結構(主從/分佈式),可停止定時任務;或主(數據庫)放棄執行定時任務,從(數據庫)執行;

二、避免對大表操作

何謂大表,是指記錄行數巨大,單標超過千萬行;表數據文件巨大,表數據文件超過10G;

(1) 慢查詢
很難在一定時間內過濾出所需要的數據,原因:來源少->區分度低->大量磁盤IO->降低磁盤效率->大量慢查詢

(2)大表對DDL操作

 - 建立索引需要很長的時間,過程可能會造成:主從延遲、鎖表甚至於造成死鎖

 - 修改表結構需要長時間鎖表,過程可能會造成:主從延遲,鎖表,阻塞

方法:
 1. 分庫分表
 2. 數據歸檔:減少前後端業務影響

大事務

大事務,運行時間比較長,操作的數據比較多的事務

(1)風險

  • 鎖定太多數據,造成大量的阻塞
  • 回滾時間比較長
  • 執行時間長,容易造成主從延遲

(2)方法

  • 避免一次處理太多的數據(增刪改查)
  • 移除不必要在事務中的select操作

作者:不動峯
出處:http://www.jianshu.com/users/c0abc9c5f51e/latest_articles
博客園:http://www.cnblogs.com/mylly/
備註:現承接企業大型網站/接口/微信公衆號/企業號/小程序,有意向的朋友請聯繫(QQ:857280707)
版權所有,歡迎保留原文鏈接進行轉載:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章