【问题标题】:MySQL efficiency as it relates to the database/table sizeMySQL 效率与数据库/表大小有关
【发布时间】:2011-02-10 22:20:36
【问题描述】:

我正在使用 django、Sphinx 和 MySQL 构建一个系统,该系统很快就会变得相当大。该数据库目前有大约 2000 行,我编写了一个程序,它将在几天内再填充 40,000 行。由于数据库现在已经上线,而且我从未有过包含这么多信息的数据库,所以我担心一些事情:

  1. 添加所有这些行会严重降低 django 应用程序的效率吗?我是否需要返回并优化我所有的数据库调用,以便他们更聪明地做事?或者这会使数据库变慢到我根本无能为力的程度?

  2. 如果您嘲笑我的 40k 行,那么,我的下一个问题是,我应该在什么时候担心?我可能很快就会再增加几十万,所以我担心,我担心。

  3. 狮身人面像会如何看待这一切?当它意识到它必须索引所有这些数据时,它会发疯吗?或者会好起来吗?这是正常的吗?如果是,我应该在什么时候担心 Sphinx 的数据过多?

感谢您的任何想法。

【问题讨论】:

    标签: mysql django optimization performance django-sphinx


    【解决方案1】:

    对于普通查询,2000 行不算什么——即使没有索引,它也会非常快,因为整个表都可以缓存在内存中。在大多数情况下,100000 行也应该可以正常工作,尽管如果您没有适当的索引或者您的查询没有使用可用的索引,那么您现在会注意到它 - 如果不使用应该需要几秒钟的查询可能需要几分钟索引正确。但解决问题应该不会花很长时间 - 对慢查询运行 EXPLAIN 并查看它为什么慢,并找出您需要哪些索引。

    当您达到数百万行或数千万行时,您将不得不更仔细地考虑您的数据库设计和索引策略。如果操作正确,一个表中可能会有数亿行。

    【讨论】:

    • 因此,由于这与 django 有关,因此为我创建了数据库。 django 是否正确创建了上述索引?
    • 不,你必须自己创建索引。
    • 酷。我这样做了,我的查找时间大大缩短了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    相关资源
    最近更新 更多