2014-06-18 52 views

回答

2

MariaDb原本是一个叉式替代MySQL,大部分遵循与MySQL类似的设计约束。尽管MariaDB文档没有明确说明允许有多少列。

该数字高度依赖于许多因素,包括使用的存储引擎和列结构的方式。对于InnoDB,这是1,000。下面从官方文档

见的解释(参考文献:Column Count Limit

有每桌4096列的硬性限制,但有效 最大可能不太给定的表。确切的限制取决于几个相互作用的因素。

每个表(不管存储引擎)的最大行大小为 65,535字节。存储引擎可能会限制此限制,从而减少有效的最大行大小。

最大行大小约束 列的数量(以及可能的大小),因为所有列的总长度不能超过此大小的 大小。

...

个人存储引擎可能会强加额外的限制是 限制表列数。

InnoDB permits up to 1000 columns. 

这适用于MariaDB的以及

2

MariaDB的目前的形式仍然是足够接近的MySQL,相同的限制适用。随着时间的推移,MariaDB分支可能会进一步分化。

由于数据类型,存储引擎和元数据存储方面的差异,MySQL中每个表的最大列数的实际答案很复杂。对不起,这不仅仅是一个简单的答案。

作为@Manquer引用,每行有64KB的绝对限制,但BLOB/TEXT列不计入此限制。

InnoDB页面每页必须至少包含两行,一页是16KB减一些标题信息。所以无论列的数量如何,该行必须大约为8000字节。但VARCHAR/BLOB/TEXT列可以以有趣的方式溢出到其他页面。详情请参阅http://www.mysqlperformanceblog.com/2010/02/09/blob-storage-in-innodb/

但是,基于适用于所有存储引擎的.FRM元数据文件,还有更多限制。它变得非常复杂,阅读http://www.mysqlperformanceblog.com/2013/04/08/understanding-the-maximum-number-of-columns-in-a-mysql-table/的细节和例子。这里有太多要复制的东西。

鉴于后者的博客文章,我能够设计一个59列失败的表。

相关问题