我对两个相互矛盾的陈述感到困惑。我反复阅读一行的最大大小是64KB。那么,例如,如果整行最大为64KB,那么中间文列可以是16MB是什么意思? (我正在使用InnoDB。)
我也有两个相关的问题。
在实践中,中间字段是固定的还是可变长度的?在转储它看起来是变量,但实际上,或者db记录总是为它分配16MB?
是否存在一种共识,即中间文本与varchar之类的任何较小的亲戚一样有用,或者一般认为最好将文件用于超过60KB左右的文本?
我知道这些是新手问题,但在来到这里之前我做了相当多的搜索,但我找不到答案。我们将非常感谢您的帮助。
答案 0 :(得分:0)
行不限于64KB,甚至没有任何我能想到的合格方式。如果您有指向该限制的位置的链接,请告诉我。
我收集了MySQL here中的大部分“硬”限制。
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.list_fragment, container, false);
listView = (ListView) view.findViewById(R.id.testListView);
listView.setAdapter(adapter);
return view;
实现为3字节长度加上0到16MB字节的文本。其他MEDIUMTEXT
和TEXT
数据类型的设计类似。它们都是“可变长度”,而不是“固定”。
通常,使用最适合应用程序代码操作数据的数据类型。
事实证明,BLOB
和LONGTEXT
很难直接加载,因为“变量”LONGBLOB
的默认值为16MB。我不确定您是否需要确定(max_allowed_packet
* innodb_log_file_size
)> 10 *你将拥有的最大innodb_log_files_in_group
。 (我认为我没有听说有人遇到这样的问题。
使用合理的大小声明TEXT
而不是常见的VARCHARs
略有优势。较大的varchars和255
之间可能没有区别,除了截止值。
文件与文本/ blob ...这是论坛上的常见问题,通常与TEXT
中的图像存储有关。这两种方法都有优点/缺点。