【问题标题】:Any pitfalls of converting MySQL TEXT field to MEDIUMTEXT?将 MySQL TEXT 字段转换为 MEDIUMTEXT 的任何陷阱?
【发布时间】:2011-03-31 18:51:27
【问题描述】:

我了解 MySQL TEXT 和 MEDIUMTEXT 字段的大小/存储限制,但我只是想绝对确定(在我签署更改之前)我没有看到将字段转换为现有的任何不利影响从 TEXT 到 MEDIUMTEXT 的数据。

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

谢谢

【问题讨论】:

    标签: mysql types field textfield


    【解决方案1】:

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

    • 可变长度数据(如 varchar、text 和 blob)存储时没有填充。
    • 我不知道任何完整性问题。数据库引擎会自动处理所有数据类型。
    • 当然,如果您有非常长的文本数据,那么当您获取该数据时,磁盘 I/O 和网络带宽将需要更多存储空间和更多时间。但如果这是您需要放入数据库的数据,那么您就必须这样做。

    我能想到一种可能的影响:

    一些客户端接口库会预先分配一个缓冲区来保存结果,它们会为可能的最大值分配足够的内存。客户端在获取数据之前不知道数据的长度,因此假设数据可能与数据类型支持的一样长,它必须分配足够的空间。

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

    【讨论】:

    • 感谢您的快速回复,比尔!
    • '一些客户端接口库',我发现这个内存问题是 PHP 中旧的 mysql 库的问题。但是,3 年后,这应该不再是问题了。
    • @kasimir:在 PHP 5.6 和 PDO 中,mediumtexttext 使用更多的内存(具有相同的值,一个空字符串)。在我的简单测试中,差异是 0.5 MiB 与 1.5 MiB。
    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多