【SQL】別亂用UUID了,自增長ID和UUID性能差距你測(cè)過嗎?
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
準(zhǔn)備表&數(shù)據(jù) UC_USER,自增ID為主鍵,表結(jié)構(gòu)類似如下: CREATE TABLE `UC_USER` ( `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `USER_NAME` varchar(100) DEFAULT NULL COMMENT '用戶名', `USER_PWD` varchar(200) DEFAULT NULL COMMENT '密碼', `BIRTHDAY` datetime DEFAULT NULL COMMENT '生日', `NAME` varchar(200) DEFAULT NULL COMMENT '姓名', `USER_ICON` varchar(500) DEFAULT NULL COMMENT '頭像圖片', `SEX` char(1) DEFAULT NULL COMMENT '性別, 1:男,2:女,3:保密', `NICKNAME` varchar(200) DEFAULT NULL COMMENT '昵稱', `STAT` varchar(10) DEFAULT NULL COMMENT '用戶狀態(tài),01:正常,02:凍結(jié)', `USER_MALL` bigint(20) DEFAULT NULL COMMENT '當(dāng)前所屬M(fèi)ALL', `LAST_LOGIN_DATE` datetime DEFAULT NULL COMMENT '最后登錄時(shí)間', `LAST_LOGIN_IP` varchar(100) DEFAULT NULL COMMENT '最后登錄IP', `SRC_OPEN_USER_ID` bigint(20) DEFAULT NULL COMMENT '來源的聯(lián)合登錄', `EMAIL` varchar(200) DEFAULT NULL COMMENT '郵箱', `MOBILE` varchar(50) DEFAULT NULL COMMENT '手機(jī)', `IS_DEL` char(1) DEFAULT '0' COMMENT '是否刪除', `IS_EMAIL_CONFIRMED` char(1) DEFAULT '0' COMMENT '是否綁定郵箱', `IS_PHONE_CONFIRMED` char(1) DEFAULT '0' COMMENT '是否綁定手機(jī)', `CREATER` bigint(20) DEFAULT NULL COMMENT '創(chuàng)建人', `CREATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注冊(cè)時(shí)間', `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改日期', `PWD_INTENSITY` char(1) DEFAULT NULL COMMENT '密碼強(qiáng)度', `MOBILE_TGC` char(64) DEFAULT NULL COMMENT '手機(jī)登錄標(biāo)識(shí)', `MAC` char(64) DEFAULT NULL COMMENT 'mac地址', `SOURCE` char(1) DEFAULT '0' COMMENT '1:WEB,2:IOS,3:ANDROID,4:WIFI,5:管理系統(tǒng), 0:未知', `ACTIVATE` char(1) DEFAULT '1' COMMENT '激活,1:激活,0:未激活', `ACTIVATE_TYPE` char(1) DEFAULT '0' COMMENT '激活類型,0:自動(dòng),1:手動(dòng)', PRIMARY KEY (`ID`), UNIQUE KEY `USER_NAME` (`USER_NAME`), KEY `MOBILE` (`MOBILE`), KEY `IDX_MOBILE_TGC` (`MOBILE_TGC`,`ID`), KEY `IDX_EMAIL` (`EMAIL`,`ID`), KEY `IDX_CREATE_DATE` (`CREATE_DATE`,`ID`), KEY `IDX_UPDATE_DATE` (`UPDATE_DATE`)) ENGINE=InnoDB AUTO_INCREMENT=7122681 DEFAULT CHARSET=utf8 COMMENT='用戶表' UC_USER_PK_VARCHAR表,字符串ID為主鍵,采用uuid: CREATE TABLE `UC_USER_PK_VARCHAR_1` ( `ID` varchar(36) CHARACTER SET utf8mb4 NOT NULL DEFAULT '0' COMMENT '主鍵', `USER_NAME` varchar(100) DEFAULT NULL COMMENT '用戶名', `USER_PWD` varchar(200) DEFAULT NULL COMMENT '密碼', `BIRTHDAY` datetime DEFAULT NULL COMMENT '生日', `NAME` varchar(200) DEFAULT NULL COMMENT '姓名', `USER_ICON` varchar(500) DEFAULT NULL COMMENT '頭像圖片', `SEX` char(1) DEFAULT NULL COMMENT '性別, 1:男,2:女,3:保密', `NICKNAME` varchar(200) DEFAULT NULL COMMENT '昵稱', `STAT` varchar(10) DEFAULT NULL COMMENT '用戶狀態(tài),01:正常,02:凍結(jié)', `USER_MALL` bigint(20) DEFAULT NULL COMMENT '當(dāng)前所屬M(fèi)ALL', `LAST_LOGIN_DATE` datetime DEFAULT NULL COMMENT '最后登錄時(shí)間', `LAST_LOGIN_IP` varchar(100) DEFAULT NULL COMMENT '最后登錄IP', `SRC_OPEN_USER_ID` bigint(20) DEFAULT NULL COMMENT '來源的聯(lián)合登錄', `EMAIL` varchar(200) DEFAULT NULL COMMENT '郵箱', `MOBILE` varchar(50) DEFAULT NULL COMMENT '手機(jī)', `IS_DEL` char(1) DEFAULT '0' COMMENT '是否刪除', `IS_EMAIL_CONFIRMED` char(1) DEFAULT '0' COMMENT '是否綁定郵箱', `IS_PHONE_CONFIRMED` char(1) DEFAULT '0' COMMENT '是否綁定手機(jī)', `CREATER` bigint(20) DEFAULT NULL COMMENT '創(chuàng)建人', `CREATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注冊(cè)時(shí)間', `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改日期', `PWD_INTENSITY` char(1) DEFAULT NULL COMMENT '密碼強(qiáng)度', `MOBILE_TGC` char(64) DEFAULT NULL COMMENT '手機(jī)登錄標(biāo)識(shí)', `MAC` char(64) DEFAULT NULL COMMENT 'mac地址', `SOURCE` char(1) DEFAULT '0' COMMENT '1:WEB,2:IOS,3:ANDROID,4:WIFI,5:管理系統(tǒng), 0:未知', `ACTIVATE` char(1) DEFAULT '1' COMMENT '激活,1:激活,0:未激活', `ACTIVATE_TYPE` char(1) DEFAULT '0' COMMENT '激活類型,0:自動(dòng),1:手動(dòng)', PRIMARY KEY (`ID`), UNIQUE KEY `USER_NAME` (`USER_NAME`), KEY `MOBILE` (`MOBILE`), KEY `IDX_MOBILE_TGC` (`MOBILE_TGC`,`ID`), KEY `IDX_EMAIL` (`EMAIL`,`ID`), KEY `IDX_CREATE_DATE` (`CREATE_DATE`,`ID`), KEY `IDX_UPDATE_DATE` (`UPDATE_DATE`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表'; 500w級(jí)數(shù)據(jù)測(cè)試
1、錄入500W數(shù)據(jù),自增ID節(jié)省一半磁盤空間 占據(jù)的空間容量來看,自增ID比UUID小一半左右。 2、單個(gè)數(shù)據(jù)走索引查詢,自增id和uuid相差不大 3、范圍like查詢,自增ID性能優(yōu)于UUID 4、寫入測(cè)試,自增ID是UUID的4倍 5、備份和恢復(fù),自增ID性能優(yōu)于UUID
500W總結(jié) 1000W總結(jié) 自增ID主鍵+步長,適合中等規(guī)模的分布式場(chǎng)景
UUID,適合小規(guī)模的分布式環(huán)境
該文章在 2024/8/27 10:22:07 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |