2014-06-18 79 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列失敗的表。

相關問題