gpt4 book ai didi

mysql - 计算数百万行的不同值——适合 NoSQL 吗?

转载 作者:行者123 更新时间:2023-11-30 23:26:30 25 4
gpt4 key购买 nike

我有一个使用 MySQL 数据库的 Web 应用程序,它有大约十二列,以及数百万条用单字符代码编码的记录。可以通过添加 WHERE 子句来查询横截面:

SELECT col1, COUNT(col1) AS num
从我的表
WHERE col2='U'
按 col1 分组

每个页面都会进行大约一打此类查询,每列一个查询减去 WHERE 子句中指定的一个查询。

我有一个缓存系统,但是数据每天更新(添加数十万条记录),并且最初生成缓存的过程非常缓慢。我仍在努力思考 NoSQL 的想法,似乎有很多不同的范例。因此,假设每条记录都遵循相同的格式,没有 JOIN,这是否适合过渡到 NoSQL 数据库?如果是这样,您会推荐哪一种(或哪种)?

编辑:我应该补充一点,它需要与 PHP 兼容。

最佳答案

这是个好问题。

根据我的经验,处理数百万行总是很棘手

我认为实现此目的的最佳方法是使用专为处理此类查询而构建的特定数据库。

默认情况下,MySQL 是面向行的,旨在用作事务数据库 (OLTP),这意味着它可以快速插入、更新、删除小型行集。但是,它并不是为处理具有此类查询的大型数据集而设计的。因此,计算数百万行的值将需要时间,有时甚至不会给出结果(内存溢出...)

您的查询是典型的分析查询(包含对列的聚合和 GROUP BY)。您应该考虑使用面向列的数据库。这些数据库经过优化和设计以处理大型数据集。 ( Column oriented database )

我从来没有使用 NoSQL 数据库来处理大型数据集,因为我总是需要有一个明确定义的模式,而面向列的数据库就足够了。如果您想使用其中之一,请确保它支持您想要执行的查询(即聚合类型 SUM、COUNT...)。还要注意每天将如何插入新行。

关于mysql - 计算数百万行的不同值——适合 NoSQL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13055083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com