SAP HANA Eğitimi: Sıra Oluşturma

⚡ Akıllı Özet

Sıralama Oluştur SAP HANA, sayısal değerlerin artan bir listesini otomatik olarak oluşturan bir veritabanı nesnesi tanımlar. Parametreler, oluşturucunun başlangıç ​​değerini, artış miktarını, sınırlarını, döngüsünü ve önbelleğe alma davranışını kontrol eder.

  • 🔢 Temel Tanım: Bir dizi, belirtilen kurala göre, artan veya azalan sırada sayılar üretir.
  • 🔗 Tablo Bağlaması Yok: Diziler, herhangi bir tabloya bağlı olmak yerine uygulama tarafından kullanılan bağımsız nesnelerdir.
  • 📍 İki Değer: CURRVAL mevcut değeri döndürür ve NEXTVAL sıralamayı ilerletir ve yeni değeri döndürür.
  • 🎚️ Anahtar Parametreler: START WITH, INCREMENT BY, MAXVALUE, MINVALUE, CYCLE ve CACHE komutları çıktıyı şekillendirir.
  • ♻️ Bisiklet sürmek: CYCLE komutu numaralandırmayı limitten yeniden başlatır; NO CYCLE varsayılan değerdir ve bunun yerine bir hata verir.
  • ⚡ Önbelleğe almak: CACHE, hız için her düğümde bir sayı bloğu ayırır; CACHE YOK varsayılan değerdir.
  • 🔄 Sıfırlama Seçeneği: RESET BY komutu, veritabanı yeniden başlatıldığında bir alt sorgu çalıştırır ve döndürdüğü değerden devam eder.

Sırayı oluştur SAP HANA

Sıra Nedir?

Sıra, sıra belirtiminde belirtilen kurala göre artan sayısal değerler listesini otomatik olarak üreten bir veritabanı nesnesidir.

Örneğin Tablonun (EMPLOYEE_NO) sütununa çalışan numarasını otomatik olarak eklemek için tabloya yeni bir kayıt eklendiğinde sırayı kullanırız.

Sıra değerleri Artan veya Azalan sırada oluşturulur.

Diziler tablolarla ilişkilendirilmez; uygulama tarafından kullanılırlar. Sırayla iki değer vardır –

  • CURRVAL – Dizinin Geçerli değerini sağlar.
  • NEXTVAL – Sıranın Sonraki değerini sağlar.

SÖZDİZİMİ

CREATE SEQUENCE <sequence_name> [<sequence_parameter_list>] [RESET BY <subquery>]

SÖZ DİZİMİ ÖĞELERİ

ELEMENTLER AÇIKLAMA
Bu dizinin adıdır.
[ ] Bir veya daha fazla sıra parametresini belirtir.
İLE BAŞLA Başlangıç ​​sırası değerini açıklar.
ARTIRMA ŞEKLİ Bu, yeni sıra değeri her oluşturulduğunda atanan son değerden artırılacak değeri belirtir. Varsayılan 1'dir.
MAKSİMUM DEĞER Bu, dizinin üretebileceği maksimum değeri belirtir. -4611686018427387903 ile 4611686018427387902 arasında olabilir.
MAKS DEĞER YOK NO MAXVALUE belirtildiğinde, artan bir sıralama için maksimum değer 4611686018427387903, azalan bir sıralama için ise minimum değer -1 olacaktır.
MİNDEĞER / MIN DEĞER YOK Bu, bir dizinin üretebileceği minimum değeri belirtir. -4611686018427387904 ile 4611686018427387902 arasında olabilir. NO MINVALUE kullanıldığında, artan bir dizinin minimum değeri 1'dir.
DÖNGÜ CYCLE yönergesi, sıra numarasının maksimum veya minimum değerine ulaştıktan sonra yeniden başlatılacağını belirtir.
DÖNGÜ YOK Varsayılan seçenek. NO CYCLE yönergesi, sıra numarasının maksimum veya minimum değerine ulaştıktan sonra yeniden başlatılmayacağını belirtir.
ÖNBELLEK Önbellek boyutu, bir düğümde hangi sıra numarası aralığının önbelleğe alınacağını belirtir. İşaretsiz tamsayı olmalıdır.
ÖNbellek yok Varsayılan seçenek. NO CACHE yönergesi, sıra numarasının bir düğümde önbelleğe alınmayacağını belirtir.
SIFIRLAMA ŞEKLİ Veritabanının yeniden başlatılması sırasında veritabanının otomatik olarak çalıştırılacağını belirtir. ve sıra değeri döndürülen değerle yeniden başlatılır.

Örnek -

DHK_SCHEMA.EMP_NO isimli bir dizi oluşturacağız ve bu dizi kullanıldığında her seferinde dizinin değerini +1 artıracağız.

Sıra Komut Dosyası –

CREATE SEQUENCE DHK_SCHEMA.EMP_NO START WITH 100 INCREMENT BY 1;

Burada, seçme sorgusu her yürütüldüğünde çalışan no'nun değerini +1 artırmak için aşağıdaki örnekte nesne "sırasını" kullanacağız. Sorguda “nextval” seri numarası üretimi veya aynı tür gereksinim için kullanılabilir.

Sıranın Kullanımı –

SELECT DHK_SCHEMA.EMP_NO.nextval FROM DUMMY;

ÇIKTI – 100, 101, 102… ve yukarıdaki select sorgusunun her çalıştırılması için bu şekilde devam eder.

Tabloda Sıralama Nasıl Kullanılır?

Yukarıdaki örnek bir sayı döndürüyor ancak bu sayıyı hiçbir yere kaydetmiyor. Üç farklı yöntem, bir diziyi gerçek verilere bağlar ve doğru seçim, uygulamanın ne kadar kontrole ihtiyaç duyduğuna bağlıdır.

1) INSERT işleminde doğrudan NEXTVAL'i çağırın. En açık yaklaşım. Uygulama, bir sayının ne zaman tüketileceğine karar verir.

CREATE COLUMN TABLE DHK_SCHEMA.EMPLOYEE (
  EMPLOYEE_NO INTEGER NOT NULL,
  EMP_NAME    NVARCHAR(100),
  PRIMARY KEY (EMPLOYEE_NO)
);

INSERT INTO DHK_SCHEMA.EMPLOYEE
  VALUES (DHK_SCHEMA.EMP_NO.NEXTVAL, 'Anita Sharma');

2) Sırayı sütun varsayılanı olarak kullanın. Ekleme işleminde sütun belirtilmese bile numara atanır; bu da sıralama bilgisini bilmek üzere yazılmamış uygulamalar için uygundur.

CREATE COLUMN TABLE DHK_SCHEMA.EMPLOYEE2 (
  EMPLOYEE_NO INTEGER DEFAULT DHK_SCHEMA.EMP_NO.NEXTVAL,
  EMP_NAME    NVARCHAR(100)
);

INSERT INTO DHK_SCHEMA.EMPLOYEE2 (EMP_NAME) VALUES ('Ravi Kumar');

3) Az önce verilen değeri okuyun. CURRVAL, bu oturumun aldığı son sayıyı döndürür; bu sayede alt satır, yeni eklenen üst satıra bağlanır.

SELECT DHK_SCHEMA.EMP_NO.CURRVAL FROM DUMMY;

⚠️Uyarı: CURRVAL, geçerli oturumda NEXTVAL en az bir kez çağrılana kadar hata verir. Küresel maksimum değeri değil, bu oturuma verilen değeri bildirir; bu nedenle iki oturum aynı anda farklı geçerli değerlere sahip olabilir.

Sıralı Sütun vs. Kimlik Sütunu

SAP HANA ayrıca, ayrı bir nesneye gerek kalmadan sayı üreten bir birim sütunu da sunmaktadır. İki yöntem de aynı sorunu farklı şekillerde çözmektedir.

Parametre Dizi Kimlik sütunu
Nesne türü Bağımsız veritabanı nesnesi Bir tablonun sütun özelliği
Masalar arasında paylaşıldı Evet, istenilen sayıda tablo bundan yararlanabilir. Hayır, tek bir sütuna ait.
Eklemeden önce görülebilen değer Evet, NEXTVAL aracılığıyla. Hayır, ekleme sırasında oluşturuldu.
Tanım SIRA OLUŞTUR VARSAYILAN OLARAK KİMLİK OLARAK OLUŞTURULMUŞTUR
İçin en iyisi Paylaşımlı numaralandırma, ebeveyn ve çocuk eklemeleri Bir tabloda basit bir yedek anahtar

Satır oluşturulmadan önce numaranın bilinmesi gerektiğinde veya birden fazla tablo aynı numaralandırma serisini paylaştığında bir sıra seçin. Daha geniş bir gereksinim olmaksızın basit bir vekil anahtar için birim sütun seçin.

Sıralamaları Yönetme: ALTER, DROP ve Boşluklar

Bir işlem dizisi nadiren ilk oluşturulduğu gibi kalır. Üç bakım görevi tekrar tekrar ortaya çıkar.

Davranışı değiştirmek. ALTER SEQUENCE, mevcut bir dizinin artışını, sınırlarını veya döngüsünü silme işlemi yapmadan ayarlar.ping "it.RESTART WITH" komutu sayacı sıfırlar; bu, test verilerinin yeniden yüklenmesinden sonra genellikle yapılan bir işlemdir.

ALTER SEQUENCE DHK_SCHEMA.EMP_NO RESTART WITH 1000;
ALTER SEQUENCE DHK_SCHEMA.EMP_NO INCREMENT BY 10;
DROP SEQUENCE DHK_SCHEMA.EMP_NO;

Eksiklikleri anlamak. Sıra numaralarının ardışık olması garanti edilmez ve bu durum, kesintisiz bir denetim izi bekleyenleri şaşırtabilir. Boşluklar üç nedenden dolayı ortaya çıkar:

  • Geri alınan işlemler. NEXTVAL işlemsel değildir. Daha sonra geri alınan bir ekleme işlemi tarafından kullanılan bir sayı asla yeniden verilmez.
  • Önbelleğe almak. CACHE 100 ile bir düğüm aynı anda yüz değer ayırır. Yeniden başlatma, o blokta kullanılmayan her şeyi atar.
  • Eş zamanlı oturumlar. Eş zamanlı olarak veri ekleyen iki oturum, sayılarını birbirine karıştırır, böylece hiçbiri kesintisiz bir çalışma görmez.

Pratik kural, bir diziyi benzersiz tanımlayıcıların kaynağı olarak ele almak, asla kaç satır olduğunu gösteren bir sayaç olarak görmemektir. Fatura numaralandırması gibi kesintisiz bir serinin yasal bir gereklilik olduğu durumlarda, bu seri veritabanı dizisi yerine kendi kontrollerine sahip uygulama mantığı tarafından oluşturulmalıdır.

Var olanı bulmak. Sistem görünümü olan DİZİLER, her diziyi mevcut değeriyle birlikte listeler; bu, bir şemayı denetlemenin en hızlı yoludur. İlgili sözdizimi şu bölümde ele alınmıştır: SAP HANA SQL'i ve sütun tanımlarında SAP HANA veri tipleri.

SSS

Geri alınan işlemler, yeniden başlatmada kaybolan önbelleğe alınmış bloklar ve eşzamanlı oturumlar boşluklar yaratır. Bir sıra, benzersizliği garanti eder, asla sürekli bir değer dizisi değil.

Evet. Bir dizi herhangi bir tablodan bağımsızdır, bu nedenle birden fazla tablo ondan yararlanabilir. Bu, tanımlayıcıların tablo başına değil, tüm şema genelinde benzersiz olması gerektiğinde kullanışlıdır.

Evet. Ekleme verimliliğini analiz etmek, bir düğümün yeniden başlatmalar arasında kaç değer tükettiğini gösterir; bu da önbelleklemenin hız kazanımını, yarattığı boşlukların boyutuyla dengeler.

Evet. Mevcut değerleri MAXVALUE ve tüketim oranıyla karşılaştırmak tükenmeyi öngörür, böylece üretimde eklemeler başarısız olmaya başlamadan önce bir dizi genişletilir.

Çünkü NEXTVAL mevcut oturumda çağrılmadı. CURRVAL bu oturuma verilen değeri bildirir, bu nedenle bir değer alınana kadar bildirecek bir şeyi yoktur.

Bu yazıyı şu şekilde özetleyin: