2012-06-30 53 views
-2

我在5-10秒內在單個表上接收到100s的同時行更新請求,這會導致問題,它實際上並未更新該行,也未在mysql_query($query)響應中給出任何錯誤。在PHP-MySQL中處理同時更新請求的最佳方式?

請建議可能是什麼原因,我該如何解決這個問題?

表中有大約200k條記錄。這可能是問題之一。

+0

「沒有提供任何錯誤」 - 你如何捕捉你的代碼中的錯誤? – sandradev

+2

在10秒內100次更新,每秒10次更新對於正確配置的數據庫不是一個大問題。由於我們不知道你的數據庫是如何配置的或者你的代碼是做什麼的,所以我們不能真正回答你做錯了什麼。 – deceze

+0

@sandradev我只是檢查$ response = mysql_query($ query);如果$ response是錯誤的,那就是錯誤。 –

回答

1

檢查您的存儲引擎配置。聽起來你並不是真的在執行'太多'的插入操作,但是如果你在一個緊張的服務器上(比如一個廉價的共享主機),切換到更適合大量插入/更新的引擎可能會有所幫助:

1)減少對錶的索引數被更新,以提高更新/插入的速度:Comparing InnoDB to MyISAM Performance

這可能/可能,不適合您的特定情況下工作的其他潛在的解決方案。

2)將傳入的編輯緩存到較小的表(沒有索引),然後定期同步它們。

3)將插入合併到單個查詢中(雖然聽起來這樣做不適用於您)將它們全部插入到內存中的臨時表中,然後INSERT INTO ... SELECT FROM ...使單個針對目標表的交易。

+0

我們已經有innoDB引擎。 –

+0

良好的聯繫。儘管假設他正在使用最新的,最新的,它仍然是最新的。當我測試一些東西時,默認引擎是InnoDB。至少它是爲我。 – Andy

相關問題