Mysql 默认生成分布式主键UUID

-- 随便创建一张表

create table zhilian(
    id varchar(55) primary key comment"主键ID",
    name varchar(100) comment"公司名称",
    city varchar(20) comment"城市",
    positionURL  varchar(100) comment"网址",
    welfare varchar(100) comment"公司福利",
    salary varchar(20) comment"薪资范围",
    workingExp varchar(20) comment"工作经验",
    jobName varchar(20) comment"职位",
    eduLevel varchar(10) comment"学历",
    emplType varchar(10) comment"职位类型",
    updateDate timestamp comment"更新时间"
)engine=Innodb default charset="UTF8"

 

-- 利用触发器实现新增数据,默认生成UUID
create trigger default_uuid BEFORE INSERT ON zhilian
FOR EACH ROW 
begin
    if (new.id='' or new.id is null) then
         set new.id= uuid();  
    end if;
end;

-- 测试

INSERT INTO zhilian( name, city, positionURL, welfare, salary, workingExp, jobName, eduLevel, emplType, updateDate) 
   VALUES('1', '2', '3', '4', '5', '6', '7', '8', '9', '2019-3-16')
GO
-- 数据新增成功

 

 

MySQL官方不议使用UUID作为主键的原因有以下几点: 1. 存储空间占用:UUID是一个128位的字符串,相比于自增的整数类型主键,它需要更多的存储空间。这在大规模的数据中会占用较多的磁盘空间,影响数据库性能。 2. 索引效率:UUID是随机生成的字符串,不具有连续性。在使用UUID作为主键时,每次插入新记录都需要在索引树中找到合适的位置,这会导致索引的频繁更新和碎片化,降低了查询效率。 3. 数据库性能:由于UUID是随机生成的,插入新记录时需要生成一个唯一的UUID值。这个过程需要消耗较多的计算资源,对于高并发的数据库操作来说,会增加数据库的负载,降低性能。 4. 数据库复制和同步:如果使用UUID作为主键,那么在数据库复制和同步的过程中,会增加数据传输的开销。因为UUID是随机生成的,每个节点生成UUID值都不同,导致数据同步时需要传输更多的数据。 综上所述,MySQL官方推荐使用自增的整数类型主键(如auto_increment)而不是UUID作为主键,这样可以提高数据库的性能和效率。但是在某些特定的场景下,如分布式系统或需要跨数据库同步的情况下,使用UUID作为主键可能更合适。 #### 引用[.reference_title] - *1* [MySql为什么不推荐使用UUID主键](https://blog.youkuaiyun.com/chenwiehuang/article/details/123420278)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [MySQL中如何将主键默认值设为UUID()](https://blog.youkuaiyun.com/qq_43739097/article/details/104383456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值