一、单机mysql瓶颈
1、支撑多少数据?多少张表?
容量:看硬件
InnoDB 最大容量64TB,存储引擎将InnoDB 表保存在一个表空间内(原始磁盘分区,由数个文件创建)。这样,表大小能超过单独文件最大容量。
MySQL 3.22(MyISAM)限制表大小4GB,最大表尺寸增加到65536TB(2567 – 1字节)。最大有效表尺寸通常是由操作系统对文件大小限制决定的,不是由MySQL内部限制决定。
最多20亿个表,一个表允许定义1024列,每行的最大长度为8092字节(不包括文本和图像类型的长度);
2、单表数据不超过500万行:是经验数值,还是黄金铁律?
阿里《Java 开发手册》提出单表行> 500w 容量>2GB,才分库分表
与 MySQL 配置及硬件有关,实际记录的条数无关。因为表索引装载到内存,InnoDB buffer size 足够,才能全加载进内存,查没问题。达量级限时,导致内存无法存储索引,产生磁盘 IO,性能下降。增加硬件配置解决。500w算折中
3、qps
QPS在8400左右:400个线程并发,插入100万条记录(4核2.33G、3G内存、SATA硬盘)https://www.iteye.com/blog/wwtang9527-1718292
写:90-100M/S(机械硬盘,7200转)预计kB_wrtn/s在90M左右
https://www.cnblogs.com/zhiqian-ali/p/6336521.html
4、mysql支撑多少连接数?
show variables like 'max_connections' mysql当前最大连接数
set global max_connections=1000; 设置当前最大连接数为1000;mysql重启时失效,需要长期生效在my.ini 添加 max_connections=1000
二、MGR和一致性读 性能测试
从业务使用场景出发,根据RDS套餐类型和线上实际访问流量,来衡量性能指标,以便方便对标实际业务场景。
环境测试方法
MySQL 5.7.21 Group Replication
MySQL 5.7.21 Group Replication with Consistent Read
同机房3节点、跨机房3节点
网络异常:长时间延时0.5ms,长时间延时2ms,丢包0.01%
场景1、2的差异可以衡量跨机房网络带来的性能损耗
场景3关注在网络质量变化时带来的性能变化
同机房3节点为 05 06 03 跨机房3节点为 05 06 01
机器部署:同IDC3台(永顺ys 03 05 06),跨IDC1台(广州gz 01)
正常的网络质量:
同IDC RTT(06->05):RTT min/avg/max/mdev = 0.051/0.059/0.070/0.010 ms
跨IDC RTT(01->05):RTT min/avg/max/mdev = 0.739/0.749/0.810/0.027
跨IDC的网络耗时是同IDC的1.3倍,在设置延迟0.5ms后的网络质量:
同IDC RTT(06->05):RTT min/avg/max/mdev = 0.507/0.564/0.617/0.037
跨IDC RTT(01->05):RTT min/avg/max/mdev = 1.199/1.248/1.315/0.046
跨IDC的网络耗时是同IDC的2.2倍,在设置延迟2ms后的网络质量:
同IDC RTT(06->05):RTT min/avg/max/mdev = 1.963/2.054/2.161/0.064 ms
跨IDC RTT(01->05):RTT min/avg/max/mdev = 2.642/2.732/2.835/0.076 ms
参考:http://blog.720ui.com/2019/mysql_why_one_table_500w/?spm=a2c4e.10696291.0.0.26e819a4zY3hrA&aliyun
https://my.oschina.net/u/867417/blog/758690
网友评论