国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫(kù)技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫(kù) - Mysql - 詳解MySQL如何有效的存儲(chǔ)IP地址及字符串IP和數(shù)值之間如何轉(zhuǎn)換

詳解MySQL如何有效的存儲(chǔ)IP地址及字符串IP和數(shù)值之間如何轉(zhuǎn)換

2022-02-17 21:07MikanMu Mysql

本文主要介紹了MySQL如何有效的存儲(chǔ)IP地址及字符串IP和數(shù)值之間如何轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在看高性能MySQL第3版(4.1.7節(jié))時(shí),作者建議當(dāng)存儲(chǔ)IPv4地址時(shí),應(yīng)該使用32位的無(wú)符號(hào)整數(shù)(UNSIGNED INT)來(lái)存儲(chǔ)IP地址,而不是使用字符串。但是沒(méi)有給出具體原因。為了搞清楚這個(gè)原因,查了一些資料,記錄下來(lái)。

相對(duì)字符串存儲(chǔ),使用無(wú)符號(hào)整數(shù)來(lái)存儲(chǔ)有如下的好處:

  • 節(jié)省空間,不管是數(shù)據(jù)存儲(chǔ)空間,還是索引存儲(chǔ)空間
  • 便于使用范圍查詢(xún)(BETWEEN...AND),且效率更高

通常,在保存IPv4地址時(shí),一個(gè)IPv4最小需要7個(gè)字符,最大需要15個(gè)字符,所以,使用VARCHAR(15)即可。MySQL在保存變長(zhǎng)的字符串時(shí),還需要額外的一個(gè)字節(jié)來(lái)保存此字符串的長(zhǎng)度。而如果使用無(wú)符號(hào)整數(shù)來(lái)存儲(chǔ),只需要4個(gè)字節(jié)即可。另外還可以使用4個(gè)字段分別存儲(chǔ)IPv4中的各部分,但是通常這不管是存儲(chǔ)空間和查詢(xún)效率應(yīng)該都不是很高(可能有的場(chǎng)景適合使用這種方式存儲(chǔ))。

使用字符串和無(wú)符號(hào)整數(shù)來(lái)存儲(chǔ)IP的具體性能分析及benchmark,可以看這篇文章

使用無(wú)符號(hào)整數(shù)來(lái)存儲(chǔ)也有缺點(diǎn):

  • 不便于閱讀
  • 需要手動(dòng)轉(zhuǎn)換

對(duì)于轉(zhuǎn)換來(lái)說(shuō),MySQL提供了相應(yīng)的函數(shù)來(lái)把字符串格式的IP轉(zhuǎn)換成整數(shù)INET_ATON,以及把整數(shù)格式的IP轉(zhuǎn)換成字符串的INET_NTOA。如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> select inet_aton('192.168.0.1');
+--------------------------+
| inet_aton('192.168.0.1') |
+--------------------------+
|               3232235521 |
+--------------------------+
1 row in set (0.00 sec)
 
mysql> select inet_ntoa(3232235521);
+-----------------------+
| inet_ntoa(3232235521) |
+-----------------------+
| 192.168.0.1           |
+-----------------------+
1 row in set (0.00 sec)

對(duì)于IPv6來(lái)說(shuō),使用VARBINARY同樣可獲得相同的好處,同時(shí)MySQL也提供了相應(yīng)的轉(zhuǎn)換函數(shù),即INET6_ATON和INET6_NTOA。
對(duì)于轉(zhuǎn)換字符串IPv4和數(shù)值類(lèi)型,可以放在應(yīng)用層,下面是使用java代碼來(lái)對(duì)二者轉(zhuǎn)換:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.mikan;
 
/**
 * @author Mikan
 * @date 2015-09-22 10:59
 */
public class IpLongUtils {
    /**
     * 把字符串IP轉(zhuǎn)換成long
     *
     * @param ipStr 字符串IP
     * @return IP對(duì)應(yīng)的long值
     */
    public static long ip2Long(String ipStr) {
        String[] ip = ipStr.split("\\.");
        return (Long.valueOf(ip[0]) << 24) + (Long.valueOf(ip[1]) << 16)
                + (Long.valueOf(ip[2]) << 8) + Long.valueOf(ip[3]);
    }
 
    /**
     * 把IP的long值轉(zhuǎn)換成字符串
     *
     * @param ipLong IP的long值
     * @return long值對(duì)應(yīng)的字符串
     */
    public static String long2Ip(long ipLong) {
        StringBuilder ip = new StringBuilder();
        ip.append(ipLong >>> 24).append(".");
        ip.append((ipLong >>> 16) & 0xFF).append(".");
        ip.append((ipLong >>> 8) & 0xFF).append(".");
        ip.append(ipLong & 0xFF);
        return ip.toString();
    }
 
    public static void main(String[] args) {
        System.out.println(ip2Long("192.168.0.1"));
        System.out.println(long2Ip(3232235521L));
        System.out.println(ip2Long("10.0.0.1"));
    }
    
}

輸出結(jié)果為:
3232235521
192.168.0.1
167772161

到此這篇關(guān)于詳解MySQL如何有效的存儲(chǔ)IP地址及字符串IP和數(shù)值之間如何轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)MySQL有效存儲(chǔ)IP地址內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/mhmyqn/article/details/48653157

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕视频一区 | www.日韩 | 北条麻妃一区二区免费播放 | а天堂中文最新一区二区三区 | 国产精品毛片在线 | 在线免费看黄 | 精品国产一区二区三区四 | 色女网| 日本一区二区三区四区 | 久草新免费| 亚洲精品国产第一综合99久久 | 在线免费视频一区二区 | 欧美日日| 久久久国产视频 | 国产精品久久久久久久久久久久久久 | 亚洲国产精品久久 | 午夜成人在线视频 | 国产亚洲欧美一区二区 | 亚洲成人久久久 | 欧美一级网站 | 日韩精品一区二区三区在线 | 国产精品欧美久久久久一区二区 | 亚洲一区二区三区四区的 | 在线成人免费 | 精品成人国产在线观看男人呻吟 | 在线观看免费黄色小视频 | 永久看片| 久久精品不卡 | 国产日韩精品一区二区 | 欧美国产在线观看 | 特级西西人体444www高清大胆 | 亚洲欧美视频 | 一区二区三区高清视频在线观看 | 久久精品亚洲精品国产欧美 | 欧美日韩国产一区二区三区 | 久久99综合久久爱伊人 | 免费一级 国产 | 国产精品成人一区二区 | 中文字幕一区二区三区乱码图片 | 高清三区 | 久久性色|