zoukankan      html  css  js  c++  java
  • 优化MD5和IP在(MySQL)数据库中的存储

    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语句最优化》李雪峰译。

  • 相关阅读:
    Android使用SQLite数据库(2)
    Android使用SQLite数据库(1)
    使用Eclipse为Android定义style
    SharedPreferences写入和读出数据
    AlertDialog.Builder弹出对话框
    Android退出时关闭所有Activity的方法
    获取PC或移动设备的所有IP地址
    Android文件的分割和组装
    到底什么是跨域?附解决方案!
    超详细 Nginx 极简教程
  • 原文地址:https://www.cnblogs.com/xiangyangzhu/p/5399317.html
Copyright © 2011-2022 走看看