2017-02-21 50 views
0

我只是在MySQL master/salve環境中遇到一些關於SELECT查詢和表鎖定(?)的奇怪問題。MySQL的主/從,異步查詢和意外的表鎖定?

我確實有1個主人和2個奴隸。我所有的表都是innoDB(其中一些是MyISAM)。我使用php和mysqli並行地從兩個從站進行異步查詢。

問題是,在我的並行查詢處理過程中,所有其他MySQL相關任務都處於暫掛狀態,即使我嘗試從根本沒有任務的主服務器中進行選擇,直到出於某些原因完成所有查詢。

我懷疑是因爲表鎖定?我確實嘗試過「隔離級別未讀」,並將所有表更改爲innoDB,但仍然沒有運氣。我不知道在哪裏診斷

更新#1:剛剛發現更多的線索。在密集選擇從站期間,從PHP到主站的新連接將被保持/凍結,直到從站上的選擇查詢完成。

UPDATE#2:找到更多線索。只需將所有剩餘的mysql連接更改爲mysqli即可。它的工作原理!...但在某些不使用session_start()的頁面上。爲什麼session_start()? session_start()怎麼能保持我的連接到我的數據庫?

更新#3:找到了解決方案。我將發佈以下

回答

0

找到了解決辦法

有2個問題結合起來。

  1. 我仍然有正常的mysql連接/查詢與mysqli共存。只需將其全部更改爲mysqli即可。我不知道爲什麼它不能一起工作。但把它全部改爲mysqli可以在某個時候解決我的問題。

  2. 我剛纔瞭解到PHP的會話也可以被鎖定。如果您的網頁需要大量時間進行計算/處理。不要忘記將session_write_close()阻止在PHP中進行會話鎖定。