我的網站偶爾會有相當可預測的流量突發,使吞吐量比平時增加100倍。例如,我們將在電視節目中亮相,並且我預計在節目後的小時內,我將獲得比正常情況多100倍的流量。降低MySQL性能的持久性
我的理解是MySQL(InnoDB的)通常保持在一堆不同的地方我的數據:
- RAM緩衝
- commitlog
- 二進制日誌
- 實際表
- 所有上述位置在我的數據庫從屬上
考慮到我在EC2節點上並且大部分內容通過同一個網絡管道(文件系統是網絡連接的),這太「耐用」了。加上驅動器速度很慢。這些數據價值不高,我寧願少數幾分鐘的數據丟失,而不是在人羣到達時發生中斷的可能性很高。
在這些流量突發期間,如果我能負擔得起,我希望所有I/O 只有。我希望儘可能在RAM中保留儘可能多的內存(與一小時內可能觸及的數據大小相比,我擁有相當數量的內存)。如果緩衝區變得稀缺,或者I/O通道不會過載,那麼當然,我希望事情能夠發送到提交日誌或二進制日誌以發送給從服務器。如果並且只有在I/O通道沒有超載的情況下,我纔會回寫實際的表格。
換句話說,我希望MySQL/InnoDB使用「回寫」緩存算法,而不是「寫入」緩存算法。我能說服它這麼做嗎?
如果這是不可能的,我對一般的MySQL寫入性能優化技巧感興趣。大多數文檔都是關於優化讀取性能的,但是當我收到大量用戶時,我正在爲它們創建帳戶,因此這是一個繁重的工作量。
謝謝。我會搗鼓這些的。 – 2010-06-13 19:40:29