簡要:每一項技術都離不開資料庫,資料庫猶如人的大腦;密不可分,一旦出了問題(故障),停頓,卡主後果可想而知;我(fudomine)潛心學習資料庫優化3個月,現在將學到的經驗分享給大家,希望能夠跟各位PHP大神分享和學習探索,如果有不對或者好的建議告知下;*~*! 一、合理時間備份數據 備份數據,是每 ...
簡要:每一項技術都離不開資料庫,資料庫猶如人的大腦;密不可分,一旦出了問題(故障),停頓,卡主後果可想而知;我(fudomine)潛心學習資料庫優化3個月,現在將學到的經驗分享給大家,希望能夠跟各位PHP大神分享和學習探索,如果有不對或者好的建議告知下;*~*!
一、合理時間備份數據
備份數據,是每個項目維護的日常工作;有利於數據在系統遭受破壞或其他特定情況下,重新加以利用的一個過程;項目的備份時間,大都是根據項目需求來決定,比如:每小時,指定時間等;
案例: 某個項目正進行大型活動,資料庫由於巨大用戶量的訪問以及定時備份;造成帶寬出現峰值,大量執行操作處於隊列狀態,致使資料庫停止工作;
方法:
1. 若拓撲結構單一結構(單台資料庫),停止定時任務(備份);
2. 若拓撲結構非單一結構(主從/分散式),可停止定時任務;或主(資料庫)放棄執行定時任務,從(資料庫)執行;
二、避免對大表操作
何謂大表,是指記錄行數巨大,單標超過千萬行;表數據文件巨大,表數據文件超過10G;
(1) 慢查詢
很難在一定時間內過濾出所需要的數據,原因:來源少->區分度低->大量磁碟IO->降低磁碟效率->大量慢查詢
(2)大表對DDL操作
- 建立索引需要很長的時間,過程可能會造成:主從延遲、鎖表甚至於造成死鎖
- 修改表結構需要長時間鎖表,過程可能會造成:主從延遲,鎖表,阻塞
方法:
1. 分庫分表
2. 數據歸檔:減少前後端業務影響
三、大事務
大事務,運行時間比較長,操作的數據比較多的事務
(1)風險
* 鎖定太多數據,造成大量的阻塞
* 回滾時間比較長
* 執行時間長,容易造成主從延遲
(2)方法
* 避免一次處理太多的數據(增刪改查)
* 移除不必要在事務中的select操作
作者:不動峰
出處:http://www.cnblogs.com/mylly/
版權所有,歡迎保留原文鏈接進行轉載:)