【數據庫】那些數據庫的容量、吞吐和耗時

1. 數據量

1.1 Mysql

Mysql數據主要存儲在磁盤,會有內存存放最近的buffer,主要需要評估容量的是不能打滿磁盤,磁盤打滿爆庫,數據無法更新或寫入。

但是考慮的業務的性能,談數據庫本身的最大max其實沒有太大意義,比如一張表可以存放的行數非常多,但是達到一定的行數之後性能驟降,那設計的時候一定是選擇這個性能下降的臨界值(標準值),就行完美身材和標準身材,哈哈哈。

一般單庫接近2000w行就需要做水平拆分了,查詢效率會急劇下降。

表(per db) 列(per table)  
  max:20億個表

1024列

所有變長字段的長度和 不超過

每行的最大長度爲8092字節?

每行的最大varchar長度和爲65535

 
    所有變長字段定義長度和 不超過65535字節 標準值:單錶行數超過500萬行或者單表容量超過2GB  

1.1 Redis

存儲在內存,容量受機器內存限制,單機承受合理容量是20G

當實例需要的容量超過 20G 或要求的時,我們會使用集羣(Cluster)實例來承擔流量。集羣是通過中間件(客戶端或中間代理proxy等)將流量分散到多個 Redis 實例上的解決方案。

2 併發量(吞吐量)

能夠承受的QPS,一般通過壓測可以得出,但由於業務讀寫屬性的差距(讀多寫少,讀少寫多)會有比較大的差距,因爲讀是共享鎖,寫是互斥鎖,寫比較影響併發量。

2.1 Mysql

由於寫操作需要加鎖,所以寫操作的吞吐量要遠遠小於讀性能。下表是5.5版本的測試數據,

操作 binlog 索引 InnoDB(QPS) myisam(QPS)

不開

1K  1.5K
0.4K 0.6K
0.3K 0.6K
2.5K 2.4K

查詢的性能也與 數據在不在緩衝區有關,如果在緩衝區無需讀磁盤要快,如下圖:

吞吐量也與存儲引擎有關:

2.2 Redis

由於Redis不存在併發,單進程,此處以吞吐量,單機吞吐量: 20萬 請求每秒

3 耗時

1.3.1 MySQL

插入性能與索引個數相關,由於索引樹有變動

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章