在MySQL数据库中,以字符串形式存储IPv4和IPv6地址的理想大小应该是多少。varchar(32)就足够了吗?
发布于 2010-08-11 04:42:36
假设字符串中的文本表示为 :
适用于IPv4的
的12+3 IPv6的xxx.xxx.xxx.xxx
格式
这是字符串的最大长度。
存储为字符串的替代方案:
INT UNSIGNED
与INET_ATON
和INET_NTOA
一起使用来处理从地址到数字以及从数字到地址的转换选择INET_ATON( '209.207.224.40‘);-> 3520061480选择INET_NTOA(3520061480);->’209.207.224.40‘
对于
BIGINT
(8字节),但这将使用两个字段。发布于 2010-08-11 04:42:19
如果您将它们存储为字符串而不是位模式:
IPv4地址由四个带有三个.
分隔符的三位十进制字符组成,因此只需要15个字符,如255.255.255.255
。
IPv6地址由8个4位十六进制字符和7个:
分隔符组成,因此需要39个字符,如0123:4567:89ab:cdef:0123:4567:89ab:cdef
。
发布于 2010-08-11 04:41:53
在数字上,IPv4地址是32位长,而IPv6地址是128位长。因此,您至少需要16字节的存储空间。
如果您存储的“字符串”是字节形式的地址编码,那么16就足够了。
https://stackoverflow.com/questions/3455320
复制相似问题