在mysql数据库中存储字符长度~300,000的文本

时间:2014-11-29 16:05:43

标签: mysql sql database varchar longtext

我有一列数据要添加到mysql数据库表中。该列是原始文本,最长的文本包含大约300,000个字符。是否可以将其存储在表格中?怎么样?

我一直在读,即使LONGTEXT列也有所限制。

1 个答案:

答案 0 :(得分:3)

据推测,您已经排除了将这些文本项存储在文件中并将其路径名存储在表中的替代方法。如果你没有考虑过这个选择,请做。它通常是处理此类应用程序的最实用的方法。如果您使用Web服务器向用户提供信息,则尤其如此:通过将这些对象放入文件系统,可以避免非常严重的生产瓶颈(从DBMS获取对象然后将其发送给用户)。

MySQL的LOB(大对象)将带有300k字符而不会出现问题。 MEDIUMTEXT处理16兆字节。但是将这些对象加载到DBMS中并将它们再次取出所需的编程工作可能会有点挑战。您还没有提到您的应用程序堆栈,因此很难就此提供具体建议。从哪儿开始?阅读MySQL服务器参数max_allowed_packet

如果这是我的项目,并且由于某些原因使用文件系统是不可能的,我会将大型文本文章存储为较短行的段。例如,而不是

 textid        textval
  (int)        (MEDIUMTEXT)
 number        lots and lots and lots of text.

我会做一个这样的表:

 textid      segmentid     textval
  (int)         (int)      (VARCHAR(250))
 number           1        Lots and
 number           2        lots and
 number           3        lots of
 number           4        text.

段长度应该大约为250个字符。如果可以的话,我认为你可以聪明地打破字界的细分。它会使像FULLTEXT搜索这样的东西更容易。这将为您的大文本项目提供许多较短的行,但这将使您的编程,备份以及有关系统的所有其他内容。更容易处理周围。

有一个前期成本,但它可能是值得的。