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