活动小鸡上 SQL 应该耗时多少?

2022-05-28 18:59:09 +08:00
 yankebupt
腾讯云的活动小鸡,性能估计很一般很一般
php 和 sql 都在一机
已开 opcache(感觉不是,没什么提升)

返回大概 10000 多条数据(温湿度传感器),php 处理成 json 给网页
查询就一个全表返回(已做插入 db trigger 数据分类),没 where 条件,就一个 join 做 id->名称转换(不知是不是瓶颈,是的话丢给 insert trigger)

php 等待约 100ms ,感觉已经爆炸……六张图 10 秒一刷的话估计会把机器卡成鬼

不知道什么地方的问题。

有人讲讲像我这样几千条数据的 SQL 的平均返回时间么,我也有个底……
1109 次点击
所在节点    问与答
6 条回复
eason1874
2022-05-28 20:03:36 +08:00
我估计至少有 30ms 用在了 PHP 处理,json_encode 挺花时间的。如果你在 json_encode 之前还逐条循环处理,那就更花时间

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/855895

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX