我们有一个70G的MariaDB表。 100万行,每行100列。
问题是,查询最多需要10到15分钟。 如果我们切换到“大数据”数据库,是否可以解决此问题?
MongoDB这样的数据系统很好吗?
每天该表中大约有300.000个新行。除此之外,将没有更新/删除。只需选择。
已经有人对此主题进行过体验吗? MariaDB真的会更快吗?
谢谢。
答案 0 :(得分:0)
任何类型的大型数据库都受磁盘速度的限制。您将从一个I / O绑定数据库切换到另一个I / O绑定数据库。
相反,让我们看一下您正在做的细节。即使磁盘速度较慢,十亿行表上的“点查询”也只需要几毫秒。这是因为任何数据库(值得使用)都可以通过索引非常快速找到行。
因此,显然,您没有合适的索引,或者您正在做复杂的事情。让我们看一下SELECT
和架构(SHOW CREATE TABLE
)。它可能很简单,例如添加“复合”索引或重新构造查询。改变供应商不太可能是解决方案。
好的,您给了我们一个线索:where date LIKE '201808%'
。我希望date
是DATETIME
或TIMESTAMP
。它不能使用索引,因为它需要在执行date
之前将每个LIKE
隐瞒到一个字符串中。因此进行表扫描。而是:
WHERE date >= '2018-08-01`
AND date < '2018-08-01` + INTERVAL 1 MONTH
那个可以使用索引。
WHERE
中还有其他内容吗? using inex condition
听起来好像还有其他东西。请向我们展示整个SELECT
。
您有一个LIMIT 10000
。 是否可以加快查询速度。还有ORDER BY
吗? GROUP BY
?这些可能需要某种。发生排序时,所有工作都会在看到LIMIT
之前完成。