【发布时间】:2014-05-23 03:34:45
【问题描述】:
我有一个包含数百万行的 mysql 表。每行都有一个 id、data、date。
- id -> 数量
- 数据 -> 长文本
- 日期 -> 日期时间
“数据”列包含 json 编码数据,数据列中的每一行大约为 . 45kb,如果我需要查询 100 行,它返回 45kb x 100 = 4500kb 的数据。要求是将来获取 10,000 或 100,000 行。
json 编码的数据,然后在服务器端(PHP)进一步解码,然后应用程序使用数据。
应用程序服务器和数据库服务器都是分开的。目前查询 100 行(查询是在日期完成的),同时查询并将数据传输到应用程序服务器进行渲染,花费了太多时间。
请建议优化解决方案以实现极快的访问(100,000 行)。
NoSQL (mongodb) 是一个好的解决方案,还是 elasticsearch,或者 MySQL 有针对这种场景的优化技术?
【问题讨论】:
-
你试过 Postgres 吗?它具有原生 JSON 列,这可能意味着您不必传送整个 JSON 数据结构,而只需传送相关部分。
-
在mysql中使用
MYISSAM作为存储引擎 -
您在表上运行的实际查询是什么?
-
还没试过postgres。要求指出,有时需要整个 JSON 数据,有时需要相关部分。最终目标是获得整个数据列 45 kb 行(n 行)但 v.fast。
-
查询是 'SELECT * from table WHERE DATE BETWEEN '2014-3-3' AND '2014-3-4' 每 5 分钟一次,通过 CRON 输入一个新行。
标签: mysql performance mongodb optimization elasticsearch