小編給大家分享一下MySQL中采用uuid而不使用自增ID有什么優(yōu)勢(shì),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
10年積累的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有甘孜州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
采用uuid而不使用自增ID的,
優(yōu)勢(shì):
1、數(shù)據(jù)遷移時(shí)不會(huì)有主鍵沖突。
2、在使用分布式架構(gòu)的主主同步時(shí),也無(wú)需配置auto_increment_offset/auto_increment_increment,保證搭建比較簡(jiǎn)單。
劣勢(shì):
1、uuid比bigint占用存儲(chǔ)空間大。
2、數(shù)據(jù)量達(dá)到500w以上性能明顯沒(méi)有bigint快。
(性能從哪些方面去比較呢?)
單條查詢,
范圍查詢,
范圍統(tǒng)計(jì),
插入,
更新,
備份恢復(fù)。
#######################################################
#這里我們只做了一個(gè)單條查詢的效率比較
#######################################################
環(huán)境:?jiǎn)蝹€(gè)臺(tái)式機(jī)
ubuntu 14.04 64位,
cpu cores=2
mem=7935M
測(cè)試步驟:
1、分別創(chuàng)建以id,uuid為主鍵的表。
2、分別插入100w條記錄(編寫存儲(chǔ)過(guò)程生成測(cè)試數(shù)據(jù),收獲:需要關(guān)閉自動(dòng)提交,效率大大的提升)。
3、分別以id ,uuid執(zhí)行單條查詢。
4、比較查詢時(shí)間
最后結(jié)果都是在0秒以內(nèi)完成。
腳本見(jiàn)附件。
#################################
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `p_product_uuid`$$
CREATE DEFINER=`root`@`%` PROCEDURE `p_product_uuid`(IN n BIGINT)
BEGIN
DECLARE i INT DEFAULT 1 ;
SET autocommit = 0;
WHILE
(i <= n) DO
INSERT INTO tmp_id_uuid (id, UUID)
VALUES
(i, UUID()) ;
SET i = i + 1 ;
END WHILE ;
COMMIT;
SET autocommit = 1;
END$$
DELIMITER ;
#####################################
ps:在調(diào)試過(guò)程中,遇到sql一直在執(zhí)行,需要停止掉,處理方式如下:
show processlist;
找出你要停止的語(yǔ)句
然后找出你要終止的語(yǔ)句的id
在系統(tǒng)下mysqladmin -uroot -ppassword kill 要?dú)⒌腎D
#####################################
mysql> truncate table tmp_id_uuid;
Query OK, 0 rows affected (0.14 sec)
mysql> select count(*) from tmp_id_uuid;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
mysql> call p_product_uuid(100000);
Query OK, 0 rows affected (5.16 sec)
mysql> select count(*) from tmp_id_uuid;
+----------+
| count(*) |
+----------+
| 100000 |
+----------+
1 row in set (0.04 sec)
mysql> truncate table tmp_id_uuid;
Query OK, 0 rows affected (0.15 sec)
mysql> call p_product_uuid(1000000);
Query OK, 0 rows affected (43.03 sec)
mysql> create table tmp2_id_uuid as select * from tmp_id_uuid;
Query OK, 1000000 rows affected (18.07 sec)
Records: 1000000 Duplicates: 0 Warnings: 0
mysql> select count(*) from tmp2_id_uuid;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (0.31 sec)
mysql> alter table tmp_id_uuid add primary key (id);
Query OK, 0 rows affected (24.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table tmp2_id_uuid add primary key (uuid);
Query OK, 0 rows affected (25.94 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
mysql>
mysql> flush tables;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from tmp_id_uuid where id=500000;
+--------+--------------------------------------+
| id | uuid |
+--------+--------------------------------------+
| 500000 | e3332083-c743-11e6-bc1e-00e066731e45 |
+--------+--------------------------------------+
1 row in set (0.00 sec)
mysql> flush tables;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from tmp2_id_uuid where uuid='e3332083-c743-11e6-bc1e-00e066731e45';
+--------+--------------------------------------+
| id | uuid |
+--------+--------------------------------------+
| 500000 | e3332083-c743-11e6-bc1e-00e066731e45 |
+--------+--------------------------------------+
1 row in set (0.00 sec)
mysql>
mysql>
以上是“mysql中采用uuid而不使用自增ID有什么優(yōu)勢(shì)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前標(biāo)題:mysql中采用uuid而不使用自增ID有什么優(yōu)勢(shì)
標(biāo)題網(wǎng)址:http://vcdvsql.cn/article30/pehgpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、定制開(kāi)發(fā)、企業(yè)建站、營(yíng)銷型網(wǎng)站建設(shè)、App開(kāi)發(fā)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)