Mysql
MyISAM 吞吐量峰值在 12000 條記錄插入
我正在使用批量記錄插入測試數據庫性能。
除了儲存引擎之外,兩個系統都是相同的
**Database 1000 4000 12000** MySQL_InnoDB 60.95330976 218.2572161 262.1174723 MySQL_MyISAM 88.55827134 307.503075 684.8142441
這裡的度量標準是吞吐量,定義為操作/秒。
正如您在插入 1000 條記錄時看到的那樣,兩者都非常相似,同樣是 4000 條。
我不確定為什麼 MyISAM 在插入 12000 條記錄時與 InnoDB 相比飆升如此之高。可能是由於緩衝區大小嗎?我將預設值設置為 8MB,並且我計算出 1000 條記錄和 4000 條記錄都在該緩衝區內,但 120000 條記錄超過了 8MB 緩衝區大小。這可能是吞吐量呈指數增長的原因嗎?
我更感興趣的是為什麼 MyISAM 在 InnoDB 似乎更加線性時,在 12000 次插入時會出現每秒操作數的指數峰值。
使用 innodb,您可能正在填寫您的事務日誌 (
innodb_log_size
)。插入時,InnoDB 首先將所有內容寫入事務日誌。一旦在日誌事務中應用到數據庫本身。因此,如果伺服器在事務中崩潰,它可以重放日誌(重新應用事務)以保持數據一致。這實際上意味著,每個數據都會被寫入磁碟兩次。
如果您的插入不適合日誌,則必須等到日誌中的事務刷新到數據庫。這可能是您看到性能大幅提升的原因。
(哦,請注意日誌大小。如果您將其設置得太大,伺服器崩潰後的恢復可能需要很長時間)