cache + db 性能
最近自己實現了一個cache, 支持lru淘汰、數據統一時間的expire機制,比如在加入cache 5分鐘后flush到db中。
value大小為15KB左右, innodb引擎。
測試了一下性能, 設置約 90%的cache命中(淘汰)率, 每秒約
250次左右寫, 2500次左右讀。
突然發現http://my.oschina.net/costaxu/blog/108568敘述的mysql性能數據; 自己實現的cache和mysql本身的性能基本沒啥區別。
那么這個cache有什么用呢?
問題在于測試過程中限定了90%的命中, 那么讀次數 : 寫次數 就約為10 : 1。? 而這個讀寫性能恰好與mysql相當。
如果命中率為95%,那么cache能支持每秒250次寫, 5000次讀。
如果命中率為99%,那么cache能支持每秒250次寫, 25000次讀。
。。。。。。。。。。。。。。。。。。。。。。。。讀的極限值約為100w次。單機內存hash_map的存取次數
1) 如何提高mysql寫性能??? 數據分片到不同的mysql實例。 比如數據分布到2個實例上, 那么相當于cache的寫能力就提高1倍至 500次/秒。
2) mysql寫性能固定的情況下, 如何提高cache的寫性能、保證cache的可用性? 可以觀察用戶高峰規律, 比如2小時后自動expire, 可以避免短時間峰值的同時會一起expire引起性能惡化:即時間稍微設長; 但是設長之后,增大了數據丟失的概率。
對比此時的mysql存儲的表格式為<key, blob>, myisam性能更好。 innodb提供的事務是多余的。
innodb支持行鎖,為什么寫性能還不如myisam呢?
總結
以上是生活随笔為你收集整理的cache + db 性能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis代码 数据超时实现
- 下一篇: u3d 1