程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 同步mysql slave鎖表問題

同步mysql slave鎖表問題

編輯:MySQL綜合教程

問題描述:
如圖:
slave 上的日志更新的updata 與 web 請求過來的select 表互相鎖表,導致同步堵塞
mysql slave 負載飙升,網站防問巨慢。
 
 

 
問題分析:
那麼,為何從庫在處理日志時會發生lock的狀態呢?
一般我們都將主從庫讀寫分離,主庫負責寫操作,從庫負責讀操作。而一般的web應用讀數據的操作要遠遠大於寫數據的量,所以我們在主庫上幾乎看不到因為更新數據導致的lock。那麼從庫的lock怎麼發生的呢?
網上查了一下是這麼說的:
對MyISAM表的讀操作(加讀鎖),不會阻塞其他進程對同一表的讀請求,但會阻塞對同一表的寫請求。只有當讀鎖釋放後,才會執行其它進程的寫操作。
對MyISAM表的寫操作(加寫鎖),會阻塞其他進程對同一表的讀和寫操作,只有當寫鎖釋放後,才會執行其它進程的讀寫操作。
 從上面可以看出,我們在select的時候默認是會阻塞寫請求的,當一個表數據量到達了千萬級別,那麼執行一個select很有可能就會變得比較費勁,再加上一定的壓力,不斷地select操作,雖然讀數據不會受到影響,但是卻阻塞了從庫處理同步日志的操作。到目前為止還沒找到真正的解決方法
問題處理:
1.優化查詢時間長的sql
2.壓力較大的情況下使用幾個從庫值得考量,如果使用多個從庫也是可以適當緩解上面lock的情況發生。(目前已經加了2個salve 來分散salve的壓力)
3.到目前為止還沒找到真正的解決方法.進一步優化中。
如果誰有好的解決方法,請告訴我一下。
 
本文出自 “一陣風” 博客

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved