SQL Server’da 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. Küresel anlamda bir benzersizlik vaad eden GUID (Globally Unique Identifier) INTEL firması tarafından bulunmuştur.
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.

select_NewSequantialID_t_sql

[sql]

CREATE TABLE [dbo].[TBL_GUID](
[ID] [uniqueidentifier] DEFAULT (newsequentialid()),
[Value] [varchar](10) NULL
)

[/sql]

table_desing

Oluşturduğumuz tabloya kayıtlarımızı ekledikten sonra sorguladığımızda GUID değerin otomatik arttığı görülmektedir.

sql_result_window

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.

Mesut Güneş

Selçuk Üniversitesi Bilgisayar programcılığı bölümünden mezun olduktan sonra birçok firmada Yazılım, İş zekası ve Veritabanı Uzmanı olarak çalıştım. Şuan Türkiye’nin en büyük şirketlerinden biri olan Doğan Online’da Veritabanı Yöneticisi olarak çalışıyorum.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.