准备表&数据
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='用户表';
500w级数据测试
mysql> select count(1) from UC_USER;+----------+| count(1) |+----------+| 5720112 |+----------+1 row in set (0.00 sec)# uuid为主键的表mysql> select count(1) from UC_USER_PK_VARCHAR_1;+----------+| count(1) |+----------+| 5720112 |+----------+1 row in set (1.91 sec)
1、录入500W数据,自增ID节省一半磁盘空间
占据的空间容量来看,自增ID比UUID小一半左右。

2、单个数据走索引查询,自增id和uuid相差不大

3、范围like查询,自增ID性能优于UUID

4、写入测试,自增ID是UUID的4倍

5、备份和恢复,自增ID性能优于UUID

500W总结
1000W总结
自增ID主键+步长,适合中等规模的分布式场景
UUID,适合小规模的分布式环境
如果字段的最大可能长度超过255字节,那么长度值可能…
只能说作者太用心了,优秀
感谢详解
一般干个7-8年(即30岁左右),能做到年入40w-50w;有…
230721