【发布时间】:2019-04-29 05:38:14
【问题描述】:
我有一个使用 VueJS 前端和 MySQL 作为 RDBMS 的 Laravel Web 应用程序。我目前有一个 23.8gb 的表,包含 8m+ 行,并且每秒都在增长。
在查询此数据时,我将其连接到其他 4 个表,因此整个数据集非常庞大。
我目前只提取和显示 1000 行,因为我不再需要这些了。 VueJS 在表格中显示数据,有 13 个过滤选项供用户选择,以过滤日期、名称、状态等范围内的数据。
使用 Eloquent 并使用 MySQL 索引,我已设法将查询时间缩短到可观的时间,但我需要应用程序的这一部分尽可能响应。
从过滤器启动的一些 where 子句需要 13 秒才能执行,我觉得这太长了。
我一直在做一些阅读和思考,也许 MongoDB 或 Redis 可能是一种选择,但两者都没有什么经验。
对于这种特殊情况,您认为最大化读取性能的最佳选择是什么?
如果我使用 MongoDB,我不会迁移当前数据...我基本上会有第二个数据库,其中包含所有新数据。此应用尚未投入生产,在大多数用例中,只需要最近 30 天的数据,但仍需要查询旧数据的选项,因此保留 MySQL 和 MongoDB。
我们将不胜感激。
【问题讨论】:
-
你的问题有点模糊,Redis、MongoDB、MySQL都是很不一样的东西。也许你应该添加一些关于这些数据是什么的信息。
-
嗨蒂姆,我知道它们都是不同的东西,但由于这个项目还没有进入开发阶段,我可以灵活地进行更改。我需要一个解决方案来最大化查询读取性能,如果这 3 个选项中的任何一个可以实现这一点,我就有能力实现它。该表存储来自不同商家的支付网关的交易数据。
标签: mysql laravel mongodb redis