优化MD5和IP在(MySQL)数据库中的存储
2024-09-07 20:05:06
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语句最优化》李雪峰译。
最新文章
- Spring+SpringMvc+Mybatis框架集成搭建教程一(项目创建)
- PHP入门【一】$_SERVER
- 仪表盘 hostmap 新玩法让运维工作越玩越 high
- 漫谈 polling 和 Websocket
- IL指令集(转)
- Ubuntu You don't have permission to access解决方案!
- Egret 矢量绘图、遮罩、碰撞检测
- IE6-BUG-CSS兼容详解
- vs2015体验
- 【前端童鞋看过来!】给大家分享网盘里前端相关书籍,主要是和网络通信(HTTP/TCP/IP)及javascript相关的
- lvs与nginx区别
- 定时任务调度工作(学习记录 四)schedule与scheduleAtFixedRate的区别
- Python全栈-magedu-2018-笔记10
- 支付宝 ILLEGAL_SIGN
- ShellExecuteEX打开iqy文件导致excel hang的原因分析
- python+unittest+requests+HTMLRunner编写接口自动化测试集
- NGINX 安装于配置
- CF1131D tarjan,拓扑
- 安卓手机H5底部fix定位,呼出键盘底部会上浮解决办法
- play framework系列之maven 构建
热门文章
- Android 四大组件学习之Service六
- [Android]生成heap dump文件(.hprof)
- hdu2588 GCD 给定n,m。求x属于[1,n]。有多少个x满足gcd(x,n)>;=m; 容斥或者欧拉函数
- Elasticsearch5.X IN Windows 10 系列文章(2)
- win7下怎么卸载jdk
- 集合Set映射一对多(使用xml文件)
- Spring MVC Hibernate验证器
- Package java.sql
- 《转》Ubuntu14.04 openstack juno配置之 ceilometer遥測模块安装配置
- 网页或WEB应用或PC端浏览器调用百度地图API