SQL Server - Indexes.

Slides:



Advertisements
Benzer bir sunumlar
4 SQL- Yapısal Sorgulama Dili
Advertisements

Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
MySQL Veritabanı Sunucusu ve MySQL Veritabanı Kullanımı
Performance Tuning Performans Düzenleme Teknikleri.
B+-Ağaçları.
İkili Ağaçlar İkili Arama Ağaçları
SQL Komutlar 5 Sibel SOMYÜREK.
İndeksler Sibel SOMYÜREK.
EkoPC Bilişim Ltd. Eğitim Hizmetleri
Veri Tabanı Yönetim Sistemleri
Veritabanı Yönetim Sistemleri Hızlı ve Kısa Giriş
VERİ TABANI ve YÖNETİMİ
Veri Tabanı Yönetim Sistemleri
Veri Tabanı Yönetim Sistemleri
VeriTabanı Uygulama. Tabloları yaratmak için MySQL komutları.
BÖLÜM 6 SQL SERVER KOMUTLARI.
4 Veri Bütünlüğü ve Constraint’ler
SQL (STRUCTURED QUERY LANGUAGE)
VERİTABANI TEMEL KAVRAMLARI
Veritabanı Yönetim Sistemleri-I
MIT503 Veri Yapıları ve algoritmalar Veri ağaçları
İndex Yapıları.
SQL Dili ve MySQL Komutları
SQL’e Giriş ve SELECT Komutu
MySQL Operatörleri ve Fonksiyonları
Iletisim Icin : Blog : E - Mail :
VeriTabanı Uygulama.
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
SQL (Structured Query Language). MySQL de Temel Komutlar : CREATE DATABASE isim; verilen isimde bir veri tabanı oluşturur. SHOW DATABASES; Tüm yaratılan.
Veritabanı Kavramları
Veri Tabanı Yönetim Sistemleri 1 Ders 10 VTYS Yaşam Döngüsü ve DDL
SQL Sibel SOMYÜREK.
VERİTABANI YARATMA.
SQL Komutları (2) Uzm. Murat YAZICI.
Veritabanlarına ve SQL'e Giriş Devrim GÜNDÜZ Kivi Bilişim Teknolojileri -
SQL’ e Giriş Uzm. Murat YAZICI.
SİSTEM VERİTABANLARI. Sistem veritabanlarını tanıma. Kendi Login’imizi oluşturma Neler İşleyeceğiz?
Update UPDATE tablo_ismi SET sutun1=‘deger1’ WHERE sutun=deger.
Veritabanı Kavramları
GÜVENL İ K. Sunucu Seviyesinde Güvenlik Master Veritabanı (Kullanıcının gerekli yetkileri var mı?) Authentication Mod ◦ Windows Authentication Mod  Varsayılan.
ADRESİNDEN ÖRNEK VERİ TABANLARINI İNDİRİNİZ
T-SQL 3.K ONU Tablo Tipi Değişkenler. T ABLO TIPI DEĞIŞKENLER KULLANMAK T-SQL de dizi tanımlama nasıl yapılır? Bu sorunun cevabı olarak tablo tipi değişkenleri.
Yeni Veritabanı Oluşturma
PRODECURE, TRIGGER, INDEX, BACKUP
Yapısal Sorgulama Dili SQL VTYS Giriş Hafta 5 Ders Notu.
EurobankTekfen SQL Server DBA Turgay Sahtiyan.
SQL Server’da Index Kavramı
EurobankTekfen SQL Server DBA Turgay Sahtiyan.
Altıncı hafta. Müfredat programı Ödev teslim edenler Mantıksal tasarım ödevini teslim edenler: Belediye Projesi Valilik Projesi Mekan Projesi Konaklama.
View View’ler select ifadesi ile tanımlanmış sanal tablolardır. Temel amacı base tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal.
Veritabanlarına ve SQL'e Giriş Devrim GÜNDÜZ Teknoloji Destek Merkezi --
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
VIEW lerle çalışmak 11.BÖLÜM.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
TETİKLEYİCİ ( Trigger)
Veri Tabanı Yönetim Sistemleri 1 Ders 10 Veri Sözlüğü ve DDL
İNDEKS.
Tablo Tipi Değişkenler
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
Bilgisayar Bilimi Problem Çözme Süreci-2.
NİŞANTAŞI ÜNİVERSİTESİ
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
SQL (STRUCTURED QUERY LANGUAGE)
SQL Server - Triggers.
SQL Server - Stored Procedures
SQL Server - Views.
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-3-DDL
Transaction.
Sunum transkripti:

SQL Server - Indexes

İndeks Yapısı İndeksler, tablolardan veri çekmek için gerekli sorgular çalışırken geçecek olan süreyi azaltmak için kullanılan yapılardır. Verilerin düzensiz bir şekilde dizilmesine «heap / yığın» adı verilir. Kayıtların giriliş sırasına göre dizilmesi de bu şekildedir. Heap şeklindeki bir tabloda belirli bir kayıtı bulmak için bütün kayıtların tek tek kontrol edilmesi gerekir. Bu işlem «table scan / tablo taraması» olarak isimlendirilir. İçerisinde çok miktarda kayıt olan bir tabloda «Table scan» ile kayıt arama, indekse göre kayıt aramaya göre çok daha yavaş kalır. Kayıt sayısının az olduğu durumlarda ise table scan daha hızlı olabilir.

Verilerin belirli bir alana göre fiziksel olarak sıralanması işlemine «Clustered Index (CL)» isimi verilir. Her tablo için bir tane oluşturulabilir. (Örneğin: Bir kütüphanede kitapların raflara kitap isimlerine göre yerleştirilmesi) Non-Clustered (NC) Index’ler, bir clustered index veya Heap üstünden hızlı olarak kayıtlara erişim sağlamak için tanımlanırlar. (Örneğin:Yazar adına göre karşılık gelen kitabın bulunması/eşleştirilmesi gibi) Bir tabloda en fazla 249 tane Non-Clustered index olabilir. Bir çok tabloda NC indexler işlemleri hızlandırırken; küçük tablolarda table scan daha hızlı olabilir. Query optimizer aracılığı ile SQL Server buna kendi karar verir.

Bir sorgunun Execution Plan’ı sorgunun işleyiş aşamaları ile ilgili bilgi verir. (Ctrl+L) SQL Server ve diğer birçok VTYS, indexlerin gerçekleştirilmesinde Balanced Tree (B-tree veya β-tree) algoritmasını kullanır. Buna göre Btree’de yeralan sayfalar üç kategoride gösterilir. Kök seviye (Root): Bütün düğümlerin bağlı olduğu tek ve en tepedeki sayfa/düğüm Ara seviye (Intermediate) veya Yaprak olmayan (Non-Leaf): Kendine bağlı en az bir düğüm (sayfa) olan bağlı düğümler/sayfa Yaprak seviyesi (Leaf): Kendine hiç index sayfası bağlı olmayan düğümler/sayfa

B-tree yapısında, her bir düğümün mümkün olduğunca eşit sayıda alt düğümü olması istenir ve derinliğin mümkün olduğunca az olması için çalışılır. Herhangi bir kayıt eklendiğinde veya silindiğinde, ağaç yeniden dengelenir. Bu sebeple arka planda indexlerin yapısında dağınıklıklar ortaya çıkabilir. SQL Server performans araçları kullanılarak bunlar izlenebilir.

Yanda görülen örnekte 85 aranacak olursa: B-Tree yapılarında veri arama işlemi, veri ekleme ve silme işlemlerine göre daha hızlıdır. Herhangi bir veri aranırken Root leveldan aramaya başlanır. Ardından kollara ayrılarak Intermediate level üzerinde gezilir. (Aranan değer üzerinde bulunulan düğümün değerinden daha büyükse sağ tarafa, daha küçükse sol tarafa gidilir.) Arama işlemi leaf level seviyesinde devam ettirilir. Yanda görülen örnekte 85 aranacak olursa: Aranan değer kök değerden (50) daha büyük olduğu için sağ tarafa inilir. Aranan değer kök düğümün sağındaki değerlerle karşılaştırılır. 85 değeri sağ intermediate leveldeki ilk anahtar değer olan 65 ile karşılaştırılır. 85, 65’ten büyük olduğundan dolayı diğer anahtara (90) geçilir. 85, 90 değerinden küçük olduğundan dolayı 65-90 anahtarları arasında bulunan ok takip edilir. Öncelikle ilk anahtar değer olan 80 ile karşılaştırılır. 80 ile 85 eşleşmediğinden dalayı diğer değere geçilir. Ve leaf levelde eşleşme tamamlanır. Toplamda 3 tane mantıksal okuma ile istenilen veriye erişim sağlanmıştır. 50   45 40 47 80 85 65 90 60 93 95

Index Tanımlama Yaklaşımları Index tanımlarken en önemli nokta, çalışılan sistemin OLAP veya OLTP olduğudur. OLAP’lar okuma ağırlıklı sistemler olduğundan, index sayısının fazla olması işleri kolaylaştırır. OLTP’lerde daha çok Update, Insert, Delete işlemleri yoğun olduğu için index sayısının artması SQL Server’a yük getirir. Az olması tavsiye edilir. Ancak bir tablo için hiç index tanımlanmaması da tabloda fazlaca kayıt olduğu sürece performansı azaltır.

Index Kullanımının Performans İncelenmesi-1

Index Kullanımının Performans İncelenmesi-1 SET STATISTICS IO : Yazılan sorgunun disk üzerinde yaptığı işlemlerin IO istatistiklerinin incelenmesi için kullanılır SET STATISTICS TIME ON: Çalıştırılan sorgunun faaliyet süresini görüntüler. Aynı zamanda CPU ölçümü için de kullanılır.

Index Kullanımının Performans İncelenmesi-2

Index Kullanımının Performans İncelenmesi-2 SET STATISTICS IO : Yazılan sorgunun disk üzerinde yaptığı işlemlerin IO istatistiklerinin incelenmesi için kullanılır SET STATISTICS TIME ON: Çalıştırılan sorgunun faaliyet süresini görüntüler. Aynı zamanda CPU ölçümü için de kullanılır.

Index Kullanımının Performans Karşılaştırmaları-1

Index Kullanımının Performans Karşılaştırmaları-2

Index Tanımlama Yaklaşımları Clustered Index (CL) tanımlarken: Sık sorgulanan alanların Boyutu küçük alanların Daha az değişim olan alanların kullanılması tavsiye edilir. Identity tanımlı alanlarda (sıralı ve unique/benzersiz özellikli alanlar olmaları sebebiyle) index kullanımı performansı artıracaktır.

Index Oluşturma Örnekleri Code: CREATE CLUSTERED INDEX Index_Name_Clstd ON Students(Name); Output: The command(s) completed successfully. Explanation: In the above example, we have built a clustered index, Index_Name_Clstd, on the 'Name' column of the 'Students' table. Language(s): MS SQL Server CREATE NONCLUSTERED INDEX Index_Name_NonClstd ON Students(Name); In the above example, we have built a nonclustered index, Index_Name_NonClstd, on the 'Name' column of the 'Students' table. CREATE UNIQUE INDEX Index_Name_Unique ON Students (Name); The above example creates a unique index, Index_Name_Unique, on the 'Name' column of the 'Students' table.

CREATE INDEX NC_Ogrno ON Ogrenciler(OgrNo DESC) -- ASC veya DESC olabilir. Belirtilmezse ASC sayılır. CREATE INDEX NC_Satislar -- Birden fazla alan üzerinde çoklu index oluşturulabilir. ON Satislar (MusteriNo, Tarih) *İçeriye girilecek verilerin tekrar etmesi istenmiyorsa UNIQUE index tanımlanabilir. CL ve NCL olabilir. Primary Key veya Unique Constraint tanımlandığında, SQL Server bir unique index tanımlar. Böyle bir constraint tanımlanırken SQL Server’a CL veya NCL olup olmayacağı belirtilebilir. ALTER TABLE tblDoviz ADD CONSTRAINT PK_Doviz PRIMARY KEY(DovizKod) CLUSTERED DROP INDEX Ogrenciler1.IN_Ogrenciler1 (Tablo adını belirtmek gerekiyor)

Kaynaklar «Yazılımcılar İçin SQL Server 2012 & Veritabanı Programlama», Yaşar GÖZÜDELİ, Seçkin Yay. – 2012 «T-SQL SQL Server 2012», Hamza ELBAHADIR, KodLab Yay. - 2012