yitter / IdGenerator

💎多语言实现,高性能生成唯一数字ID。 💎优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1s)。 💎原生支持 C#/Java/Go/Rust/C/JavaScript/TypeScript/Python/Pascal 多语言,提供其它适用于其它语言的多线程安全调用动态库(FFI)。💎支持容器环境自动扩容(自动注册 WorkerId ),单机或分布式唯一IdGenerator。💎顶尖优化,超强效能。
MIT License
2.59k stars 371 forks source link

SQL版产生重复ID #94

Open ap0405140 opened 9 months ago

ap0405140 commented 9 months ago

https://github.com/yitter/IdGenerator/blob/master/SQL/sqlserver.sql 的脚本创建函数, 测试产生有重复ID. 测试脚本如下:

-- 建测试表,并产生1000个ID if object_id('tempdb..#r') is not null drop table #r

create table #r ( rn int identity(1,1) not null, id bigint not null )

set nocount on declare @a int,@b int select @a=1,@b=1000 while(@a<=@b) begin insert into #r(id) select id=dbo.Fn_NextSnowId(rand()) select @a=@a+1 end set nocount off

-- 结果有重复 select id,count(1) from #r group by id having count(1)>1

yitter commented 8 months ago

SQL版本理论上会产生重复数,不要用于高并发生产环境