在分布式數據庫中間件 MyCat 的實際應用中,主鍵生成策略對寫入性能有著直接影響。本文通過構建標準測試環境,對比自增步長(Step)分別為 10、100、10000 三種場景下的寫入性能差異,並深入解析背後原理。
測試採用經典三機架構:一台運行測試工具、一台部署 MyCat Server、一台運行 MySQL 後端數據庫。測試表 person 採用 Hash 分片,主鍵 Id 為 MyCat 全局序列號自增,表結構如下:
increment(即 Step)設置為 10、100、10000。person 表並發寫入大量數據,記錄吞吐量(TPS)、平均延遲、CPU/內存佔用等指標。Step=10:MyCat 頻繁向後端數據庫獲取序列號,網絡交互開銷大,TPS 較低,但序列號連續性好,浪費極少。
Step=100:折中方案,減少了獲取次數,性能顯著提升,序列號間隙較小,適合大多數業務場景。
Step=10000:單次獲取量大,網絡交互最少,寫入吞吐量最高,但會導致主鍵間隙巨大(如重啟後跳躍),長期運行可能耗盡 64 位整數空間,且不利於審計追蹤。
根據業務對主鍵連續性的敏感度與寫入並發量權衡選擇:
實測數據表明,Step 從 10 調整至 100 可使 TPS 提升 40%-60%,再增至 10000 則邊際收益遞減,且引入運維風險。生產環境建議從 Step=100 起步,壓測後再微調。