24 Ocak 2014 Cuma

SQL Server Transaction Isolation Levels

Yapılan bir işlem diğer işlemlerden izole edilmelidir. Yani yaptığımız bir kayıt işleminin diğer işlemleri etkilememesi veya ne kadar etkileyeceğinin belirlenmesi gerekmektedir. Isolation Level ise bu izalosyon seviyesini belirtir.

 SQL Server 2012 5 çeşit izolasyon seviyesini destekler.
1-)Read Uncommitted(level 0)
2-)Read Committed(level 1) 
3-)Repeatable Read(level 2) 
4-)Serializable(level 3) 
5-)Snapshot Isolation 

 Bunlardan ilk 4 tanesi ANSI tarafından belirlenmiş standartlardır.
5 ve 6. maddeler ise SQL Server tarafından desteklenmektedir.
1-)Read Uncommitted
Diğer transactionlar tarafından değiştirilmiş ve işlenmemiş transactionlar okunabilir. Bu seçenek ayarlandığında kaydedilmemiş işlemler okunduğundan Dirty read (Kirli Okuma) olur. Okuma esnasında veri değerleri değiştirilebilir. İzalosayon seviyesi en az kısıtlayıcı değerdedir.
2-)Read Committed 
Diğer transactionlar tarafından değiştirilmiş ancak commit edilmemiş transactionlar okunamaz. Dirty read (Kirli okuma ) olmaz. Bu seçenek Sql Server için defaul seçenektir.
3-)Repeatable Read 
Bir üst seviyedeki bu izolasyon seviyesinde amaç aynı transaction içerisinde aynı okuma sonuçlarını almaktır. Bir transaction da modifiye edilmiş fakat commit edilmemiş veri diğer transactionlar tarafından okunamaz. Ama asıl amacı bir transaction da okunmuş ama henüz commit edilmemiş verinin diğer transactionlar tarafından güncellenememesini sağlamaktır.
4-)Serializable 
En yüksek seviyedeki izolasyon seviyesidir.Repeatable Read Isolation’a ek olarak bu seviyede“Range Lock” mevcuttur.
5-)Snapshot Isolation 
Oracle da bu mantıkla çalışır. Bu izolasyon seviyesinde ReadCommitted den dolayı oluşan Transaction içerisinde kalmış update kayıtlarına erişememe sorunu ortadan kalkar. Transaction içerisinde kalmış ve henüz commit edilmemiş kayıtların tempdb veritabanında snapshotları oluşturulur. Böylece diğer sessionların commit edilmemiş veri üzerinde okuyabilme imkanı sağlanır.

70-461 Sınavında Çıkan Soru Örneği-1
You work as a database developer at ABC.com. ABC has an in-house application named ABCApp3 that runs a Transact-SQL against a SQL Server 2012 database named SalesDB. ABC.com users repoert that ABCApp3 is functioning sluggishly. You discover that concurrent updates are causing blockages on the SalesDB database.
A-You should have the query run in the REPETABLE READ ISOLATION LEVEL
B-You should have the query run in the SERIALIZABLE ISOLATION LEVEL
C-You should have the query run in the READCOMMITED ISOLATION LEVEL
D-You should have the query run in the SNAPSHOT ISOLATION LEVEL
E-You should have the query run in the READPAST ISOLATION LEVEL

 70-461 Sınavında Çıkan Soru Örneği-2 
You work as a SQL Server 2012 database developer at ABC.com. ABC.com has a large database named SalesDB.New rows are inserted into the tables in the SalesDB database and updates to existing rows occur on a high frequency. The inserts and updates often blocked by queries retrieving and reading data.How would you prevent queries that retrieve and read data from blocking queries that insert and update data. 
A-You should have the query run in the REPETABLE READ ISOLATION LEVEL
B-You should have the query run in the SERIALIZABLE ISOLATION LEVEL 
C-You should have the query run in the READCOMMITED ISOLATION LEVEL
D-You should have the query run in the SNAPSHOT ISOLATION LEVEL
E-You should have the query run in the READPAST ISOLATION LEVEL

Sql Server DateTime Veri Tipindeki Datayı Türkçe Formatında Göstermek

  SQL'de tarihleri farklı formatlarda göstermek için FORMAT fonksiyonunu kullanabilirsiniz. Türkçe kısa tarih formatı genellikle "...