VARCHAR(MAX)vs TEXT vs .txt文件,用于MySQL数据库

时间:2017-11-07 21:38:15

标签: mysql database file text varchar

我试图谷歌这一点,但我发现的任何结果都与从txt文件导入数据以填充数据库而不是存储数据有关。

对我来说,文件的内容应存储在数据库中似乎很奇怪。我们正在制作电子商务网站,每个项目都有说明。我假设标准是将描述存储在txt文件和数据库中的URL中,而不是将大量内容存储在数据库中以保持较低的文件大小和速度。当您需要将图像存储在数据库中时,使用URL引用它而不是存储所有像素数据 - 为什么文本会有所不同? 这就是我的想法,但每个人似乎都在争论VARCHAR和TEXT,那么最好的方法是将文本数据存储到1000个字符左右? 谢谢!

1 个答案:

答案 0 :(得分:2)

无论是将长文本数据还是图像数据存储在数据库中还是外部文件中都没有正确或错误的答案。双方都有利弊 - 尽管许多开发人员明确声称你应该将图像存储在数据库之外。

考虑您可能希望文本数据:

  • 允许回滚更改。
  • 支持事务隔离。
  • 强制对数据执行SQL访问权限。
  • 在创建全文索引时可以在SQL中搜索。
  • 支持NOT NULL约束,因此您的文字必须包含某些内容
  • 创建数据库备份时自动包含(并且文本版本是正确的版本,确保与其他数据保持一致)。
  • 自动将文本传输到副本数据库实例。

对于上述所有内容,您需要将文本存储在数据库中。如果文本在数据库之外,则这些功能将不起作用。

关于VARCHAR与TEXT,我可以回答MySQL(尽管你提到了VARCHAR(MAX),所以你可能指的是Microsoft SQL Server)。

  • 在MySQL中,VARCHAR和TEXT的最大值均为64KB(字节)。如果你使用 多字节字符集,最大字符数较低。

  • VARCHAR和TEXT都有字符集和整理。

  • VARCHAR允许DEFAULT,但TEXT不允许。

  • InnoDB存储引擎,VARCHAR和TEXT内部存储相同(以及VARBINARY和BLOB及其所有堂兄弟)。请参阅https://www.percona.com/blog/2010/02/09/blob-storage-in-innodb/