InnoDB 最大容量64TB ,存储引擎将 InnoDB 表 保存在一个 表空间内( 原始磁盘分区,由数个文件创建)。这样, 表大小 能超过 单独文件最大容量 。
MySQL 3.22( MyISAM )限制表大小 4GB ,最大表尺寸增加到65536TB(2567 – 1字节)。最大有效表尺寸通常是由 *** 作系统 对 文件大小限制 决定的, 不是 由MySQL内部限制决定。
最多 20亿个表 ,一个表允许定义1024列,每行的最大长度为8092字节(不包括文本和图像类型的长度);
阿里《Java 开发手册》提出 单表行>500w 容量>2GB ,才分库分表
与 MySQL 配置及硬件 有关,实际记录的条数无关。因为表 索引 装载 到内存,InnoDB buffer size 足够 ,才能全加载进内存,查没问题。达量级限时,导致 内存无法存储索引 ,产生磁盘 IO,性能下降。增加硬件配置解决。500w算折中
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
show variables like 'max_connections' mysql当前最大连接数
set global max_connections=1000 设置当前最大连接数为1000;mysql重启时失效,需要长期生效在my.ini 添加 max_connections=1000
从业务使用场景出发,根据RDS套餐类型和线上实际访问流量,来衡量性能指标,以便方便对标实际业务场景。
MySQL 5.7.21 Group Replication
MySQL 5.7.21 Group Replication with Consistent Read
网络异常:长时间延时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
通过sysbench的oltp_read_write测试来模拟业务压力、以此来给指定的硬件环境配置一份比较合理的MySQL配置文件。
环境介绍
硬件配置
请点击输入图片描述
软件环境
请点击输入图片描述
优化层级与指导思想
优化层级
MySQL数据库优化可以在多个不同的层级进行,常见的有:
SQL优化
参数优化
架构优化
本文重点关注:参数优化
指导思想
日志先行 -- 一个事务能否成功提交的关键是日志是否成功落盘,与数据没有太大的关系;也就是说对写的优化可以表述为各方面的资源向写 *** 作倾斜。
瓶颈分析 -- 通过show global status 的各个计数器的值基本上就能分析出当前瓶颈所在,再结合一些简单的系统层面的监控工具如top iostat 就能明确瓶颈。
整体性能是“读”&“写”之间的再平衡。
1. MySQL处在高负载环境下,磁盘IO读写过多,肯定会占用很多资源,必然会CPU占用过高,所以可以用top命令查看MySQL所在服务器的cpu使用情况,从而分析是否有瓶颈;2. show processlist查看MySQL当前的执行状态,查看是否有大量的Sleep或Locked状态;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)