云服务器免费试用

如何有效在MySQL存储IP地址?(mysql 存储ip)

服务器知识 0 278

如何有效在MySQL存储IP地址?

在《高性能MySQL》,作者建议当存储IPv4地址时,应当使用32位的无符号整数(UNSIGNEDINT)来存储IP地址,而不是使用字符串的原理一样。由于一个int型的数据占4个字节,每一个字节8位,其范围就是0~(2^81),而ipv4地址可以分成4段,每段的范围是0~255刚恰好能存下,所以将其稍稍转换,就奇妙的将IP地址用最小的空间存在了数据库中(接下来的描写若无特殊说明,则都是指的ipv4地址)。可能你会觉得这个小小的改变没有甚么关系,但是当数据量愈来愈多的时候,15个字节和4个字节相差的数据量会让你吃惊。所以在设计数据库的时候,字段类型用适合的,够用就行,能省则省。

如何有效在MySQL存储IP地址?(mysql 存储ip)

相对字符串存储,使用无符号整数来存储有以下的好处:

1.节省空间,不论是数据存储空间,或索引存储空间

2.便于使用范围查询(BETWEEN...AND),且效力更高

通常,在保存IPv4地址时,一个IPv4最小需要7个字符,最大需要15个字符,所以,使用VARCHAR(15)便可。MySQL在保存变长的字符串时,还需要额外的一个字节来保存此字符串的长度。而如果使用无符号整数来存储,只需要4个字节便可。另外还可使用4个字段分别存储IPv4中的各部份,但是通常这不论是存储空间和查询效力应当都不是很高(虽然有的场景合适使用这类方式存储)。不过使用无符号整数来存储也有不便于浏览和需要手动转换的缺点。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何有效在MySQL存储IP地址?(mysql 存储ip)
本文地址: https://solustack.com/5284.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。