天天看點

mysql請求逾時問題

問題

  • 由于有一批資料要進行處理,資料量過大,我們在背景開啟了多個線程進行跑,但是每次跑的時候,資料都沒有達到一緻性,而且背景報錯。

解決問題

  • 原因
    • 因為事務的等待時間過長,導緻的報錯
  • 解決
    • show variables like '%timeout%'

      ;
    • mysql請求逾時問題
    • 檢視 innndb_lock_wait_timeout 變量修改的大一點?
    • set innndb_lock_wait_timeout =100;

解決問題?

  • 我們在進行跑的時候,确實報逾時請求的數量少了,保證了大量的資料的正确性,等了半個小時(資料量多,而且要做邏輯處理)。到資料裡面去看的時候,我去,發現資料還是不一緻,不對啊,如果出現報錯的話,應該是要進行事務復原的啊,不應該出現這個問題的啊!
  • 最後請教了一個賈大神(是真大神隻是姓有點怪..),是這個問題:

    innodb_rollback_on_timeout=OFF

    ,OFF的意思是在一個事務裡面,如果一條sql等待逾時的話,會復原這一條sql,但是整個事務不會復原,繼續執行。ON的意思是如果有逾時等待話,整個事務會進行復原! mysql 預設為OFF,坑了。
  • 解決:将innodb_rollback_on_timeout這個置為on,在mysql.conf檔案中進行改變。重新開機mysql,OK!

繼續閱讀