2014-01-24 68 views
0

現在,我有一個腳本,並在蟒蛇以下:效率:我應該一次拉多少個MySQL行?

infinite loop: 
    select 1 row from MySQL 
    works with row data 
    updates 1 row if needed in MySQL (<10% of the time) 

會選擇和同時加快我的劇本和處理更多的行更新超過1行?如果是這樣,我應該拉下多少行?我有一個512 MB RAM的小VPS。一次1000行會太多?太少了?

新的腳本邏輯是:

infinite loop: 
    select 1000 rows from MySQL 
    loop 1000 times: 
     work with row data 
     appends mysql statement to string if update is required 
    runs the single update statement containing 10-50 commands 

新邏輯將有1個大的選擇請求和1個大的更新請求。這會比許多小的選擇和更新請求更好嗎?

我無法找到關於此的更多信息。非常感謝!

+1

我會建議測試並找出多少拉最適合您的系統。 –

+0

但是多行無疑比1乘1更有效率? – User

+0

您需要檢查多少行?這裏我們沒有太多的參考框架。 – Dan

回答

0

一般而言,您希望儘可能少地調用數據庫。至於多少記錄每個電話都取決於您的系統。

我的方法是隻是混淆數字,直到我滿意。

1

關於性能,不應該做出任何假設。你應該衡量一下事情才能做出決定。您應該定義性能目標然後測試您的系統。我會建議使用負載測試一些國王mysqlslaphammerdb工具。如果你有問題,那麼你可以使用某種profiler,比如neor

希望我幫了忙!

1

嘗試使用負載測試,因爲最終它取決於你想如何衡量的東西,但在我看來,一次獲取更多的行更有效,因爲如果您獲取表中最後一行並獲取行再次,這是倒數第二,然後你在表中循環兩次,而如果你一次獲取多行,那麼你只需循環一次並獲得所有行。

希望我幫助