Posted in

别乱用 UUID 了,自增 ID 和 UUID 性能差距你测过吗?_AI阅读总结 — 包阅AI

包阅导读总结

1. 关键词:自增 ID、UUID、性能差距、用户表、主键

2. 总结:

– 文中对比了以自增 ID 和 UUID 作为主键的两张用户表 `UC_USER` 和 `UC_USER_PK_VARCHAR_1` 的结构。

– 强调了考虑两者性能差距的重要性。

3. 主要内容:

– 一级:用户表对比

– 二级:UC_USER 表

– 以 bigint 类型的自增 ID 为主键。

– 包含众多用户相关字段,如用户名、密码、生日等。

– 定义了多个索引。

– 二级:UC_USER_PK_VARCHAR_1 表

– 以 varchar(36) 类型的 UUID 为主键。

– 表结构与 UC_USER 类似。

– 同样定义了多个索引。

– 一级:性能差距

– 提示应测试自增 ID 和 UUID 的性能差异。

思维导图:

文章地址:https://mp.weixin.qq.com/s/_KXreIFwRwUuJXaHCjZOpA

文章来源:mp.weixin.qq.com

作者:唐宋缘明卿_cris

发布时间:2024/8/26 11:18

语言:中文

总字数:2275字

预计阅读时间:10分钟

评分:88分

标签:数据库性能,自增ID,UUID,数据存储,索引优化


以下为原文内容

本内容来源于用户推荐转载,旨在分享知识与观点,如有侵权请联系删除 联系邮箱 media@ilingban.com

UC_USER,自增ID为主键,表结构类似如下:

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 '用户状态,01:正常,02:冻结',  `USER_MALL` bigint(20) DEFAULT NULL COMMENT '当前所属MALL',  `LAST_LOGIN_DATE` datetime DEFAULT NULL COMMENT '最后登录时间',  `LAST_LOGIN_IP` varchar(100) DEFAULT NULL COMMENT '最后登录IP',  `SRC_OPEN_USER_ID` bigint(20) DEFAULT NULL COMMENT '来源的联合登录',  `EMAIL` varchar(200) DEFAULT NULL COMMENT '邮箱',  `MOBILE` varchar(50) DEFAULT NULL COMMENT '手机',  `IS_DEL` char(1) DEFAULT '0' COMMENT '是否删除',  `IS_EMAIL_CONFIRMED` char(1) DEFAULT '0' COMMENT '是否绑定邮箱',  `IS_PHONE_CONFIRMED` char(1) DEFAULT '0' COMMENT '是否绑定手机',  `CREATER` bigint(20) DEFAULT NULL COMMENT '创建人',  `CREATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',  `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改日期',  `PWD_INTENSITY` char(1) DEFAULT NULL COMMENT '密码强度',  `MOBILE_TGC` char(64) DEFAULT NULL COMMENT '手机登录标识',  `MAC` char(64) DEFAULT NULL COMMENT 'mac地址',  `SOURCE` char(1) DEFAULT '0' COMMENT '1:WEB,2:IOS,3:ANDROID,4:WIFI,5:管理系统, 0:未知',  `ACTIVATE` char(1) DEFAULT '1' COMMENT '激活,1:激活,0:未激活',  `ACTIVATE_TYPE` char(1) DEFAULT '0' COMMENT '激活类型,0:自动,1:手动',  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 '用户状态,01:正常,02:冻结',  `USER_MALL` bigint(20) DEFAULT NULL COMMENT '当前所属MALL',  `LAST_LOGIN_DATE` datetime DEFAULT NULL COMMENT '最后登录时间',  `LAST_LOGIN_IP` varchar(100) DEFAULT NULL COMMENT '最后登录IP',  `SRC_OPEN_USER_ID` bigint(20) DEFAULT NULL COMMENT '来源的联合登录',  `EMAIL` varchar(200) DEFAULT NULL COMMENT '邮箱',  `MOBILE` varchar(50) DEFAULT NULL COMMENT '手机',  `IS_DEL` char(1) DEFAULT '0' COMMENT '是否删除',  `IS_EMAIL_CONFIRMED` char(1) DEFAULT '0' COMMENT '是否绑定邮箱',  `IS_PHONE_CONFIRMED` char(1) DEFAULT '0' COMMENT '是否绑定手机',  `CREATER` bigint(20) DEFAULT NULL COMMENT '创建人',  `CREATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',  `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改日期',  `PWD_INTENSITY` char(1) DEFAULT NULL COMMENT '密码强度',  `MOBILE_TGC` char(64) DEFAULT NULL COMMENT '手机登录标识',  `MAC` char(64) DEFAULT NULL COMMENT 'mac地址',  `SOURCE` char(1) DEFAULT '0' COMMENT '1:WEB,2:IOS,3:ANDROID,4:WIFI,5:管理系统, 0:未知',  `ACTIVATE` char(1) DEFAULT '1' COMMENT '激活,1:激活,0:未激活',  `ACTIVATE_TYPE` char(1) DEFAULT '0' COMMENT '激活类型,0:自动,1:手动',  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='用户表';