EurobankTekfen SQL Server DBA www.turgaysahtiyan.com www.cozumpark.com Turgay Sahtiyan.

Slides:



Advertisements
Benzer bir sunumlar
T sql-diğer komutlar Metin Akbulut.
Advertisements

VERİ TABANI VE YÖNETİM SİSTEMLERİ
COME 339 JAVA-SQL BAĞLANTISI
4 SQL- Yapısal Sorgulama Dili
Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
III.Oturum: SQL ile Verileri İşlemek
Performance Tuning Performans Düzenleme Teknikleri.
Öğr.Gör. Dr. Şirin KARADENİZ
SQL Komutlar 5 Sibel SOMYÜREK.
İndeksler Sibel SOMYÜREK.
EkoPC Bilişim Ltd. Eğitim Hizmetleri
Iletisim Icin : Blog : E - Mail :
END3061 SİSTEM ANALİZİ VE MÜHENDİSLİĞİ
Veri Tabanı Yönetim Sistemleri
Veritabanı Yönetim Sistemleri Hızlı ve Kısa Giriş
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.
Tetikleyici. Nedir? Bir tablo üzerinde Ekleme silme ve güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. Genel amacı veri bütünlüğünü korumaktır.
4 Veri Bütünlüğü ve Constraint’ler
SQL (STRUCTURED QUERY LANGUAGE)
Veritabanı Temel Kavramlar ve
Veritabanı Yönetim Sistemleri-I
İndex Yapıları.
SQL Dili ve MySQL Komutları
SQL’e Giriş ve SELECT Komutu
8. VİSUAL BASİC İLE TEMEL DOSYALAMA İŞLEMLERİ
VeriTabanı Uygulama.
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ı
SQL Sibel SOMYÜREK.
SQL Komutları (2) Uzm. Murat YAZICI.
RAISE RECORD/CURSOR TRIGGER
VERİTABANI MİMARİSİ Talip Hakan ÖZTÜRK Bank ASYA – ORACLE DBA
GRANT RESOURCE TO ayse; GRANT CONNECT TO ayse;
SQL’ e Giriş Uzm. Murat YAZICI.
Bilgisayar Mühendisliği Bölümü
Update UPDATE tablo_ismi SET sutun1=‘deger1’ WHERE sutun=deger.
Veritabanı Kavramları
Veritabanı Yönetim Sistemleri
İnsan Kaynakları Bilgi Sistemleri
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
UNV13107 TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Veri tabanı Bilgisayar ortamında saklanan düzenli verilerdir. Bilgisayar ve ağ ortamındaki bilginin temel.
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.
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı Arş. Gör. Pınar CİHAN.
Türkiye'de Internet Konferansı PostgreSQL Veritabanı Sunucusu 8.2 neler getiriyor? Devrim GÜNDÜZ PostgreSQL Geliştiricisi PostgreSQL Kullanıcıları Derneği.
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
Bellek Yönetimi(Memory management)
VIEW lerle çalışmak 11.BÖLÜM.
TETİKLEYİCİ ( Trigger)
İNDEKS.
Tablo Tipi Değişkenler
SQL Veri Tipleri.
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
SQL (STRUCTURED QUERY LANGUAGE)
SQL Server - Indexes.
SQL Server - Stored Procedures
SQL Server - Views.
SAP HANA SQLSCRIPT DEVELOPMENT
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-3-DDL
Sunum transkripti:

EurobankTekfen SQL Server DBA Turgay Sahtiyan

Ajanda Neden Index? Index Nasıl Çalışır ? (B-Tree – Balanced Tree Yapısı) Clustered Index Non-Clustered Index Örneklerle Index Page’lerin İncelenmesi NonClustered Index’te Included Kolon Kullanımı Sonuç - Özet Soru - Cevap

Neden Index ? SQL Server açısından index kullanımının en önemli amacı, istenen bilginin daha az veri okunarak daha kısa zamanda getirilmesini sağlamaktır. Index kullanarak bir tablonun tamamını okumaktansa index key vasıtasıyla okumak istediğimiz kayıda daha hızlı bir şekilde ulaşmamız mümkündür. Tamamlanması saatler süren bir sorgunun uygun index’ler kullanılarak saniyeler seviyesinde getirilmesi sağlanabilir. Telefon rehberi index kullanımı için iyi bir örnektir. (Karışık Rehber – Sıralı Rehber) Canlı örnek - table scan-index kullanımı arasındaki fark Gerekli index’ler faydalı olduğu gibi çok fazla index kullanımı OLTP işlemlerde performans sıkıntısı doğurur.

Index Nasıl Çalışır ? (B-Tree – Balanced Tree Yapısı) Index’in çalışma prensibini anlamak, Index tipine ve Index’in hangi kolonlar üzerine tanımlanması gerektiğine karar verme aşamaları için oldukça önem taşımaktadır. Client İsteği -> Protocol Layer -> Parse -> Query Processor Query Processor = Optimize + Execute Optimize = En Uygun Index’ten Query Plan Oluşturulur. Execute = Bu aşamada Index üzerinde B-Tree yapısı kullanılarak arama yapılır.

Index Nasıl Çalışır ? (B-Tree – Balanced Tree Yapısı) 1 Level Root 1 veya 1’den fazla Intermediate Level 1 Level Leaf Index’lerde B-Tree Yapısı NonLeaf Level

Index Page’leri Görüntüleme Bir Index’in Page’leri DBCC IND ( {'dbname' | dbid}, tablenum, printopt={0|1|2|3} ) DBCC IND('AdventureWorks','tblIndexDeneme1',1) Bir Page’in İçeriği DBCC PAGE ( {'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ]) DBCC PAGE('AdventureWorks',1,24044,3) Leaf Level Data Page’lerin İçeriğini Görmek İçin DBCC TRACEON (3604)

Clustered Index NonLeaf Level Page Örneği ChildFileId ChildPageId Id – Clustered Index Key UNIQUIFIER – Key’i Unique’leştirmek İçin Kullanılır. (4 byte Integer) Alt Level Page’lere Erişmek İçin Kullanılır

NonClustered Index NonLeaf Level Page Örneği ChildFileId ChildPageId Ad – NonClustered Index Key Id – Clustered Index Key UNIQUIFIER(*) – Key’i Unique’leştirmek İçin Kullanılır. (4 byte Integer) Alt Level Page’lere Erişmek İçin Kullanılır *Bir key’in unique olup olmaması index tanımlanırken kullanılan UNIQUE ifadesine bağlıdır.

NonClustered Index Leaf Level Page Örneği Ad – NonClustered Index Key SoyAd – Included Column Id – Clustered Index Key UNIQUIFIER SoyAd – Included Column Lookup yapmak için kullanılır.

Index Nasıl Çalışır ? (B-Tree – Balanced Tree Yapısı) Örnek B-Tree Yapısı Canlı data üzerinde index B-Tree arama demosu

Clustered Index Clustered Index = Fiziksel Index Diskte veriler mantıksal olarak sıralı tutulurlar. (Page Chain) Bir tabloda sadece 1 adet Clustered Index bulunabilir. Leaf Level = Datanın Kendisi Ada göre sıralı bir telefon defteri Clustered Index için iyi bir örnektir. Otomatik artan (Identity) bir alana Clustered Index tanımlanması best practice’dir. Bunun nedenler; Identity unique’dir. 4 byte’lık UNIQUIFIER kullanımından kurtulunur. Identity kolonu update görmez. Update gören bir alana Clustered Index tanımlanmasının sakıncaları şunlardır: Page Split Index Fragmentation NonClustered Index’lerin Update Görmesi Index Seek yerine Index Scan yapılır.

NonClustered Index Telefon defteri için mesleki bir index yapmak iyi bir NonClustered Index örneğidir. Leaf Level = Row Locator + Included Kolonlar Row Locator Heap ya da Clustered Index durumuna göre farklılık gösterir. Heap -> Dosya Numarası (File Identifier) + Sayfa Numarası (Page Number) + Kayıt Numarası (Slot Number) Clustered Index -> Clustered Index Keys + (UNIQUIFIER) Maksimum NonClustered Index Sayısı SQL Server 2005 – 249 SQL Server

Örneklerle Index Page’lerin İncelenmesi Clustered Index’te Page’lerin Yapısı Unique Clustered Index Unique Olmayan Clustered Index NonClustered Index’te Page’lerin Yapısı Heap Tablo + Unique NonClustered Index Unique Clustered Index + Unique NonClustered Index Unique Olmayan Clustered Index + Unique NonClustered Index Unique Olmayan Clustered Index + Unique Olmayan NonClustered Index

Unique Clustered Index

Unique Olmayan Clustered Index

Heap Tablo + Unique NonClustered Index

Unique Clustered Index + Unique NonClustered Index

Unique Olmayan Clustered Index + Unique NonClustered Index

Unique Olmayan Clustered Index + Unique Olmayan NonClustered Index

NonClustered Index’te Included Kolon Kullanımı SQL Server 2005 ile gelen bir özelliktir. Amaç sorguyu cover edip lookup yapmamaktır. Covering Index = Lookup yapma ihtiyacı olmadan istenen tüm bilgileri leaf level page’lerinde bulunduran NonClustered Index’lerdir. NonLeaf Level Page’lerde covering column’u bulundurmayıp boyutu arttırmadan sadece leaf level page’lerde bulundurmayı amaçlar. Telefon Rehberi için verilen mesleki NonClustered Index örneği Included kolon ile yapılırsa lookup’tan kurtulunur. Canlı Örnek - %1.2 daha az index boyutu Composite Index – (örn MB) create nonclustered index IX_1 on Person.Address (City,AddressLine1,PostalCode) Included Index – (örn MB) create nonclustered index IX_1 on Person.Address (City) INCLUDE (AddressLine1,PostalCode)

Index Maintenance (Index Defragmentation) Fragmentation Oranlarının Belirlenmesi – Rebuild – ReOrganize Kararı Reorganize Index Rebuild Index Defragmentation Script’i Fragmante Oranıİşlem > 5% and < = 30%ALTER INDEX REORGANIZE > 30%ALTER INDEX REBUILD WITH (ONLINE = ON)*

Index’lerin Kullanım İstatistikleri Index’lere yapılan okuma ve yazma oranlarını incelemek. Faydadan çok zararı olan index’leri belirlemek. Kullanılmayan index’leri sorgulamak.

Sonuç - Özet Index’i SQL Server’ın beygir gücü olarak tanımlayabiliriz. Etkin index kullanımı verinin sorgulanması ihtiyacını daha etkin bir şekilde karşılamak için göz önünde bulundurulması gereken en önemli konudur Clustered ve NonClustered Index’lerin davranışları farklı olduğu için bu 2 index tipi arasındaki farkı bilmek Index oluşturma açısından önemlidir. Index’lerin B-Tree yapısının ne şekilde çalıştığı bir diğer önemli konudur. Index’lerin tanımlanmış olması, sürekli performanslı bir çalışma getireceği manasına gelmez. Periyodik olarak Index’lerin bakımının yapılması Index performansına etki eden önemli faktörlerden biridir. Index kullanımı çok önemliyken, gereksiz,kullanılmayan Index’leri sistemde bulundurmak bir o kadar dezavantajdır. Periyodik olarak kullanılmayan ya da yazma istatistiği okuma istatistiğinden fazla olan index’lerin belirlenip drop edilmesi gerekir Aynı şekilde olması gerekipte olmayan index’lerin (Missing Index) belirlenip oluşturulması sistemi daha performanslı çalışır hale getirecektir.

Soru - Cevap Turgay Sahtiyan EurobankTekfen SQL Server DBA