将MySQL TEXT字段转换为MEDIUMTEXT的任何陷阱?

sco*_*son 16 mysql types field textfield

我理解MySQL TEXT和MEDIUMTEXT字段的大小/存储限制,但我只想绝对确定(在我签署更改之前)我没有考虑使用TEXT中的现有数据转换字段的任何不利影响到MEDIUMTEXT.

我关心的主要是性能,完整性和磁盘存储.

谢谢

Bil*_*win 26

关于数据库层的性能,完整性和磁盘存储,我不担心.

  • varchar,text和blob等可变长度数据在没有填充的情况下存储.
  • 我不知道任何有关诚信的问题.数据库引擎以原子方式处理所有数据类型.
  • 当然,如果你有非常长的文本数据,那么当你获取数据时,它将需要更多的存储空间和更多的时间来获得磁盘I/O和网络带宽.但如果这是您需要放入数据库的数据,那么您就必须这样做.

我可以想到一个可能的影响:

某些客户端接口库预先分配一个缓冲区来保存结果,并为最大可能值分配足够的内存,因为客户端在获取之前不知道数据.

因此,库每次分配16MB,mediumtext为a分配64KB text.如果您的客户端层中的内存限制较低,则需要注意这一点.例如,PHP有memory_limit脚本的配置参数,为数据结果集分配的缓冲区将计入此值.

  • @kasimir:使用PHP 5.6和PDO,`mediumtext`比`text`使用更多内存(具有相同的值,空字符串).在我的简单测试中,差异为0.5 MiB与1.5 MiB. (3认同)