【问题标题】:How does a large MySQL database become efficient?大型 MySQL 数据库如何变得高效?
【发布时间】:2009-07-07 02:00:56
【问题描述】:

大型(比如 1 亿行)数据库是否经常崩溃?我完全不熟悉缩放-任何东西-,但认为也许一个数据库可以充当更大块实际数据的关键,成为一个索引,会说“哦,是的,该查询需要 20,000,000-25,000,000 块”和将查询发送到该块,跳过其余部分。这不是我需要实现的东西,但我想我会在这里寻求资源,为我指明正确的方向。问候。

【问题讨论】:

  • 如果你说的是 MySQL,我想你的意思是表有 1 亿行,一个数据库可以有任意多的行,但是如果每个表只有 10 行并且有 1000 万个表,那么它仍然会非常非常高效。
  • 如果您需要处理 1 亿行,是时候迁移到 PostgreSQL、MSSQL 或 Oracle。

标签: mysql database theory


【解决方案1】:

他们当然可以。例如,我知道大型系统通常有多个数据中心,其中包含数据库的各个部分以及它们之间的负载平衡。

据我了解,像您所说的那样划分大型数据库的一个关键概念是数据库分片。 This article 应该可以帮助您更好地了解分片如何划分数据库以便于访问并减少单个服务器的负载。

我曾经认为我需要这种类型的技术来处理大约一百万行的数据库,但是当我学习了 3NF 和正确的数据库结构后,我修复了我可怕地实现的数据库。谢谢你提醒我这个!我很想看看你得到什么其他答案。

【讨论】:

    【解决方案2】:

    大型表的最大问题是您通过查询获取了多少数据。在处理后 100 万行表时,对 LIMIT 子句的良好使用变得至关重要(以至于如果您尝试选择整个事物,您将几乎杀死服务器,我只犯了一次这个错误)。

    在索引和 LIMIT 子句之间,MySQL 表可以在存储非常大的数据集时非常高效,只要您不尝试一次访问整个数据集。

    【讨论】:

      【解决方案3】:

      MySQL 5.1 具有table partitioning 功能,可以按照您的描述(在基本级别)将表分成多个部分。但是,MySQL 具有一整套性能调优特性,您需要熟悉所有这些特性才能为每个安装选择最佳的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-31
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多