成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我懵了,如果要存 IP 地址,用什么數據類型比較好?

網絡 通信技術
IP 地址的本質是 32 位無符號整數,類似于 192.168.0.1? 這種點分十進制的字符串寫法只是為了幫助人們理解和記憶,192.168.0.1? 對應的十進制表示是 無符號整數 3232235521。

提到 IP 地址(IPv4),大伙兒腦子里肯定馬上能浮現類似于 192.168.0.1、127.0.0.1 這種常見的 IP 地址,然后結合這個問題 “MySQL 中用什么數據類型存 IP 地址?”,于是乎脫口而出用 char 字符串類型存。

面試官一臉冷漠,你頓時意識到情況不對,又仔細琢磨了一下。

然后發現,這個 IP 地址的長度是變化的,最短可以是 0.0.0.0 只需要 7 位,最長可以是 255.255.255.255 需要 15 位,于是自信地回答使用 varchar(15) 來存儲 IP 地址,并為自己能夠想到這一層而暗自竊喜。

誰知面試官竟輕蔑一笑,問你 “確定嗎?”,你覺得這是面試官在考驗你,于是堅定的回答 “確定”。

然后就開始了下一題

......

人們經常使用 varchar(15) 列來存儲 IP 地址,但事實上這并不是最優解。

IP 地址的本質是 32 位無符號整數,類似于 192.168.0.1 這種點分十進制的字符串寫法只是為了幫助人們理解和記憶,192.168.0.1 對應的十進制表示是 無符號整數 3232235521。

所以,說用字符串類型存 IP 地址的,其實是潛意識中以為 IP 地址是字符串,存的是點分十進制的字符串,但正確的應該是存 32 位的無符號整數

所謂有符號數其實就是將最高位作為符號位,比如 32 位的有符號 INT,最高位是符號位,剩下 31 位才是真實的數值,所以有符號 INT 的取值區間為:

無符號 INT 的取值區間為:

下表列出了 MySQL 出各個整數類型有符號和無符號的的取值范圍,在定義表時,可以在數據類型后面添加關鍵字 UNSIGNED 來定義無符號整數,否則默認為有符號整數:

類型

有符號數取值范圍

無符號數取值范圍

TINYINT(1 字節,8 bit)

-128 ? 127

0 ? 255

SMALLINT(2 字節,16 bit)

-32768 ? 32767

0 ? 65535

MEDIUMINT(3 字節,24 bit)

-8388608 ? 8388607

0 ? 16777215

INT(4 字節,32 bit)

-2147483648 ? 2147483647

0 ? 4294967295

BIGINT(8 字節,64 bit)

-9223372036854775808 ? 9223372036854775807

0 ? 18446744073709551615

結合上表,可以看出,32 位的無符號  INT 正好可以容納 IPv4 地址,下面是 INT UNSIGNED 和 VARCHAR(15) 兩種數據類型的對比:

  1. 存儲空間:4 字節的 INT 類型 15 字節的  VARCHAR(15) 更加節省存儲空間。另外,VARCHAR 除了會保存需要的字符數,還會另加一個字節來記錄長度(如果列聲明的長度超過 255,則使用兩個字節記錄長度),所以 VARCHAR(15) 其實要占用 16 個字節。
  2. 檢索速度:如果我們要在 IP 地址上建立索引,那么對于字符串索引來說,整數索引的檢索速度簡直就是降緯打擊了,因為字符串類型的比較是需要從第一位字符開始遍歷依次進行的,速度較慢。

MySQL 非常貼心地提供了 IPv4 地址點分十進制和無符號整數的相互轉換函數,inet_aton 和 inet_ntoa(底層是二進制移位操作,速度很快):

圖片

當然你更應該在業務中去執行這些轉換,減輕 MySQL 的壓力。

責任編輯:武曉燕 來源: 飛天小牛肉
相關推薦

2022-06-06 15:06:42

MySQLJAVA

2009-09-15 09:24:42

思科認證考試思科認證

2018-12-17 13:03:39

AI數據科技

2020-09-23 16:53:46

Python編輯器工具

2021-11-11 07:02:33

類型函數調用

2020-07-28 10:40:26

大數據專業技術

2021-11-05 07:13:46

Python

2024-11-14 09:29:38

2020-12-08 15:54:15

編程語言Python

2020-11-18 09:26:52

@property裝飾器代碼

2021-06-10 09:27:11

Git 教程工具沙盒模式

2014-06-05 15:16:49

Linux開源Flash

2024-09-29 16:09:23

2019-08-28 15:38:04

Linux系統工具

2021-11-30 23:01:51

編程語言數據Python

2010-03-29 17:38:18

CentOS源代碼

2021-03-15 14:09:49

電腦軟件安全

2022-09-13 08:44:02

IP網絡MAC地址

2024-04-16 08:26:18

IP地址MAC地址

2020-11-03 08:36:34

安全技術教育
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: julia中文字幕久久一区二区 | 99久久日韩精品免费热麻豆美女 | 亚洲成人三级 | 国产精品一区二 | 国产黄色小视频 | 99热最新网址 | www.黄网 | 精品粉嫩aⅴ一区二区三区四区 | 欧美日韩美女 | 日韩激情视频一区 | 欧美一区二区在线观看 | 中文字幕在线看人 | 国产精品99久久久久久久vr | 日韩欧美在线观看视频 | 中文字幕第一页在线 | 久久久久国产视频 | 一级片片 | 国产一二区视频 | 日韩福利在线观看 | 9久久精品 | av一区二区三区四区 | 男人天堂99 | 国产精品久久久久久妇女6080 | 国产精品国产三级国产a | 日韩久久网 | 成人免费视频观看视频 | 亚洲 自拍 另类 欧美 丝袜 | 亚洲一二三区免费 | 精品亚洲国产成av人片传媒 | 久久久久久久一级 | 成人精品一区二区三区 | 日韩国产在线 | 天堂在线91 | 国产亚洲精品a | 国产精品美女久久久久久不卡 | 国产美女视频黄a视频免费 国产精品福利视频 | 综合视频在线 | 一区二区三区四区日韩 | 日韩成人一区二区 | 天天综合久久 | 欧美午夜精品久久久久久浪潮 |