MSSQL Server’da Sequence Nedir

SQL Server 2012 ile hayatımıza giren Sequence, belirli bir düzene göre (artan veya azalan) sayısal değerler üreten, tablolardan bağımsız bir veritabanı nesnesidir. Birçok yönden IDENTITY sütununa benzese de, sunduğu esneklik ve yönetim kolaylığı ile modern veritabanı tasarımlarında kritik bir rol oynar.

Geleneksel yöntemlerde otomatik artan sayılar için IDENTITY özelliğini kullanırız. Ancak IDENTITY, tanımlandığı tabloya sıkı sıkıya bağlıdır. Sequence ise tamamen bağımsız bir nesnedir.

Temel Amacı:

  • Benzersiz sayısal anahtarlar üretmek.
  • Birden fazla tablo arasında ortak bir numara havuzu oluşturmak.
  • Uygulama katmanında, veriyi tabloya eklemeden önce bir numara rezerve etmek.

Bir Sequence oluştururken başlangıç değeri, artış miktarı ve sınırları gibi parametreleri biz belirleriz.

Aşağıdaki örnekte 1000’den başlayan ve 1’er 1’er artan bir dizi oluşturuyoruz:

CREATE SEQUENCE dbo.MusteriNo_Dizisi
    AS INT
    START WITH 1000
    INCREMENT BY 1
    MINVALUE 1000
    MAXVALUE 999999
    CACHE 10; -- Performans için 10'arlı gruplar halinde belleğe alır

Oluşturduğumuz diziden bir sonraki numarayı almak için NEXT VALUE FOR komutunu kullanırız:

SELECT NEXT VALUE FOR dbo.MusteriNo_Dizisi;

Tablo İçinde Kullanım

Bir tabloya veri eklerken Sequence değerini doğrudan kullanabiliriz:

INSERT INTO Personel (Id, Ad)
VALUES (NEXT VALUE FOR dbo.MusteriNo_Dizisi, 'Ahmet Yılmaz');

Sequence nesnesinin IDENTITY yerine tercih edildiği temel senaryolar şunlardır:

  • Ortak Numara Havuzu: Örneğin; “Bireysel Müşteriler” ve “Kurumsal Müşteriler” adında iki farklı tablonuz var. Her iki tablodaki müşterilerin de benzersiz bir MusteriNo almasını istiyorsanız, tek bir Sequence her iki tablo için de numara üretebilir.
  • Insert Öncesi Numara Alma: Uygulamanızın, kaydı henüz kaydetmeden önce kullanıcıya bir referans numarası göstermesi gerekiyorsa Sequence mükemmel çözümdür.
  • Döngüsel Numaralandırma (CYCLE): Belirli bir sayıya ulaştığında tekrar başa dönmesi gereken (örneğin aylık sıra numaraları) senaryolarda kullanılır.
  • Toplu İşlemler (Batch Processing): Büyük miktarda veri girişi yapılırken CACHE özelliği sayesinde IDENTITY’ye göre daha yüksek performans sunar.

Identity vs Sequence: Temel Farklar

ÖzellikIDENTITYSEQUENCE
BağımlılıkTabloya ve sütuna bağlıdır.Tablodan bağımsız bir nesnedir.
Değer PaylaşımıSadece tanımlandığı sütunda artar.Birden fazla tablo tarafından kullanılabilir.
Değer AtamaSET IDENTITY_INSERT açılmadan manuel değer girilemez.İstenilen her an çağrılabilir.
Başa DönmeMaksimum değere ulaşınca durur.CYCLE özelliği ile başa dönebilir.

Eğer sadece bir tablonun kendi içinde artan bir ID’ye ihtiyacı varsa IDENTITY hala en basit yoldur. Ancak, numara yönetimini merkezileştirmek, farklı tabloları aynı dizide birleştirmek veya uygulama tarafında numara rezerve etmek istiyorsanız Sequence kullanmanız gereken modern ve esnek bir araçtır.

Başka makalede görüşmek dileğiyle..

İsraf etmeyin. İsra-26

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir