2012-10-11 20 views
4

我們對單個MySQL表(存儲用戶活動信息)進行了簡單更新。比方說,我們將它們分組爲每秒批量更新。MySQL:平均每箱支持多少次更新?

我想知道當一個典型的4核8GB盒子上的mysql何時開始有一個問題跟上每秒更新的時間。例如。每秒可以做多少行更新?

這是一個想法練習,以決定在我們的應用程序發佈初期(即簡化開發)我是否應該使用MySQL,或者如果MySQL很可能在短時間內發生炸彈,甚至不值得冒險走這條路。

+0

您的交易界限在哪裏?您是否需要[耐久性](http://en.wikipedia.org/wiki/Durability_(database_systems))? –

回答

5

,你可以得到一個體面的,唯一的辦法就是通過基準測試您的特定使用案例的開銷。變量太多,而且沒有辦法。

它不應該花太長時間,如果你只是敲一個bash腳本或一個小演示程序,並用jmeter錘擊它,那麼這可以給你一個好主意。

我試圖用基準測試類似的用例時使用了jmeter。不同的是我在尋找編號爲INSERTS的寫入吞吐量。在我玩遊戲時出現的最有用的東西是'innodb_flush_log_at_trx_commit'參數。如果您使用的是INNODB不需要 ACID符合您的用例,然後將其更改爲0.這與吞吐量的差異爲INSERT,並且可能在您的UPDATE用例中執行相同的操作。雖然請注意,使用此設置,更改只會每秒刷新到磁盤一次,因此如果您的服務器出現斷電或某種情況,您可能會丟失一秒鐘的數據。

在我的四核8GB機爲我用例:

  • innodb_flush_log_at_trx_commit=1造成每秒
  • innodb_flush_log_at_trx_commit=0 80個INSERTS造成每秒

這些數字很可能將承擔2000 INSERTS沒有與您的用例相關 - 這就是爲什麼您需要自己進行基準測試的原因。

+1

唯一的問題是,這個設置是全局的,所以如果你有一個數據庫需要它,一個不需要,你必須安裝兩個MySQL實例... –

+0

不會將'innodb_flush_log_at_trx_commit'設置爲0結果在更快的表現? Ho在2級是最符合ACID標準的時候是否會在第2級獲得2000插入? –

+0

是的,你是對的。 0是每秒只刷新到磁盤的設置。更新。謝謝。 – theon

2

這個問題不容易給出一個普遍的答案。您要求的數字不僅依賴於數據庫服務器的硬件,MySQL本身,還依賴於服務器/客戶端配置,網絡以及數據庫/表格設計 - 同樣重要。

一般來說,如果我從localhost開始,在最新服務器上使用裸MySQL設置並使用唯一密鑰更新語句,但我不會在200 update-statementsp er second下面出現問題。至少這是我在六歲的winxp測試環境中獲得的。在新系統上進行裸設備的規模會更大。如果你認爲方式更大,一臺服務器是不可行的。 MySQL在某些方面可以是tweakedscaled out,因此很多公司都非常依賴它。

只是一些基本知識:

  • 如果你要更新的領域有巨大的索引文件,更新 語句是慢了很多,因爲每個語句寫不僅 數據,而且指數的信息。
  • 如果您的更新聲明不能使用 索引,則服務器可能需要更長的時間才能分配必須更新的必填字段 。
  • 慢速內存和/或慢速硬盤 也可能會降低整體服務器的性能。
  • 速度較慢的網絡 連接速度降低了客戶端和服務器之間的通信速度。

There are whole books written about it,所以我會在這裏停下來,並建議一些進一步的閱讀,如果你有興趣!

2

它很大程度上取決於您用於推送到數據庫的代碼的質量。

如果您編寫批處理每INSERT請求(即,

INSERT INTO table (field) VALUES (value_1); 
INSERT INTO table (field) VALUES (value_2); 
... 
INSERT INTO table (field) VALUES (value_n); 

,你的表現會和好如初。

如果您插入使用值的單一INSERT(即插入單個值

INSERT INTO table (field) values (value_1),(value_2)...(value_n); 

,你會發現,你可以很容易地插入每秒

多條記錄

作爲一個例子,我編寫了一個快速應用程序,它需要將一個LDAP帳戶請求的詳細信息添加到持有數據庫。一次插入一個字段(即,即,LDAP_field, LDAP_value),整個腳本的執行花費了10秒。當我將這些值串聯到一個INSERT請求中時,腳本的執行時間從開始到結束降低到大約2秒。這包括啓動和提交事務

希望這有助於