在 Facebook 上看到 Percona 的人修正了 InnoDB 的 MVCC 在繁忙時會有 的效能問題:
在 MySQL 官方的 bug tracking system 是「InnoDB's MVCC has O(N^2) behaviors」這個,可以看到給的重製範例是在 transaction 內大量塞 INSERT
進去後,另外一個 transaction 使用 secondary index 就會受到影響。
裡面也有提到「Secondary index updates make consistent reads do O(N^2) undo page lookups」,雖然修正了,但看起來跟當時實做的規劃有關?所以導致許多地方都是 ...
這個 bug 感覺是批次作業的行為?因為批次作業可能會用 transaction 包起來,一次寫入萬筆資料後再 COMMIT
進去。而這個行為很有機會觸發這個 bug,導致影響到線上的服務...