溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL的UUID

發(fā)布時間:2020-07-07 19:23:03 來源:網(wǎng)絡(luò) 閱讀:555 作者:艾弗森哇 欄目:MySQL數(shù)據(jù)庫

MySQL在初始化的時候會產(chǎn)生一個UUID:

[root@mha03 opt]# mysql/bin/mysqld --initialize --user=mysql --basedir=/opt/mysql/ --datadir=/opt/mysql/data/

2019-08-14T03:42:26.588685Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2019-08-14T03:42:26.899821Z 0 [Warning] InnoDB: New log files created, LSN=45790

2019-08-14T03:42:26.944820Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.

2019-08-14T03:42:27.023508Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 88e4e8ea-be45-11e9-b3d0-000c29c8d0f8.

2019-08-14T03:42:27.024729Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.

2019-08-14T03:42:27.026127Z 1 [Note] A temporary password is generated for root@localhost: &didSDjQn2dk


UUID 是 通用唯一識別碼(Universally Unique Identifier)的縮寫,是一種軟件建構(gòu)的標(biāo)準,亦為?開放軟件基金會?組織在?分布式計算?環(huán)境領(lǐng)域的一部分。其目的,是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識信息,而不需要通過中央控制端來做辨識信息的指定。如此一來,每個人都可以創(chuàng)建不與其它人沖突的UUID。在這樣的情況下,就不需考慮數(shù)據(jù)庫創(chuàng)建時的名稱重復(fù)問題。目前最廣泛應(yīng)用的UUID,是?微軟公司?的?全局唯一標(biāo)識符?GUID?),而其他重要的應(yīng)用,則有Linux ext2/ext3文件系統(tǒng)、LUKS加密分區(qū)、GNOME、KDE、Mac OS X等等。另外我們也可以在e2fsprogs包中的UUID庫找到實現(xiàn)。



定義

UUID是由一組32位數(shù)的16進制數(shù)字所構(gòu)成,所以UUID理論上的總數(shù)為16^32=2^128,約等于3.4 x 10^38。也就是說若每納秒產(chǎn)生1兆個UUID,要花100億年才會將所有UUID用完。

UUID的標(biāo)準型式包含32個?16進制?數(shù)字,以連字號分為五段,形式為8-4-4-4-12的32個字符。示例:

550e8400-e29b-41d4-a716-446655440000

UUID亦可刻意重復(fù)以表示同類。例如說?微軟?的?COM?中,所有組件皆必須實現(xiàn)出?IUnknown?接口,方法是產(chǎn)生一個代表IUnknown的UUID。無論是程序試圖訪問組件中的IUnknown接口,或是實現(xiàn)IUnknown接口的組件,只要IUnknown一被使用,皆會被參考至同一個ID:00000000-0000-0000-C000-000000000046。??[1]??

組成

UUID是指在一臺機器上生成的數(shù)字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成的API。按照?開放軟件基金會?(OSF)制定的標(biāo)準計算,用到了以太網(wǎng)卡地址、納秒級時間、芯片ID碼和隨機數(shù)。

UUID由以下幾部分的組合:

(1)當(dāng)前日期和時間,UUID的第一個部分與時間有關(guān),如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同。

(2)時鐘序列。

(3)全局唯一的IEEE機器識別號,如果有網(wǎng)卡,從網(wǎng)卡MAC地址獲得,沒有網(wǎng)卡以其他方式獲得。

UUID的唯一缺陷在于生成的結(jié)果串會比較長。關(guān)于UUID這個標(biāo)準使用最普遍的是微軟的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函數(shù)很簡單地生成UUID,其格式為:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每個 x 是 0-9 或 a-f 范圍內(nèi)的一個十六進制的數(shù)字。而標(biāo)準的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12),可以從cflib 下載CreateGUID() UDF進行轉(zhuǎn)換。??[2]??

(4)在 hibernate(Java orm框架)中, 采用 IP-JVM啟動時間-當(dāng)前時間右移32位-當(dāng)前時間-內(nèi)部計數(shù)(8-8-4-8-4)來組成UUID



UUID作用:

UUID 的目的是讓?分布式系統(tǒng)?中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其它人沖突的 UUID。在這樣的情況下,就不需考慮數(shù)據(jù)庫建立時的名稱重復(fù)問題。目前最廣泛應(yīng)用的 UUID,即是微軟的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的應(yīng)用,則有 Linux ext2/ext3 檔案系統(tǒng)、LUKS 加密分割區(qū)、GNOME、KDE、Mac OS X 等等。?

鄭州不孕不育醫(yī)院:http://jbk.39.net/yiyuanzaixian/zztjyy/


UUID應(yīng)用:


使用UUID的好處在分布式的軟件系統(tǒng)中(比如:DCE/RPC, COM+,CORBA)就能體現(xiàn)出來,它能保證每個節(jié)點所生成的標(biāo)識都不會重復(fù),并且隨著WEB服務(wù)等整合技術(shù)的發(fā)展,UUID的優(yōu)勢將更加明顯。根據(jù)使用的特定機制,UUID不僅需要保證是彼此不相同的,或者最少也是與公元3400年之前其他任何生成的通用唯一?標(biāo)識符?有非常大的區(qū)別。UUID最少在3000+年內(nèi)不會重復(fù)。

通用唯一標(biāo)識符還可以用來指向大多數(shù)的可能的物體。微軟和其他一些軟件公司都傾向使用全球唯一標(biāo)識符(GUID),這也是通用唯一標(biāo)識符的一種類型,可用來指向組建對象模塊對象和其他的?軟件組件?。第一個通用唯一標(biāo)識符是在網(wǎng)絡(luò)計算機系統(tǒng)(NCS)中創(chuàng)建,并且隨后成為?開放軟件基金會?(OSF)的?分布式計算環(huán)境?(DCE)的組件。


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI