MySQL数据库三个关键性能指标TPS\QPS\IOPS

总结:TPS是每秒的事务数,QPS是每秒的查询数,IOPS是每秒的磁盘I/O操作数。

TPS(每秒事务数):计算方法1 :Com_commit和Com_rollback之和除以Uptime。
方法二:使用information_schema查找COM_COMMIT和COM_ROLLBACK值,然后除以Uptime。

QPS(每秒查询数):计算方法1 :查询数除以正常运行时间。
方法 2 :使用 information_schema 查找 QUESTIONS 值,然后将其除以 Uptime。

IOPS(每秒磁盘输入/输出操作数):TotalIOPS、RandomRead/WriteIOPS、SequentialRead/WriteIOPS,受寻道时间、旋转延迟和数据传输时间影响,通过公式计算。

测试工具:Iometer、IoZone、FIO等,根据数据负载选择。

TPS衡量事务处理,QPS衡量查询速度,IOPS衡量存储性能。
将这三者结合起来评估数据库。

如何使用 MySQL 统计 JSON 数组中特定元素的使用频率?

等等,还有一件事,上次我在家乡帮忙修电脑时遇到了一件奇怪的事情。
这位五岁的主持人每次开机都会停顿半分钟。
我花了很长时间才弄清楚硬盘碎片严重。
这类似于MySQL中的JSON数据统计。
直查询非常慢,所以必须想办法优化它。
我记得我给硬盘添加了计划碎片整理,第二天电脑启动速度快多了。

想一想,在 MySQL 5 .7 中处理 JSON 数据就像使用拨号上网一样,每次都必须完整解析它。
之前写过一份统计用户行为日志JSON字段的报告,花了十分钟才导出。
后来我使用JSON_TABLE对结果进行扩展和分组,几分钟之内就可以得到结果。
感觉就好像老式马桶换成了虹吸式,冲水速度提升十倍。

最好玩的就是面对数据类型问题。
当我计算用户标签时,JSON 实际上与数字和带引号的字符串混合在一起。
JSON_SEARCH 是一个严重的问题,但 JSON_CONTAINS 安静得多。
这让我想起初中语文老师说过的话:标点符号比内容更重要。
就像修改作文一样,必须先整合草稿,然后再创作人物。

MySQL8 .0的JSON_TABLE就像一个法宝,但是用得太多之后,我很怀念5 .7 的简单日子。
看起来像。
就像现在习惯了AI绘画的年轻人突然发现手绘的笔触更有温度一样。
不过话说回来,如果JSON字段很大,比如存储的是用户相册的URL数组,是不是应该直接转成关系表呢?

如何评估和测试Mysql及oracle数据库性能

这款服务器的配置相当高,8 核CPU和1 6 G内存。
MySQL 和 Oracle 数据库都运行良好。
MySQL平均每秒可以插入4 8 4 1 条数据,Oracle平均每秒可以插入1 4 5 9 条数据。
距离有点大。
亲自查看性能图表以了解原因。

MySQL为什么建议单表数据量不要超过两千万

上周,我和技术团队讨论了一个有趣的话题。
2 02 3 年,MySQL建议单表数据量不要超过2 000万。
这主要是基于B+树索引结构下性能和存储效率的平衡。
B+树索引在InnoDB引擎中扮演着重要的角色。
数据存储在 1 6 KB 的数据页中,并通过树形结构进行组织。
非叶子节点存储索引指针,叶子节点存储实际数据。
该结构支持高效的范围查询。

指针的数量由数据页的剩余空间决定。
假设每个数据页有1 5 KB可用空间,主键为h3int类型。
单个指针大约占用1 2 个字节,那么每个非叶子节点最多可以指向1 2 8 0个子节点。
叶节点中存储的行数取决于单行记录的大小。
假设单行记录为1 KB,则每个叶子节点可以存储1 5 行。

根据这个公式:总数据量(M)=X^(N-1 )×Y,我们可以估算出不同树高下的数据量。
两层B+树(N=2 )可存储约2 万条数据,三层B+树(N=3 )可存储约2 5 00万条数据,四层B+树(N=4 )可存储约3 00亿条数据。
但四层树查询需要3 次磁盘IO,性能下降明显。

2 000万是避免性能下降的经验安全阈值。
但实际场景中,可能需要根据行记录大小、硬件配置、业务查询模式等因素进行调整。

我刚刚想到的另一件事是硬件限制。
即使B+树高度可控,过多的数据量仍然会导致频繁的磁盘访问,影响并发性能。
此外,维护成本也是一个考虑因素,大表上的DDL操作需要明显更多的时间。

所以,这取决于你,但一般来说,建议单表数据量不要超过2 000万是一个不错的选择。