Sıralı GUID Oluşturmak – NewSequentialID

Sıralı GUID Oluşturmak – NewSequentialID

GUID dünya üzerinde kim,nerede, ne zaman oluşturulsa oluştursun bir benzeri olmayan 128 Bitlik(16-Byte) bir Unique Identifier (Benzersiz Kimlik) ‘dır.
SQL Server‘da GUID değeri NEWID() fonksiyonu ile elde edebiliyoruz. SQL Server 2008 ile birlikte gelen ve diğer sürümlerde de desteklenen NewSequentialID() fonksiyonu ise bize sıralı bir GUID değeri vermektedir. NewSequentialID() fonksiyonu her çalıştırıldığında sonra GUID değerinden daha büyük bir GUID değeri vereceğini taahhüt eder.

Peki neden sıralı bir GUID değerine ihtiyacımız olabilir?
Günümüzde çok fazla veri kayıt altına alınmaktadır. Veritabanını tasarlayan DBA veya Developer INT veri türünden hatta BIGINT veri türünden daha büyük bir sayıya ulaşabileceğini düşündüğü tablolarda Clustered Index Key olarak uniqueidentifier veri türü kullanmak durumunda kalabilir. Eğer oluşturulan GUID rastgele olarak kullanılırsa, sıralı olarak kullanılmazsa tabloda Fragmantation ve Page Split meydana gelir. Performans açısından olumsuz yönde etki edecektir.
Bu sorunu aşmak için SQL Server NewSequentialID() fonksiyonu ile bizlere sıralı GUID oluşturma imkanı vermektedir.

Not: NewSequentialID() sadece Default constraint olarak kullanılmaya izin vermektedir. NEWID() gibi Select ile birlikte kullanılmaya izin vermez.

 

 

NOT: İşletim sistemi restart’ından sonra NewSequentialID() ile oluşturulan GUID değerin sırasının değişme ve baştan başlama ihtimali vardır. Değer GUID olduğu için benzersizlik açısından sorun teşkil etmeyecektir.

 

 

Hakan AK

Son Yazılar