【问题标题】:Maximum table size for a MySQL databaseMySQL 数据库的最大表大小
【发布时间】:2016-09-12 15:15:32
【问题描述】:

MySQL 表的最大大小是多少? 50GB是200万吗? 80GB 时 500 万?

在规模规模较高的情况下,我是否需要考虑压缩数据?或者如果它变得太大,可能会拆分桌子?

【问题讨论】:

标签: mysql database size


【解决方案1】:

我曾经使用过一个非常大的(Terabyte+)MySQL 数据库。我们拥有的最大的表实际上超过了 10 亿行。

成功了。 MySQL 大部分时间都正确处理了数据。不过,它非常笨拙。

仅备份和存储数据是一项挑战。如果需要,恢复表需要几天时间。

我们有很多表,行数在 10 到 1 亿行之间。对表的任何重要连接都太费时了,而且需要很长时间。因此,我们编写了存储过程来“遍历”表并针对“id”范围处理连接。通过这种方式,我们一次处理 10-100,000 行数据(加入 id 的 1-100,000 然后 100,001-200,000 等)。这比加入整个表要快得多。

在不基于主键的非常大的表上使用索引也困难得多。 Mysql 将索引存储为两部分——它将索引(除了主索引)存储为主键值的索引。因此索引查找分两部分完成:首先 MySQL 转到索引并从中提取它需要查找的主键值,然后对主键索引进行第二次查找以查找这些值在哪里。

这样做的结果是,对于非常大的表(1-2 亿多行),针对表的索引更具限制性。您需要更少、更简单的索引。即使是不直接在索引上的简单选择语句也可能永远不会回来。 Where 子句必须命中索引或忘记它。

但话虽如此,事情确实奏效了。我们能够将 MySQL 与这些非常大的表一起使用,并进行计算并得到正确的答案。

【讨论】:

  • 你有什么暗示我可以得到这么大的表进行测试吗?我们正在编写一个数据库管理系统,并希望与 MySQL 一起测试我们系统的性能。
【解决方案2】:

关于你的第一个问题,数据库的有效最大大小通常由操作系统决定,特别是 MySQL Server 能够创建的文件大小,而不是 MySQL Server 本身。这些限制在 table 大小限制中起着重要作用。 MyISAM 的工作方式与 InnoDB 不同。所以任何表格都将依赖于这些限制。

如果您使用 InnoDB,您将有更多关于操作表大小的选项,在这种情况下调整表空间的大小是一个选项,所以如果您打算调整它的大小,这就是要走的路。看看The table is full错误页面。

在给出所有必要信息(操作系统、表类型、列、数据类型和每个表的大小等)的情况下,我不确定每个表的真实记录数量……我不确定这些信息是否易于计算,但我在几个案例中看到了包含大约 1bi 条记录的简单表,而 MySQL 并没有放弃。

【讨论】:

  • 为什么操作系统会限制表的大小? MySQL只能支持单个文件中的表吗?没有允许将多个文件映射到单个表的表空间概念吗?
猜你喜欢
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2023-02-14
  • 2016-08-21
  • 1970-01-01
相关资源
最近更新 更多