千家信息网

MySQL中的字符函数的压力测试

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,本篇内容主要讲解"MySQL中的字符函数的压力测试",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"MySQL中的字符函数的压力测试"吧!MySQL中的字符串
千家信息网最后更新 2025年01月22日MySQL中的字符函数的压力测试

本篇内容主要讲解"MySQL中的字符函数的压力测试",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"MySQL中的字符函数的压力测试"吧!

MySQL中的字符串处理函数非常多,以至于我在整理的这部分内容的时候也眼前一亮,有一种进了大观园的感觉,哦,原来有这个函数,哦,竟然可以这样实现,以前怎么没想到,等等。

比如字符串查找函数,instr,locate,position三个函数的功能都是很相似的。如果要实现一个功能,从字符串foobarbar里面找到bar这个字符串的起始位置,使用Instr,locate,position都可以实现。

SELECT INSTR('foobarbar', 'bar');

SELECT LOCATE('bar', 'foobarbar');

SELECT POSITION('bar' IN 'foobarbar');

主要语法的表现形式不同,当然参数设置上还是有一些差别。

对于上面的3个函数,我有些纠结,到底用哪一个呢?推荐是哪一个呢?我觉得可以通过两种测试方式来得到一个初步的结论,第一个是高并发下多线程调用的性能情况,第二个是单线程执行的性能情况。如果在对比测试中高出一筹,还有什么理由不去推荐呢。

要实现这两个功能,MySQL缺失提供了这样的工具集,第一个是并发执行的性能情况,可以使用MySQL自带的mysqlslap来测试。

而第二个单线程的压测,则可以使用MySQL非常有特色的函数benchmark来实现。

如果使用myslap来压测,使用mysqlslap的语句类似下面的形式。

mysqlslap --concurrency=50,100 --create-schema="test" --query="SELECT POSITION('bar' in 'foobar');" --number-of-queries=50000

当然这里我们加大难度,一个是拼接的字符串要复杂,我们可以使用字符串函数repeat得到一个很长的字符串,比如concat(concat(repeat('abc',500),'foobarbar'),repeat('abc',500)) 就可以得到一个很长的字符串。

通过这种方式得到的测试结果相对来说更有意义一些。

我们调大调用的频次为100万次,使用并发50和100来做测试。

position函数的结果

Benchmark

Average number of seconds to run all queries: 34.789seconds

Minimum number of seconds to run all queries: 34.789 seconds

Maximum number of seconds to run all queries: 34.789 seconds

Number of clients running queries: 50

Average number of queries per client: 20000

Benchmark

Average number of seconds to run all queries: 35.312 seconds

Minimum number of seconds to run all queries: 35.312 seconds

Maximum number of seconds to run all queries: 35.312 seconds

Number of clients running queries: 100

Average number of queries per client: 10000

可以看出在并发50和100的情况下,100的调用时间略长。

使用locate和Instr得到的结果相仿,都是36秒~37秒之间。

从100万次的测试中我们可以得到一个初步udev结论,那就是在这个场景中,position的性能相当要好一些。

而单线程的压测情况如何呢,我们使用benchmark来模拟。

比如压测md5的函数,就是这样的格式。

select benchmark( 500000000, md5( 'test' ) );

对于position和locate,instr,只是需要调整一下函数就可以了,我们还是指定为100万次。

position,locate,instr的性能结果是

1 row in set (8.23 sec)

1 row in set (8.21 sec)

1 row in set (8.23 sec)

可以看出来性能几乎是一样的,locate略微高一点点。

从这个测试也可以看出明显的性能差别,单线程压测的时候是8秒多,但是并发的时候就是36秒左右,这个差别其实很大了。

到此,相信大家对"MySQL中的字符函数的压力测试"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

函数 字符 测试 字符串 性能 情况 线程 结果 压力 内容 功能 就是 差别 时候 形式 方式 结论 还是 面的 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 内蒙古电子软件开发中心 网络技术未来规划 测试软件开发哪家强 国际版mc起床战争在哪个服务器 个体广告店可以做软件开发吗 国旗下情景剧表演网络安全 数据中心网络技术面临的难题 境外代理服务器地址 网络安全公开课新闻稿 福建软件开发代理商共同合作 云之讯网络技术有限公司电话 解决网络安全威胁 年终述职报告 互软件开发 数据库技术及应用电子书 药品网络安全知识竞赛 广州顶胜互联网科技 华为od软件开发 网络安全与信息化建设规划 地理信息数据库技术 安阳新闻洹泉涌流杯网络安全 网络技术开发图片 金仓数据库身份认证 紫晶文档数据库在哪里 做软件开发只能去小公司嘛 苹果设置清理缓存数据库 英语课程学习软件开发需要多少钱 如何在自己的电脑上做cs服务器 周易八卦数据库大全 电信宽带服务器映射不出去 软件开发amd处理器
0