1
eason1874 2022-05-28 20:03:36 +08:00 1
我估计至少有 30ms 用在了 PHP 处理,json_encode 挺花时间的。如果你在 json_encode 之前还逐条循环处理,那就更花时间
你每一步都打印已用 ms 时间数,就知道哪一步用的时间多了 |
2
yankebupt OP @eason1874 可能还真是 php...
我 ssh 上去本机 select *了一下,mariadb 自己报 0.017s...... |
3
Building 2022-05-28 20:18:51 +08:00 1
直接查出来一百万条一般不会超过 100ms ,时间在 json parse 上
|
4
eason1874 2022-05-28 20:24:36 +08:00
@yankebupt 优化下代码吧。我记得手动拼接 json 字符串比用 json_encode 省时间,好多内置格式化函数用起来方便但会花不少时间,比如 sprintf 。避免用正则,循环也少用
|
5
yankebupt OP 多谢....
看了一下小鸡 ping 8-16ms ,http 备案防火墙估计要吃几 ms…… 去掉了 join 查询 id>name ,放到了 trigger ,省下几十 ms. fetch_assoc 可以改成 fetch_all(MYSQLI_ASSOC)但是不知道有没有提升可能没有 准备手拼 json 了 |
6
yankebupt OP 另外的测试结果
返回 10000 多条,如果是直接 query ,就算直接从 MEMORY 表 select *,也要 20ms. 如果是 query 过, cache 返回的话就可以 2-3ms 直接返回 面临如下抉择:是否每次插入时 query 一下存进 cache 最大化加速 php 的返回时间…… 插入平均每秒到每几秒一次(传感器读数) php 平均 5-10 秒一次 但是如果 write lock 把表锁住了就得不偿失了 不知要不要做. 准备自己测试下 |