MySQL数据库的最大表大小

Cal*_*ton 28 mysql database size

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

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

Kev*_*ell 37

我曾经使用过非常大的(Terabyte +)MySQL数据库.我们拥有的最大的表格实际上超过十亿行.

有效.MySQL在大多数时间正确处理数据.但这非常笨拙.

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

我们在10-100万行范围内有许多表.表格的任何重要联接都太耗费时间并且需要永远.因此,我们编写了存储过程来"遍历"表并处理对'id'范围的连接.通过这种方式,我们一次处理10-100,000行数据(加入id的1-100,000然后100,001-200,000等).这比加入整个表格要快得多.

在非基于主键的非常大的表上使用索引也要困难得多.Mysql将索引存储为两部分 - 它将索引(主索引除外)存储为主键值的索引.因此,索引查找分为两部分:首先MySQL转到索引并从中获取需要查找的主键值,然后在主键索引上进行第二次查找以查找这些值的位置.

这样做的结果是,对于非常大的表(1-200万加行),对表的索引更具限制性.您需要更少,更简单的索引.即使是不直接在索引上的简单select语句也可能永远不会回来.哪些条款必须达到索引或忘记它.

但话说回来,事情确实奏效了.我们能够将MySQL与这些非常大的表一起使用并进行计算并获得正确的答案.


Fer*_*cal 0

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

如果您使用 InnoDB,您将有更多操作表大小的选项,在这种情况下调整表空间大小是一个选项,所以如果您打算调整它的大小,这就是正确的方法。看一下“表已满”错误页面。

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