laravel如何做到多进程去查数据库

主要是因为我数据库数据太多了,导致接口返回时间太长了,都有十来秒,想能实现这样的效果,接口能建立多个进程,然后每个进程分别去数据库请求数据,请求完了后再合在一起?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 13

没有用的,不管你分几个进程,如果你请求的还是同一个表,还是要等待的,我用GO测试过,除非是不同表,那是会有一点性能提升。

花大力气琢磨这个,建议你还不如琢磨下怎么优化SQL语句以及索引。

3年前 评论

fpm下据我了解没有啊 :sweat_smile: 要不然你走异步guzzle吧 哈哈哈哈

3年前 评论

你是在什么模式下

3年前 评论
donggan (楼主) 3年前
xiaopi 3年前
lait233 3年前
xiaopi 3年前

没有用的,不管你分几个进程,如果你请求的还是同一个表,还是要等待的,我用GO测试过,除非是不同表,那是会有一点性能提升。

花大力气琢磨这个,建议你还不如琢磨下怎么优化SQL语句以及索引。

3年前 评论

数据太多就不要提供传统的查询,砍掉意义不大的检索条件,限制检索条数,比如日志,只提供最近一个月的检索,根据业务限制一下

3年前 评论

有没有一种可能,你给你自己单独出个接口,获取少量数据,然后使用一楼的多路Guzzle调用这个接口获取数据

3年前 评论

数据查询慢先考虑做索引,还慢就做数据表分区,还慢就考虑下做缓存。如果不单单是查询,还有读写并发造成的慢可以考虑分表甚至分库。看了你的问题感觉索引和表分区这两个较低成本的东西可以试试,数据量大导致的查询慢,就算你多个进程去查,每个进程也还是慢的,然后还要合并在一起,又花了合并的时间,所以感觉是不合理的

3年前 评论
use App\User;
use App\Server;
use Laravel\Octane\Facades\Octane;

[$users, $servers] = Octane::concurrently([
    fn () => User::all(),
    fn () => Server::all(),
]);
3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!