如何確定數據庫是瓶頸?
1如果程序設計良好,有一個數據庫操作邏輯層,可以從這個層的統計數據看到每個請求花費的時間,如果平均時間已經不能讓你容忍的話,數據庫已經是瓶頸了。
2在數據庫的服務器上使用top命令,看看mysql服務器占用資源的情況,看看機子的平均負載。
如果服務器的平均負載已經很高,mysql占用了塊100%的cpu資源,說明mysql服務器很忙了。
3在數據庫服務器上使用iostat命令,看看磁盤IO,如果block住的操作比較多的話,說明數據庫操作還是過于頻繁了,磁盤都響應不急了。
4建議打開mysql的慢查詢日志,這樣grepselect看一下日志中的慢查詢的數量,如果數量較多,說明慢查詢的數量很多,需要進行調整了。
5如果有一天數據庫無法插入了,需要檢查一下數據庫表是不是過大了。32位的操作系統上一個表大的容量是2^32這么大。不過還是建議增加一個數據庫操作的邏輯層,在數據庫操作的前后記錄下操作的時間,進行統計上報,利用監控程序來報警相關負責人,這樣可以及早的知道數據庫是瓶頸,提前做出優化。
知道數據庫是瓶頸了,如何來進行優化呢?
1我們第一個想到是看看數據庫的容量是不是太大了,如果數據庫表太大的話,索引文件也會比較大,每次的更新操作就會更加的費時。需要考慮進行分庫和分表了。
分庫分表按照一定的規則來對數據庫中的記錄進行分區來存儲,一方面可以做到一定的負載均衡,將請求平分下來,每個區段去獨自承受;另一方面,分庫分表可以使我們存儲和操作更多的數據。
不過分庫分表需要多之前基于單庫的程序進行修改,存在一定的風險,因此,在程序設計之初就應該考慮到分庫分表的需要,最好是將數據庫操作層獨立出來,便于擴展和更改。
2如果數據庫表不是很大,但是查詢慢的話,我們需要檢查一下我們的sql查詢語句,利用mysql的explain語句看看是不是使用了索引,如果沒有使用索引,那我們需要在相應的字段上建上索引,反復的使用explain,尋找到個一個合適的索引。
新聞標題:網站優化之數據庫優化
地址分享:http://m.newbst.com/news14/172914.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、域名注冊、企業建站、網站收錄、網站策劃、云服務器
廣告
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源:
創新互聯