mariadb每个表的最大列数是多少

时间:2014-06-18 01:56:06

标签: sql mariadb

您好我想知道不同存储引擎每个表允许的最大列数和最大行大小。我搜索了mariadb网站文档,但找不到相关信息。谢谢

2 个答案:

答案 0 :(得分:3)

当前形式的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列失败的表。

答案 1 :(得分:2)

MariaDb最初是一个替代MySQL的分支,主要遵循与MySQL类似的设计约束。虽然MariaDB文档没有明确说明允许的列数。

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

请参阅以下官方文档(参考:Column Count Limit

中的说明
  

每张表有4096列的硬限制,但有效   对于给定的表,最大值可能更小。确切的限制取决于   几个相互作用的因素。

     

每个表(无论存储引擎如何)的最大行大小为   65,535字节。存储引擎可能会对此施加其他限制   限制,减少有效最大行大小。

     

最大行大小限制了数量(可能的大小)   列因为所有列的总长度不能超过此值   大小

     

...

     

单个存储引擎可能会施加额外的限制   限制表列数。

InnoDB permits up to 1000 columns.

这也适用于MariaDb