Anasayfa » SQL Server 2014 Yönetim Yenilikleri

Makaleyi Paylaş

SQL Server

SQL Server 2014 Yönetim Yenilikleri

Sql Server sürümlerinin en son versiyon olan Sql Server 2014 ile birlikte birçok yeni özellik gelmiştir. Daha fazla cloud desteği ve daha fazla performans sunmaktadır. Cloud üzerine yedek alınması ve In-Memory tablolar en dikkat çekici yeni özelliklerdir.   Azure üzerinde lokal veritabanlarınızı tutabilir veya lokal veritabanlarınızı Azure üzerine yedek alabilir hale gelmiştir. 

Klasik veritabanı yedeklemenin dışında, URL backup ve Encrypt backup ile yedeklerimizin güvenliği daha da artmaktadır.

In-Memory Optimized Tables – Hafıza üzerinde çalışan tablolar ile birlikte 30 kata kadar performans büyük ölçüde arttırılmıştır.         

Azure üzerine Sql Server’ın replikasını konumladırma imkanı ve veri dosyalarının Azure üzerinden kullanılabilmesi sağlanmıştır.

Sponsor

Columnstore indeksler önceki sürümlerde güncellenemiyordu, Sql Server 2014 ile birlikte artık columnstore indeksler güncellenebilmektedir. Columnstore indeksleri drop-create etmeye gerek kalmadan güncelleme imkanı sunmaktadır.

Delayed Durability özelliği sayesinde, transactionların, transaction log dosyasına yazma metodu yönetilebilir hale getirilmiştir. Performans açısından bu özelliğin yönetilebilmesi önemli bir konudur.

Buffer pool extension ile birlikte, Sql Server için yeni bir sanal bellek dosyası oluşturup, bu sanal belleği SSD diskler üzerinde çalıştırılması sağlanmıştır.

Bu yeni özellikleri incelemeye başlayalım, ilk olarak Azure üzerinde nasıl veritabanı oluşturulur buna bakalım.

Windows Azure Sql Database:   

Cloud kavramı uzun zamandır konuşulan ve farklı alanlarda kullanılan bir kavramdır. Temelde uzaktaki sunucuların internet üzerinden hizmet vermesi anlamına gelir. Cloud hizmetleri olarak, Software as a service (SaaS) – yazılım servisi veya Infrastructure as a service (IasS) – Altyapı, donanım servisi olarak hizmet vermektedirler.  Microsoft’un yeni vizyonu olan “Cloud first, mobile first”  kavramında ileriki zamanlarda daha çok cloud hizmetlere yöneleceğinin sinyalini vermektedir. Sql Server veri dosyaları Azure üzerinde nasıl oluşturulur bunu inceleyeceğiz.

SaaS’ın temelinde, yazılım hizmeti müşteriye sunulur, müşteri de kullandığı kadar bu servisin ücretini öder. Sql Azure SaaS için güzel bir örnektir. IaaS hizmetinden farkı, kullandığınız kadar ödemenizdir. Iaas hizmetlerinde ücretler genel olarak kiralama mantığında çalışır, kullanın veya kullanmayın kira ücretini ödemek zorunda kalırsınız. Azure üzerinde isterseniz Sql database, isterseniz de Windows Server üzerine kurulu olan Sql Server 2014’ü kullanabilirsiniz.

Sql Azure veritabanı oluşturabilmeniz için, Azure hesabınızın olması gerekmektedir. Deneme sürümünü kullanmak içinde geçerli bir kredi kartınızı kayıt olarak kullanmanız gerekmektedir. Aşağıdaki linkten Azure sitesine gidiyoruz.

http://azure.microsoft.com/tr-tr/

Siteye kayıt olduktan sonra, portal kısmından giriş yapıyoruz. Aşağıdaki gibi ana sayfa karşımıza geliyor.

clip_image002

SSA-1

Sol taraftaki menüden SQL DATABASES bölümüne tıklıyoruz.

clip_image004

SSA-2

Ekranın aşağısındaki + NEW butonuna basarak menüleri açıyoruz, açılan menüde Custom Create’e tıklıyoruz.

clip_image006

SSA-3

Karşımıza bir sihirbaz geliyor, bu ekranda veritabanımıza bir isim veriyoruz. Service Tiers kısmında veritabanının kapasitesini belirtiyoruz, Basic 2gb a kadar boyut sunan en temel veritabanı, Standart tier en yaygın kullanılan cloud uygulamaları için yeterli seviyede ve kapasitesi 250 gb kadar destekliyor, Premium tier ise büyük yapılar için tercih edilen, mission critical uygulamalar için olan tiptir, 500 gb’a kadar boyutu desteklemektedir.

Collation seçimini yaptıktan sonra, Server kısmında New Sql database server’ı seçiyoruz.

clip_image008

SSA-4

Service Tiers ve Performance levellar ile ilgili detaylı tablo

clip_image010

SSA-5

Msdn Service Tiers ve Performance Levels: https://msdn.microsoft.com/library/dn741336.aspx

İkinci sayfada, New Sql database Server oluşturacağız. Veritabanına erişmek için Login name’i yazıyoruz, login name için sa, admin v.b. bilinen kullanıcı isimlerinin verilmesine izin verişmiyor. Şifre içinde kompleks yapıdaki en az 8 karakter, büyük-küçük harf, özel karakter ve rakamlardan oluşturmak zorunlu. Region kısmında ise veritabanının hangi Azıre bölgesinde olmasını belirtiyorsunuz, bulunduğunuz bölgeye yakın bir Azure datacenter seçmekte fayda var.

Azure servislerinin Sql Database Server’a erişebilmesi için aşağıdaki checkboxın işaretli olması gerekiyor.

clip_image011

SSA-6

Azure Sql veritabanımızı başarılı bir şekilde oluşturmuş olduk, Sql Databases ekranına gelmiş oldu.

clip_image013

SSA-7

Azure üzerinde Sql database’i oluşturduk, bu database’i lokaldeki Management Studio’ya nasıl bağlayacağız bakalım. İlk olarak Azure tarafındaki firewall ayarlarını yapmamız gerekecek. Yukarıdaki şekilde Sql Databases altındaki veritabanına tıklıyoruz, karşımıza aşağıdaki detaylar ekranı geliyor. Set up Windows Azure firewall rules for this IP address bağlantısına tıklıyoruz.

clip_image015

SSA-8

Firewall kuralı eklendiğinde aşağıdaki bilgi alanında açıklaması gözükecektir.

clip_image017

SSA-9

Firewall kuralını ekledikten sonra Management studio dan Azure üzerindeki veritabanımıza bağlanalım. Management Studio bağlantı ekranına SSA-8 deki Server adını yazıyoruz. Kullanıcı adı ve şifre kısımına da SSA-6 şeklindeki, Azure veritabatanını oluştururken kullandığımız kullanıcı adı ve şifreyi yazıyoruz. Connect dedikten sonra, veritabanımız management studio ya gelmiş oluyor.

clip_image019

SSA-10

Karşımıza 3 klasör geliyor,  Databases, Security ve Management. Azure database üzerindeki tüm işlemleri SSMS üzerinden yapabilmekteyiz.

 

Lokal Veritabanı Azure’a Taşıma:

Lokaldeki bir veritabanını Azure üzerine taşıyarak burada kullanılabilmektedir. Veritabanı üzerinde sağ klik yaparak Tasks – Deploy Database to Windows Azure Sql Database sihirbazı ile bu işlemi gerçekleştirebiliriz.

clip_image021

SSA-11

İlk tanıtım ekranını geçiyoruz. Deployment Settings ekranında Connect ile Azure bağlantımızı gerçekleştiriyoruz. Veritabanı adımız seçtiğimiz veritabanından otomatik olarak geliyor. Edition of Windows Azure SQL Database kısmından veritabanının tipini seçiyoruz. Maximum database size (GB) kısmında da veritabanımızın ulaşacağı maksimum boyut seçilmektedir.

clip_image023

SSA-12

Next ile Summary ekranına geliyoruz, genel bir bilgi veriyor. Ardndan Finish’e tıkladığımızda lokal veritabanımız Azure tarafına taşınmaya başlıyor. Result kısmında eğer veritabanı geçişi başarılı oldu ise tüm kontroller yeşil checkbox olarak geliyor.

clip_image025

SSA-13

SSMS üzerinden kontrol ettiğimizde LokalDB isimli veritabanımız Azure tarafına taşınmış oldu. Veritabanındaki tablomuzu sorgulayarak Azure üzerinden verilerimize ulaşabiliyoruz.

clip_image027

SSA-14

 

Yedeklemedeki Yenilikler:

Sql Server 2014 ile birlikte gelen en önemli özelliklerden biri de, veritabanı yedeklerinin Azure üzerine alınmasıdır. Bir felaket durumunda (Disaster Recovery – DR) Azure üzerinden veritabanları geri yüklenebilmektedir. Yedekleme için gelen yeni özellikler, Backup to URL, Backup to Microsoft Azure ve Encryption.

URL yedekleme özelliği Sql Server 2012 SP1 update 2’de gelmişti. Sql Server 2012’de URL backup almak için T-Sql ile veya PowerShell scriptleri yedek almak mümkün. Sql Server 2014 ise SSMS içine entegre edilmiş şekilde gelmektedir. URL tarafına yedeklemeye geçilmesine en büyük nedenlerden biri de, veritabanlarının yedeklerinin Azure üzerinde on-premise olarak çalışmasıdır. Böylelikle daha güvenli ve korunaklı bir şekilde yedekler Azure üzerinde durmaktadır. İlk bölümde Azure üzerindeki veritabanlarına SSMS üzerinden nasıl bağlanacağımızı görmüştük. İstersek on-premise olarak Azure’u kullanıp, lokalimizi ise yedek için tutabiliriz.

Azure üzerine yedek alabilmek için,  storage hesabınızın ve storage containerın olması gerekir. Azure üzerinde oluşturduğumuz veritabanını Azure Storage üzerinde tutmaktadır.

Azure URL backup yedeklemede bazı kısıtlamalar vardır. Bu kısıtlamalar şu şekildedir.

        Maksimum yedek boyutu 1 Tb

        Yedekleme cihazları ile birlikte kullanılamaz

        Var olan mevcut yedekler ile ilişkilendirilemezler.

        Birden çok blob’a yedek alınamaz. Sql server da normal yedeklemede birden çok yere yedek alınabiliyor, fakat Azure URL backup buna izin vermemektedir.

Azure üzerinde yeni bir storage ve storage içinde de container oluşturmamız gerekiyor. İlk olarak Azure üzerinde Storage bölüne gelip New – Storage – Quick Create ile yeni bir storage alanı oluşturuyoruz. Url adını girip hangi bölgedeki datacenterı kullanacağımızı seçtikten sonra Create Storage Account’a tıklayıp devam ediyoruz.

clip_image029

SSA-15

Storage ekranına sqlyedekstorage adında storage geldi. Üzerine tıklayarak gelen menüde container kısmına giriyoruz.

clip_image031

SSA-16

Create a new container’a tıkladıktan sonra, New container ekranında yeni bir blob container oluşturuyoruz.

clip_image033

SSA-17

Container’ı da oluşturduktan sonra Sql server tarafında yedeklemeye geçebiliriz. Yedeklemek istediğimiz veritabanında sağ klik Tasks – Backup diyoruz.

clip_image035

SSA-18

Backup database ekranında Destination kısmında URL olarak seçenek geliyor. Url’i seçtiğimizde bize File name, Sql Credential, Azure Storage Container ve Url Prefix seçenekleri gelmektedir. Url Prefix kısmına Azure storage imizin blob service adresini giriyoruz.

Blob service url, Azure storage imizin Dashboard ekranında yer almaktadır. İlk olarak bu ekrandan blob service url’i kopyalayalım.

clip_image037

SSA-19

Backup database ekranında Url prefix alanına yapıştırıyoruz.

Azure storage container kısmınada, storage’in container adını yazıyoruz.

clip_image038

SSA-20

Sql credential kısmında Azure ile bağlantıyı sağlayacak hesabı oluşturmamız gerekiyor. Create butonuna tıklıyoruz.

clip_image040

SSA-21

İlk olarak publish edilmiş profilimizi indirip, Browse ile bu ekrana getirmemiz gerekiyor. Subcription dosyasını aşağıdaki linkten indiriyoruz.

https://manage.windowsazure.com/publishsettings/

İndirdiğimiz dosyayı Browse ile seçtiğimiz zaman ID alanı ve sertifika bölümleri gelmiş oluyor, ardından Storage hesabımızı seçtikten sonra Create diyerek ekranı kapatıyoruz.

Backup database ekranındaki Destination bölümü aşağıdaki gibi olması gerekiyor.

clip_image042

SSA-22

Ekranda Ok dediğimizde yedek alma işlemi Azure tarafına başlamış oluyor. İnternet bağlantınızın upload hızına göre Url backup süreleri değişkenlik göstermektedir.

Yedeği Azure tarafında kontrol edelim.

Storage – Storage adınız – Containers bölümünde container adınımıza tıklıyoruz.

clip_image044

SSA-23

Yedeğimizin başarılı bir şekilde alındığını görüyoruz.

clip_image046

SSA-24

 

Yedeklerin Şifrelenmesi – Encryption:

              

Sql Server versiyonlarında farklı bir araç kullanmadan, yedeklerin şifrelenmesi Sql Server 2014 ile gelmiş oldu. Yedeklerin şifrelenmesinde AES 128, AES 192, AES 256 ve Triple DES algoritmaları kullanılmaktadır. Şifreleme yapmak için bir sertifika veya asimetrik key’in olması gerekmektedir. Yedeklerin şifrelenmesi özelliği ile, korumasız olarak Sql yedeklerinde de güvenlik sağlanmış oluyor.

Yedekleri şifrelemeden önce birkaç ön koşulu gerçekleştirmek gerekiyor. Sql Server Güvenlik Kavramı makale serilerinin 3. Bölümünde anlattığımız, bir kereye mahsus oluşturulan Database Master Key’i yedekleme şifrelemesinde de kullanacağız.

Database Master Key, private key sertifikasını ve asimetrik keyleri korur ve master database’inde saklar. Aşağıdaki kod ile master veritabanı için Database Master Key’i oluşturuyoruz.

USE master;

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘guclu_bir_sifre’;

GO

 

Yedekleme şifrelemesi sertfika veya asimetric key’e ihtiyaç duymaktadır. Aşağıdaki kod ile sertifikayı oluşturuyoruz.

Use Master

GO

CREATE CERTIFICATE YedeklemeSertifikasi

 WITH SUBJECT = ‘Otel veritabani yedekleme sertifikası’;

GO

 

Sertifikayı oluşturduktan sonra yedeklerimizi şifreleyebiliriz. Aşağıdaki örnek kod ile veritabanı yedeklerken şifrelenme işlemini gerçekleştiriyoruz.

BACKUP DATABASE Otel

TO DISK = N’D:\Yedek\otel_encrypt.bak’

WITH

 COMPRESSION,

 ENCRYPTION

 (

 ALGORITHM = AES_256,

 SERVER CERTIFICATE = YedeklemeSertifikasi

 ),

 STATS = 10

GO

 

Stats = 10 parametresi ile de, yedek alırken, durumu görmüş olduk.

clip_image048

SSA-25

In-Memory Optimized Tablolar

 

Önceki Sql Server versiyonlarında, genel olarak iş zekası uygulamarlında gelişmeler yaşandı. Database engine kısmının karalı çalışması sağlandı. Sql Server 2014 ile gelen, In-memory optimize tablolar ile performans sıkıntısı yaşayan sistemler için büyük bir yenilik ve hız getirmiş oldu. Ön sürümde duyurulan adı Hekaton olan bu yapı ile, transactionların kat ve kat daha hızlanması sağlandı.

In-Memory Optimize tablolar sadece Enterprise sürümünde kullanılabilmektedir. Ayrıca Sql Server’da yeteri kadar memory olması gerekmektedir. Bu tablolar memory de tutulacağı için düşük memory’e sahip sistemlerde istenen verimi vermeyecektir. In-Memory Optimize tablolar kullanılan bir yapıda, Sql Server’a atana memory atamasının iyi planlanması gerekmektedir. Memory’nin tamamının Sql server’a verilmesi durumunda, memory optimize tabloların çalışmasında performans düşüklüğü olacaktır.

 Disk tabanlı tablolarda Sql server verilerin ikinci bir kopyasınıda saklamaktadır, bir geri yükleme durumunda bu ikinci kopyadan geri dönme sağlanmaktadır. Insert, update ve delete işlemleri içinde aynı durum geçerlidir. Sunucunun yeniden başlaması veya bir sorun oluştuğundan Sql server hizmetinin yeniden başlamasında memory optimize tablolar yeniden oluşmaya başlayacak ve memory üzerinde belli bir oradan yer kaplayacaktır, disk tabanlı tablolar gibi ikinci bir kopya tutmayarak performansı arttırmaktadırlar.

Memory optimize filegroup içeren bir veritabanı oluşturalım.

CREATE DATABASE mem_opt_tab

ON

PRIMARY(NAME = [mem_opt_tab_data],

FILENAME = ‘d:\data\mem_opt_tab_mod1.mdf’, size=500MB)

, FILEGROUP [mem_opt_tab_mod] CONTAINS MEMORY_OPTIMIZED_DATA(

NAME = [mem_opt_tab_dir],

FILENAME = ‘d:\data\mem_opt_tab_dir’)

, (NAME = [mem_opt_tab_dir2],

FILENAME = ‘d:\data\mem_opt_tab_dir2’)

LOG ON (name = [mem_opt_tab_log], Filename=’D:\DATA\mem_opt_tab_log.ldf’,

size=500MB)

GO

 

Yukardaki script ile veritabanımızı oluşturduk, memory optimize filegroup içeren bu veritabanının, disk üzerindeki dosyalarına baktığımızda, iki klasörü de filegroup için açtığını görüyoruz.

clip_image050

SSA-26

SSMS üzerinde New Database diyerek açtığımız yeni bir veritabanında, filegroups sekmesinde, Memory Optimized Data bölümünden filegroupları ilave edebilmekteyiz.

clip_image051

SSA-27

Memory optimize tablolarda veri tipleri kullanımında kısıtlama vardır, kullanılabilen veri tipleri aşağıdaki gibidir;

        Bit

        Tinyint

        Smallint

        Int

        Bigint

        Money

        Smallmoney

        Float

        Real

        Datetime

        Smalldatetime

        Datetime2

        Date

        Time

        Numeric

        Decimal Types

        Sysname

        Char,  varchar, nchar, nvarchar

        Binary, varbinary

        Uniqueidentifier

Memory optimize tablolar ile ilgili diğer kısıtlamalar aşağıdaki gibidir;

        Foreign key ve check constraints kullanılamaz

        Primary key var ise unique indeksler birden fazla olamaz

        Identity kolonlar kullanılamaz

        Dml triggerlar kullanılamaz

        En fazla 8 adet index olabilir

        Tablo oluşturulduktan sonra schema değişikliğine izin vermez

        Drop – create edilen bir tabloda schema değişikliği olmuş ise bu tabloada değişiklil yapılamaz.

        Create alter ve drop edilen indeksler çalışmazlar.

        Satır uzunluğu 8060 byte ile sınırlıdır.

Memory optimize tablolar iki farklı türde indeks destekler;

        Non-clustered hash indexes

        Non-clustered indexes

Memory optimize tablolar ile birlikte yeni bir indeks tipi olan hash indexes duyurulmuştur. Hash indeksler memory optimize tablolar üzerinde oluşturulurlar, bilinen indeks yapıları gibi değillerdir. Hash indeksler tablodaki tüm satırlar ile bağlantı kurarlar. Hash indeksler disk üzerinde tutulmazlar, bu sebeple hash indekslerin hareketleri transaction log üzerinde tutulmaz. Memory optimize indeksler, sunucu yeniden başlatıldığında, kendi kendilerine rebuild işlemlerini yaparlar.

Memory optimize tablolar, disk üzerinde tutulan tablolar gibi kendilerine alan ayırmazlar, adreslenebilir memory üzerinde çalışmak için tasarlanmışlardır.

Memory optimize bir tablo oluşturmak için, Tables kısmında New Table – Memory Optimize Table’a tıklıyoruz. Karşımıza aşağıdaki gibi bir script çıkıyor, normal tablo ekranı gibi bir ekranı bulunmuyor.

–======================================================

— Create Memory Optimized Table Template

— Use the Specify Values for Template Parameters command (Ctrl-Shift-M) to fill in the parameter values below.

— This template creates a memory optimized table and indexes on the memory optimized table.

— The database must have a MEMORY_OPTIMIZED_DATA filegroup before the memory optimized table can be created.

–======================================================

 

USE <database, sysname, AdventureWorks>

GO

 

–Drop table if it already exists.

IF OBJECT_ID(‘<schema_name, sysname, dbo>.<table_name,sysname,sample_memoryoptimizedtable>’,’U’) IS NOT NULL

    DROP TABLE <schema_name, sysname, dbo>.<table_name,sysname,sample_memoryoptimizedtable>

GO

 

CREATE TABLE <schema_name, sysname, dbo>.<table_name,sysname,sample_memoryoptimizedtable>

(

               <column_in_primary_key, sysname, c1> <column1_datatype, , int> <column1_nullability, , NOT NULL>,

               <column2_name, sysname, c2> <column2_datatype, , float> <column2_nullability, , NOT NULL>,

               <column3_name, sysname, c3> <column3_datatype, , decimal(10,2)> <column3_nullability, , NOT NULL> INDEX <index3_name, sysname, index_sample_memoryoptimizedtable_c3> NONCLUSTERED (<column3_name, sysname, c3>),

 

   CONSTRAINT <constraint_name, sysname, PK_sample_memoryoptimizedtable> PRIMARY KEY NONCLUSTERED (<column1_name, sysname, c1>),

   — See SQL Server Books Online for guidelines on determining appropriate bucket count for the index

   INDEX <index2_name, sysname, hash_index_sample_memoryoptimizedtable_c2> HASH (<column2_name, sysname, c2>) WITH (BUCKET_COUNT = <sample_bucket_count, int, 131072>)

) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = <durability_type, , SCHEMA_AND_DATA>)

GO

 

Son satırda WITH(MEMORY_OPTIMIZED = ON) seçeneği ile, bu tablonun memory optimize bir tablo olduğunu belirtiyoruz.

AlwaysOn Availability Groups:

 

AlwaysOn Availability Groups, Sql Server 2012 ile gelen yeni bir özellikti. Sql Server 2014’e geçiş için AlwaysOn geçişi de merak edilen konular arasındaydı. Sql Server 2014’te ve Azure daki Sql makinalar arasında AlwaysOn yapılabilmektedir.

AlwaysOn ile farklı instance ve farklı sunuculardaki veritabanlarınızı otomatik olarak failover replikalarını tutabilirsiniz. İlave olarak, yüksek erişebilirlik ve felaket durumlarında uygulamalarınızı otomatik olarak yönlendirebilmektedir. Bu da en az kesinti ile Sql Server sunucularınızı ayakta tutmanızı sağlamaktadır.

Sql Server 2014’ün en güzel özelliklerinden biri de, Azure replikanın yapılıyor olmasıdır. Lokalda bulunan sunucunuzun bir de Azure tarafında replikası tutulmaktadır. Bir felaket durumunda Azure’daki replika ile kesintisiz çalışmaya devam edebilmektedir.  

Sql Server 2012’de AlwaysOn groups kapsamında 4 adet replika limiti vardı. Sql Server 2014 ile bu replika sayısı 8’e çıkartıldı.

Performans İyileştirilmeleri:

              

In-memory optimize tablolar ve delayed durability özellikleri Sql Server 2014’ün en belirgin perfomans iyileştirici yeniliklerindendir. Bu iki özelliğe ek olarak, Columnstore indeksler, buffer pool extension, Cardinality estimator, Statistics ve kaynak yöneticisi özellikleri performans arttırcı öğelerdir.

Column store indeksler ilk olarak Sql Server 2012 ile duyurulmuştu fakat bazı kısıtlamaları vardı. Bu kısıtlamaların bazıları Sql Server 2014 ile kaldırıldı. Sql Server 2014 her iki cluster tipi olan non-clustered columnstore indeksleri ve clustered indekleri desteklemektedir. Columnstore indekslerin klasik indekslere göre farkı, kolon bazında veriyi tutarak kolon bazında yönetmesidir. Sorgu işlemlerinide kolon bazında gerçekleştirmektedir.  Columnstore indeksler data warehouse için kullanılmaya en uygun indekslerdir. Büyük veri diye tabir edilen büyük veritabanlarında çok daha iyi sonuç elde edilmektedir. Columnstore indeksler doğru yapılandırıldıklarında 10 kat daha iyi sorgu performansı sunabilmektedirler. Veri sıkıştırmasında da 7 kata kadar daha az yer kaplamaktadırlar. Daha az işlemci kaynağı kullanırlar. Clustered columnstore indeksler sadece Sql Server 2014 Enterprise versiyonunda kullanılabilmektedir.

Clustered indeksler nasıl oluşturulur buna bakalım, Sql Serve management studio arayüzünden ve TSql ile clustered indeksler oluşturmak mümkündür. SSMS üzerindeki tablomuzun indexes kısmına gelip sağ klik – New Index – Clustered Index diyoruz.

clip_image053

SSA-28

Karşımıza gelen pencerede, üst tarafında en az bir kolonun index için seçilmesini söylüyor. Clustered indexler diğer indeks tipleri ile birlikte çalışmayacakları için, eğer farklı tipte bir indeks var ise, clustered indeks oluşturmanıza izin vermeyecektir. Eğer bir tabloda daha önce clustered indeks açtıysanız, yeni bir tane daha açmanıza izin vermiyor.

General sekmesinde Add diyerek hangi kolonu seçeceğimizi belirtiyoruz.

clip_image054

SSA-29

clip_image056

SSA-30

İndeks eklendikten sonra Index key columns ekranına gelmektetedir. Ok ile ekranı kapatıyoruz. Tablomuzun indexes kısmına baktığımızda Clustered indeksin oluştuğunu görüyoruz.

clip_image058

SSA-31

Performans yeniliklerinden biri de, Buffer pool extensions SSD diskler üzerinde fazladan ram kullanabilmemize olanak sağlamaktadır. Bu sayede I/O giriş çıkış değerlerinde ciddi anlamda peformans artışı sağlanmaktadır. Buffer pool extension özelliği Enterprise versiyonunda kullanılabilmektedir.

Sql Server’ın ana amacı, veriyi saklayıp, bu saklanan verinin işlenmesini de ssitem kaynaklarını en yüksek seviyede kullanarak sağlamaktadır. Disk üzerindeki operasyonların hızı bu noktada önem kazanmaktadır. Performansı düşük çoğu Sql sunucusunda disk I/O larındaki düşük performanstan kaynaklanmaktadır. Bu sebepten ötürü, günümüzde sanallaştırma teknolojileri yaygın olmasına rağmen, Sql sunucuları halen fiziksel sunuculara kurulmaktadır. Disklerdeki yetersiz performansı aşmak için daha fazla memory kullanılan sistemler oluşturulmaktadır. Buffer pool extensions ile ilave ram ihityacı ssd diskler üzerinden karşılanmış olur.

Sunucu üzerinde fiziksel ram ilave edilmesi, disk ilavesinden daha maliyetli bir operasyondur. Ayrıca sunucunun kapanmasına ve ekstra ram slotuna ihtiyaç duyulmaktadır. Buffer pool extension ile ilave ram takılmadan ssd disk desteği ile ilave ram sorunu çözülebilmektedir.

Aşağıdaki kod ile Sql serverdaki buffer pool extension aktif hale getirebilir. Takılan Sdd diskin içinde bir klasör belirlenebilir. Tüm ssd diski kullanmanıza da gerek yoktur.

ALTER SERVER CONFIGURATION

SET BUFFER POOL EXTENSION ON

(FILENAME = ‘G:\Sql_buffer_pool\ssd.BPE’, SIZE =  64 GB)

 

Mevcut memory’nizden daha fazla buffer pool ayırmanız gerekiyor, buffer pool klasörüne gidip, buffer pool extension dosyamıza bakalım

clip_image060

SSA-32

 

Bu makalemizde Sql Server 2014’ün yönetimsel yeniliklerinden bahsettik. Genel olarak performansa yönelik değişiklikler ve Azure tarafındaki yenilikler göze çarpmakta. Sql Server 2014, bizlere sunucularımızı yenilemeden mevcut sunucularımız ile daha fazla performans vaad etmektedir. Sürekli donanım ilaveleri yapmak yerine Sql Server 2014’e geçiş yaparak yeni teknolojileri sayesinde daha performanslı Sql sunucuları ile çalışılabilmeyi bizlere sunmaktadır.

 

Makaleyi Paylaş

Cevap bırakın