我们在拥有 8000 万行数据的数据库中添加了 UUID 列,并使用 postgres 中的
我们使用以下脚本填充 uuid:
uuid_generate_v4()
函数生成默认值。我们使用以下脚本填充 uuid:
current = 1
batch_size = 1000
last_id = 80000000
while current < last_id
start_id = current
end_id = current + batch_size
puts "WORKING ON current: #{current}"
ActiveRecord::Base.connection.execute <<-SQL.squish
UPDATE table_name
SET public_id = uuid_generate_v4()
WHERE id BETWEEN '#{start_id}' and '#{end_id}' AND public_id IS NULL
SQL
current = end_id + 1
end
然而,在脚本结束时,我们发现有135个重复项,其中一些甚至有3个。这怎么可能?uuid_generate_v4()
函数生成具有如此高概率的重复项吗?