您的位置:首页 > 数据库 > MySQL

优化MD5和IP在(MySQL)数据库中的存储

2016-04-16 20:46 429 查看
1、MD5在MySQL数据库中的存储

  用CHAR(32)来存储MD5值是一个常见的技巧。如果你的应用程序使用VARCHAR(32),则对每个值得字符串长度都需要花费额外的不 必要的开销。这个十六进制的值可以使用UNHEX()和HEX()函数来存储在BINARY(16)在BINARY(16)数据类型的中且更为高效。用这 种转换可以让每行占用的存储空间从32字节减少到16字节。

  下面的示例展示了原始MD5以及压缩后的MD5占用的空间对比:



  这个原则也适用其他16进制的值,例如为所有列的散列值而定义的索引时。

2、IP地址在MySQL中的存储

  一个IP地址应该定义为INT UNSIGNED数据类型,只占用4字节。

  通常情况下将列定义为VARCHAR(15),这样平均要占用12字节。这样平均要占用12个字节。

  这样一个改进就可以节约2/3的列数据占用的空间。INET_ATON()和INET_NTOA()函数可以管理IP在字符串和数字值之间的转换。

  请看下面的示例:

  


  这个技术是适合于ipv4。随着ipv6的广泛使用,一定要将这些128bit的整数值以binary(16)的类型存储,而不是用varchar数据类型那种人们可以阅读的方式。

来源文献:《EffectIve MySQL 之SQL语句最优化》李雪峰译。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: