MariaDB 读取性能技术
一直以来没有真正测试过 MySQL 的性能,本篇就来真正测试下。
pi@raspberrypi: $ time php index.php /index/test real 0m4.349s user 0m1.145s sys 0m0.467s pi@raspberrypi: $ time php index.php /index/test real 0m1.893s user 0m0.854s sys 0m0.463s
基本上就是上面的结果,如果是第一次,那就大约 4.5 秒 10000 次查询,如果再执行一次,这时候命中缓存了,时间不到 2 秒 10000 次。
来看看代码,使用 LMLPHP 框架,使用框架自带数据库操作。
<?php $mMeta = q('meta'); $i=0; $i=2900000; $j=$i+10000; for (;$i<$j;$i++) { $mMeta->getOne('id', 'id='.$i); }
MariaDB [...]> select count(1) from meta; +----------+ | count(1) | +----------+ | 859588 | +----------+ 1 row in set (0.000 sec)
操作系统 raspberrypi os,4B+ 2G 版本。
uname -a Linux raspberrypi 5.4.51-v8+ #1333 SMP PREEMPT Mon Aug 10 16:58:35 BST 2020 aarch64 GNU/Linux
MariaDB [...]> select version(); +---------------------------+ | version() | +---------------------------+ | 10.3.25-MariaDB-0+deb10u1 | +---------------------------+ 1 row in set (0.004 sec)
总结下,其实不管用什么机器,我相信,大差不差,哪怕是用 MacBookPro 最高配置,也应该快不了多少,电脑的配置到了应用层其实是差不多的,光 CPU 强不代表整个的性能强!
结论
MySQL 数据库吞吐量也就是大约 2500 的 TPS。2222 + 5000 之后 除以 2 等于 3611。加上少量的插入和修改以及非索引查询,总体的性能也就是那样了!
后记
在 MacBookPro 的顶配机器上测试了一下,性能快了一倍多,除了第一次用了 2.033s 之外,后面不论怎么调整参数,都在 1.7s 左右,当然数据量比较小,只有 21950。可见性能和机器和数据都有关系,但依然是大差不差!!!
对于一个单机应用来讲,这样的性能真的足够了,一个请求查询 3 次 SQL 来计算,好一点的机器 1000 QPS 是没有问题的,想想看,国内有哪几个公司一秒钟能有 1000 个请求?保险一点起见,加一台机器实时备份下数据库,一切 OK!!!
移动互联网的内卷导致互联网技术界诞生了大量的开源软件,在没有移动互联网之前,拥有高并发大数据的公司大有人在,像之前的暴风影音事件,连 DNS 服务器都扛不住,暴风扛住了,可见暴风的流量之大。假设没有这些开源软件,一个程序员憋个招,写几个 C++ 的内存数据服务,也就百十行代码,这些问题也许都解决了,现在搞出这么多开源软件,对于求职的软件工程师来讲,学习这些乱七八糟的软件是个很头疼很没有成就感的事情,很多软件甚至编程语言有故意让学习成本拉高的做法,这些就太不厚道了!!!