2008-09-07 322 views
27

MySQL表的最大大小是多少? 50GB是200万吗?在80GB 500万?MySQL数据库的最大表大小

在尺寸的高端,我是否需要考虑压缩数据?或者,如果桌子变得太大,也许会分开桌子?

+0

好吧,你真的不想分割一张桌子,如果它变大,你只是想分割它。 – 2008-11-05 17:14:14

+1

可能的重复[在性能开始降级之前MySQL数据库可以达到多大程度](http://stackoverflow.com/questions/1276/how-big-can-a-mysql-database-get-before-performance-starts - 降级) – random 2012-06-26 22:50:23

回答

0

关于你的第一个问题,对于数据库有效的最大尺寸由操作系统通常是确定的,特别是文件大小MySQL服务器就能创建,而不是由MySQL服务器本身。这些限制在大小限制中发挥重要作用。而且MyISAM与InnoDB的工作方式不同。所以任何表都将取决于这些限制。

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

我不确定每个表的真实记录数量是否给定了所有必要的信息(操作系统,表格类型,列,数据类型和每个数据的大小等)。我不确定这些信息是否容易计算,但我已经看到了简单的表格,在一些情况下大约有1bi记录,MySQL没有放弃。

+1

为什么操作系统会限制您的表的大小? MySQL只能支持单个文件中的表?没有允许将多个文件映射到单个表的表空间概念? – 2008-11-05 17:15:44

35

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

它工作。 MySQL大部分时间正确处理数据。尽管如此,这是非常笨拙的。

只备份和存储数据是一项挑战。如果需要的话,需要几天才能恢复表格。

我们在10-100万行的范围内有许多表格。任何重要的表格加入都非常耗时,并且会持续很长时间。所以我们编写存储过程来'走''表'并处理'id'范围的连接。通过这种方式,我们一次处理10-100,000行数据(加入id为1-100,000,然后为100,001-200,000等)。这比加入整个表格要快得多。

在非基于主键的超大型表上使用索引也非常困难。 Mysql将索引存储为两部分 - 它将索引(主索引除外)存储为主键值的索引。因此索引查找分两部分完成:第一个MySQL进入索引并从中获取需要查找的主键值,然后在主键索引上进行第二次查找以查找这些值的位置。

这是因为对于非常大的表格(1到200百万行加上行),对表格的索引更具有限制性。您需要更少,更简单的索引。甚至不直接在索引上做简单的选择语句也可能永远不会回来。条款必须命中索引或忘记它。

但是所有的说法,事情确实有效。我们能够在这些非常大的表格中使用MySQL并进行计算并获得正确的答案。

+1

你有没有提示我可以拿到如此巨大的桌子进行测试?我们正在编写一个数据库管理系统,并希望与MySQL一起测试我们系统的性能。 – StanE 2016-05-28 17:26:09