【数据库】那些数据库的容量、吞吐和耗时

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

插入性能与索引个数相关,由于索引树有变动

 

 

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