LMLPHP后院

MariaDB 读取性能技术

maybe yes 发表于 2021-08-25 17:01

一直以来没有真正测试过 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);
}

数据库原来数据量是 85 万。

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++ 的内存数据服务,也就百十行代码,这些问题也许解决了,现在搞出这么多开源软件,对于求职的软件工程师来讲,学习这些乱七八糟的软件是个很头疼很没有成就感的事情,很多软件甚至编程语言有故意让学习成本拉高的做法,这些就太不厚道了!!!

2024-12-06 05:53:33 1733435613 0.032981