2013-11-27 41 views
0

我使用MySQL 5.5與innoDB。我的服務器的基礎是Netty,JDBC和BoneCP。提高只寫表上的性能?

我有一個包含用戶輸入(HTTP標頭,請求正文等)的日誌表。由於安全性和數據恢復等原因,此表只會非常少見。因此,閱讀表現並不是我們關心的。

此表中有五列。

Name  | Type 
-------------------------------------------------- 
logID  | big Integer(auto-increment)(primary key) 
userNumber | medium integer 
logTime | timestamp 
header  | varchar(100) 
body  | varchar(200) 

有哪些提示可以改善插入性能? 此外,這種情況下的logID需要嗎?

+0

避免除自動遞增之外的索引。 –

回答

3

如果表格從未被引用,爲什麼你在那裏使用任何鍵?這不是必要的。它只會增加插入時間,並沒有任何用途。

我的建議是放棄logID,而不是在表上創建任何索引。

另一個優化是將表類型更改爲myISAM。當你只插入表並且沒有任何約束時,InnoDB將花費你時間來選擇ACID合規性,而myISAM不關心這一點。

+0

我同意遵守ACID。然而(糾正我,如果我錯了),MyISAM不支持行級鎖定。併發很重要,因爲在使用Netty(我使用)時阻塞I/O是一個不好的做法。 –

+0

對不起,我對Netty不熟悉。我只能告訴你,根據我的經驗,你可以每秒鐘做幾十次插入我所描述的這樣一個表格中,因爲沒有鎖定問題,所以沒有任何鎖定問題。 – 0xCAFEBABE