【发布时间】:2019-09-10 12:50:51
【问题描述】:
我们有一个大小为 4TB 的 mysql 数据库。它有大约 3000 个表,其中很少有大小为 200-300GB 的表。 有时在这些较大的表上查询需要超过 60 到 100 秒。
Java 应用程序将数据加载到此数据库中。另一个基于 Java spring 的 web 应用程序搜索这个数据库。所以这个 web 应用程序只使用选择查询。
我计划在 web 应用程序和 MySQL 之间使用 redis 数据库来改进选择查询,从而提高 web 应用程序的性能。
最初计划一次性迁移到 redis,然后编辑 Java 应用程序以将数据插入 MySQL 和 redis。
我可以在这个用例中使用 redis 吗?如果有任何其他想法,请告诉我。 按照 MySQL DBA 的要求,它已被最大限度地调整。
由于基础设施方面的挑战,我们无法在数据库方面进行太多更改。我只能尝试与软件相关的更改
【问题讨论】:
-
最好在 StackOverflow 上询问。我对 Java 代码和数据库查询的经验是,它们通常由框架生成,即使它们通常很好,它们也很少是最优的(并且有一些病态的情况)。
-
这个问题太宽泛了,把任务混为一谈了。它可能应该已经迁移到Database Administrators Stack Exchange,在那里您可以讨论概念和设计。将您的问题分为(1)Redis的安装和配置; (2) 你为 Redis 编写的任何代码。在其他地方问问题(1);在这里问问题(2)。在您遇到真正具体的问题之前,堆栈溢出无法帮助解决 (2)。另见How to create a Minimal, Complete, and Verifiable example。
-
Redis 适合“缓存”数据。它不会取代 DBMS 及其复杂的查询语言。你的问题确实太宽泛了——MySQL 本身也有一些缓存,用于重复查询。一分钟回复一个问题似乎很长;但也许你首先有一些索引问题......但这取决于很多因素;没有更多的细节,很难给出去的方向。