Buradasınız :Anasayfa » Tüm Makaleler » SQL Server » SQL Server 2016 Yenilikleri – In-Memory DW – Updatable ColumnStore Indexes – Bölüm 1
Yazar :Abdullah Altıntaş Tarih : 16/05/2016 Kategori : SQL Server 1 Yorum
Bu sene SQL Server 2016 ile birlikte veritabanı dünyamıza heyecan veren yeni özellikler dahil oluyor. Microsoft’un son bir kaç senedir depar attığı Advenced Analytics ve Big Data konseptlerinin etkisini SQL Server ürününde de görmek bizleri mutlu ediyor.
Bazı özellikler önceki versiyonlardaki haline göre geliştirilmişken, bazı özellikler tamamen yeni. Özellikle önceleri sadece Appliance’larda var olan Polybase engineı şimdi SQL Server’ın kurulabildiği tüm cihazlarda kullanılabilir durumda. Bu özellik büyük veri ile ilişkisel veritabanının birlikte çalışmasına olanak tanıyor. Hatta veritabanı ile çalışma alışkanlıklarınızı açık kaynakta olduğu gibi dramatik şekilde değiştirmenize gerek kalmadan bunu yapabiliyorsunuz.
SQL Server 2016’da bir çok etkileyici özellik mevcut. İşte bazıları;
Biz de bu yazımızda In-Memory DW – Updatable ColumnStore Indexes yeniliklerine yoğunlaşacağız.
1. Fiziksel Yapısı : Genelde sorgularımız kolon bazlı olur. RowStore indexler tüm satırı indexlerken, ColumnStore indexler sadece ilgili kolonun verilerini indexler. RowStoreda kullanılan pagelerine yerine ColumnStoreda segmentler kullanılır ve segmentler yüksek sıkıştırma özelliği sayesinde çok daha az yer kaplar. Böylece tam olarak ColumnStore indexlerden istediğimiz veriler elimize ulaşır. RowStoredaki gibi ilgilenmediğim kolonların olduğu pagelerde vakit kaybedilmez.
2. Batch Mode : Normalde Query Optimizer verileri satır satır işler. Ancak gelen SQL Server 2012 ile birlikte bazı sorgu operatörleri bir grup satırı (çoğu zaman 900 satır) birlikte işleyebilecek şekilde tasarlanmıştır.
3. Segment Eleme: Sayısal ve tarihsel alanlarda işe yarayan bu özellik sayesinde sadece verdiğimiz aralıkta bulunan verilerin olduğu segmentlere gidilmektedir. Böylece daha az IO yapılır. Her bir segmentte minimum maksimum değerin metadata olarak tutulması buna imkan verir. Eğer istenen değer bu aralıkta değilse segment elenir. Sadece şartımıza uyan segmentler belirlenerek içeriği okunur.
1. Performans farkını ortaya çıkaran yukarıdaki 3 özellik aynı şekilde işliyor. Buna ek olarak yeni Batch Mode çalışma desteği veren operatörler duyuruldu. Bunlar: SORT, COUNT/COUNT, AVG/SUM, CHECKSUM_AGG, STDEV/STDEVP, COUNT, COUNT_BIG, SUM, AVG, MIN, MAX, CLR, CHECKSUM_AGG, STDEV, STDEVP, VAR, VARP, GROUPING, LAG, LEAD, FIRST_VALUE, LAST_VALUE, PERCENTILE_CONT, PERCENTILE_DISC, CUME_DIST, PERCENT_RANK
2. Artık ColumnStore (Clustered,NonClustered) indexler update edilebiliyor. Yani veri girişi sırasında indexi kaldırmaya gerek kalmıyor.
3. Bu yeni versiyonla birlikte ColumnStore indexlerin bulunduğu tablolarda Pimary Key ve Foreign Key kullanılabilmektedir. (RC0’da test edecek olanlar PK’yı Heap üzerinde, FK’yı da ColumnStore indexten sonra tanımlamalılar.) PK oluşturken Clustered index otomatik oluşacaktır. Clustered yerine NonClustered oluşturalım ki Clustered ColumnStore index ile çakışmasın. Yani PRIMARY KEY NONCLUSTERED ifadesi ile PK oluşturulmalıdır.
4. Clustered ColumnStore indexten sonra RowStore (btree) index tanımlamak daha önceki versiyonlarda mümkün değildi. SQL Server 2016 ile birlikte artık hem Clustered ColumnStore hem de birden fazla NonClustered RowStore indextanımlamak mümkün.
5. Yeri geldiği için hatırlatalım; bir tabloda tek bir Clustered (ColumnStore veya RowStore farketmez) index bulunabilir. Ayrıca bir tabloda birden fazla ColumnStore index tanımlanamaz.
6. Artık NonClustered ColumnStore indexler filtrelenerek daha efektif kullanılabilmektedi.
7. Clustered ColumnStore index, Memory Optimized (In-Memory OLTP) tablolarda tanımlanabilmektedir. (RC0’da test edecek olanlar önce Clustered ColumnStore indexi tanımlamalılar.)
8. Storage Engine seviyesinde yapılan bir diğer geliştirme ise Pushdown (Aggregate Pushdown, String Predicate Pushdown) özelliğidir. Bu özelliği şöyle açıklayalım; Önceki yazımızda da geçtiği üzere veriler segmentlere dönüştürülürken encoding bilgisinin tutulduğu Dictionary nesneleri de oluşur. Segmentler, Dictionary’da tutulan gerçek verilerin giriş numaralarını içerir. Bu teknik sayesinde tekrar eden verilerle ilgili ciddi sıkıştırma performansı elde edilebilir. İki tür Dictionary nesnesi vardır. Primary Dictionary : tüm segmentler tarafından kullanılır. Secondary Dictionary : Birden fazla segment (aynı kolona ait) tarafından paylaşılır. Her zaman Secondary Dictionary kullanılmayabilir. Bazı durumlarda devreye giren Pushdown özelliği sayesinde kritere uygun satırlar Dictionary seviyesinde taranır. Diğer satırlar segment seviyesinde taranır ve filtrelenir. Bu çalışma şeklinin performansı SQL Server 2014 ile karşılaştırıldığında sonuçlar şaşırtıcı derecede farklı olur.
In-Memory inmemory InMemory DW nonclustered columnstore index SQL Server 2016 New Features SQL Server 2016 Yenilikleri Updatable ColumnStore indexclustered columnstore indexsql 2016sql 2016 downloadsql 2016 free downloadsql 2016 nedirsql 2016 neler yenisql 2016 ozelliklerisql 2016 ucretsiz indirsql 2016 yenilikler
Server 2012 – Cluster Aware Update Status Check – Powershell Script
yazilimcilar icin azure yapay zeka kitabi wireshark detayli anlatim veri The Onion Router nedir Sunumlar Smugging sitelerine fotoğraf upload etmek sccm 2012 uygulama dagitimi Operation Management Suite Kullanici Yonetimi Multi Factor authentication kurulumu Microsoft oms Alert Management mfcmapi nedir internet cafe Intellisense sorunu cozumu hyper-v yedek islemi hyper-v migration hyper-v HTC Desire ve HTC Wildfire Hizmet Portföy Yönetimi forest nasil tasinir forefront fro sharepoint exchange 2010 da mailbox yedegi dpm 2012 ile notes yedeklemek dhcp servisi nasıl kurulur database kontrolü blackberry tablet işletim sistemi nedir azure sql server azure hizmetleri appliance .net nedir