Sql Server 2014 Yönetimsel Yenilikler

SQL SERVER 2014 YÖNETİMSEL YENİ ÖZELLİKLER

 

    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.

    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.

SSA-1

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

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.

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.

SSA-4

Service Tiers ve Performance levellar ile ilgili detaylı tablo

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.

SSA-6

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

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.

SSA-8

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

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.

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.

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.

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.

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.

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.

SSA-15

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

SSA-16

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

SSA-17

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

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.

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.

SSA-20

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

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.

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.

SSA-23

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

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.

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.

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.

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.

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.

SSA-29

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.

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

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.