我有一个包含100多个表的MySQL数据库。这个数据库由CMS使用,每6个小时,一个PHP脚本使用所有这些表,包含大量逻辑,计算和SQL连接,并生成一个包含超过100万行的大型数据集,并将其插入到我们称之为“交易”的表中”。这基本上是一个包含50列和大量优化索引的表,每行都有相同的东西,如下所示:
交易,价格,产品名称,产品颜色,产品维度,品牌,品牌等。
然后,许多其他前端和后端应用程序将此“交易”表用于各种用途。示例包括:客户可以过滤的页面,然后查看结果。客户可以在其中找到有关交易信息的页面。附属公司使用的XML Feed,包含品牌X的所有产品(1,000,000行表中的+/- 150,000行)。一个iOS应用程序,用于向您显示可用于iPhone的附件类型。所有这些应用程序使用相同的1,000,000行MySQL表来轻松查找和显示数据。
随着“交易”表的增长,这些应用程序正在遇到速度问题。 MySQL似乎在处理这些数字时遇到很多麻烦。我不希望情况如此,但可能只有一个MySQL服务器具有32GB RAM和8个内核是一个问题。升级到几台具有128GB RAM的服务器并不是一个选择,我也不相信这会解决这个问题。
我做了一个小小的PHP脚本,除了在MySQL中插入1,000,000行外,还在elasticsearch中对它们进行索引。然后,我在一个简单的沙盒过滤应用程序中测试了MySQL表和ES索引。与基于MySQL的应用程序相比,基于ES的应用程序的速度绝对惊人。所以看起来速度快,ES赢了。
那么..这是ES实例的正确用法吗?或者我是不正确的思考ES将是我的MySQL速度问题的最佳解决方案?
答案 0 :(得分:0)
是的 - 听起来ES会对您的要求很有帮助! ES非常可扩展,速度非常快 - 100万行应该很容易。
您需要查看内存使用情况,安全性和事务性。
但只要你将MySQL数据库作为主要数据源,你就可以了。