Forum

SQl Server 2005'ten...
 
Bildirimler
Hepsini Temizle

SQl Server 2005'ten SQL Server 2008'e migration sonrası execution planlar

6 Yazılar
4 Üyeler
0 Likes
474 Görüntüleme
(@ugurinal)
Gönderiler: 145
Estimable Member
Konu başlatıcı
 

Merhaba,


Sistemimizde çalışan SQL Server 2005 veritabanını SQL Server 2008 sürümüne yükseltmeyi planlıyoruz. Benim sormak istediğim soru; SQL Server 2005 sürümünden SQL Server 2008 sürümüne migration sonrasında çalışma(execution) planlarda bir değişiklik olup olmadığı. Örneğin, Oracle 10.2 sürümünden 11.2 sürümüne migration olduğunda, Oracle 10g de çalışan optimize edilmiş kompleks SQL ad-hoc sorgularının çalışma planlarında, hem Oracle üst sürümde yeni gelen optimizer parametreleri sebebiyle, hemde eski sürümde "false" olup yeni sürümde "true" olan mevcut bazı optimizer parametre(veya tersi) değişikliği yüzünden, cost bazlı belirgin farklılıklar oluyor. Bu sebeple tüm SQL ad-hoc sorgularının gövde yapısı bile değiştirilebildiği gibi, cambaz misali binlerce parametre arasında dene-yanıl ile aynı cost değerine sahip çalışma planını yakalamaya çalışıyoruz...


Kısacası, SQL Srv 2005'den SQL Srv 2008'e yükseltmelerde, Oracle sürümleri arasındaki optimizer parametre farklılıklarından kaynaklanan çalışma planı "cost değerlerinin" artışı sıkıntısının, MS SQL Srv platformalarında da olup olmadığını öğrenmek istiyorum. Bu 2 platform arasında gerçek ortamda migration yapmış arkadaşlardan gelecek cevapları sabırsızlıkla bekliyorum.


Teşekkürler, 


 

 
Gönderildi : 20/04/2011 18:36

(@cozumpark)
Gönderiler: 16309
Illustrious Member Yönetici
 

Microsoft'un geriye dönük versiyon uyumluluğu konusundaki yüksek stabilitesi SQL Server tarafında da epey yerleşmiştir. SQL 2000'den 2005'e geçişlerde -normalde bug düzeltmesi olarak bile görülebilecek- birkaç hata 2005>2008 geçişlerinde spesifik durumlar haricinde yaşanmamaktadır. Örneğin sql 2000'de bir tablodaki trigger o tablonun kendisinde bulunan bir sütunu silmeye çalıştığında hata vermeden işlem gerçekleşmekteydi ancak bu durum nested triggerlarda büyük sorunlara neden olduğu için 2005 ve sonrasında yasaklandı ve bir trigger'în kendi tablosuna dokunması, ayrıca nested trigger'ların kendini tetikleyen ve ayrıca işlem sürecinin bir parçası olan herhangi bir öğeye müdahalesi engellendi. Bu durum SP'ler için de geçerlidir.


SQL Server 2008 sunucusu üzerinde 2005 uyumluluk modunda sql 2005 sürümü veritabanlarınızı sorunsuzca çalıştırabilirsiniz. Tabii bu durumda SQL 2008'in yeni veritiplerinden ve özelliklerinden o veritabanı faydalanamazsınız.


2005'ten 2008'e geçiş öncesinde 2005'e son sürüm hizmet paketinin mutlaka yüklenmesi önerilmektedir. Ayrıca 2005teki kullanıcı rolleri ve bu rollerin yetkileri 2008'e taşınmamaktadır. Siz bunları elle oluşturmalı; ya da bu eksikliği farkedip geliştirilen sorgu ve uygulamalardan yardım almalısınız. Elle oluşturmanız en iyisi çünkü spesifik sorunları böylece yaşamamış olursunuz.

 
Gönderildi : 21/04/2011 01:11

(@ugurinal)
Gönderiler: 145
Estimable Member
Konu başlatıcı
 

Mert bey merhaba,


Cevabınızda benim sorumun cevabı yok. Hizmet paketleri değil benim sorum, roller ve yetkilerde değil. SQL Server 2008 üstünde, "SQL Server 2005 uyumluluk modunda" sorgular çalıştırıldığında explain planlarında sorun olmayacağını ve 2005 modun geçerli olacağını biliyorum; keza aynısı Oracle 10.2 sürümünden 11.2 ye yükseltmelerde de, yeni Oracle 11.2 veritabanında alttaki sorgu ile explain plan uyumluluk modu 10.2.0.4 olmakta. Bu istenen bir durum değil benim tarafımdan. Çünkü bu durumda 11.2 ile gelen o kadar çok geliştirme ve yenilikten mahrum kalıyorsunuz ki şaşırırsınız...


SQL> alter session set optimizer_features_enable='10.2.0.4'


Ben sorumu yinelemek istiyorum;


"SQL Server 2005'den SQL Server 2008'e yükseltme olduğunda, Oracle sürümleri arasındaki optimizer parametre farklılıklarından kaynaklanan SQL ad-hoc sorgularının çalışma planlarındaki "cost değerleri" bazında farklılık(sıklıkla negatif yönde) sorununun aynısının, SQL Server 2008'de de olup olmadığını - - gerçek ortamda migration öncesi/sonrası -- test eden, gözlemleyen varmı? ve aynı bu sorun SQL Server 2008 de de varmı?"


Teşekkürler,

 
Gönderildi : 21/04/2011 13:11

(@turgaysahtiyan)
Gönderiler: 344
Reputable Member
 

Uğur bey merhaba,


Mailinizi gözümden kaçırmışım şimdi cevap veriyorum kusura bakmayın.


şöyle bir workaround oluşturabilirsin.


sys.dm_exec_query_stats dmv sinde execute edilen query için performance bilgileri tutulamkta. ayrıca bu query execute edilirken kullandığı planıda saklar.


bu dmv de ilgileceneğimiz 2 kolon var.Query_hash ve query_plan_hash. query_hash adından anlaşılacağı üzere query nin hash i. SP değişimde query aynı kalacağı için bu hash bilgi aynı kalacak.


query_plan_cach ise planın hash'i.


Yapacağımız şu. Aynı query i 2 farklı SP'li makinada çalıştırıp query_plan_cach leri birbirinden farklı mı diye bakıcaz.


Peki bunu topluca nasıl yapabilir. Bunun içinde SQL profiler ın replay özelliğini kullanabilirsin. ana server dan 1 gün boyunca profiler ile veri toplar. sonra bu veri file ını SP2 olan makinada distrubte edersin.


Sonrada 2 tarafın query_stats dmv lerini karşılaştırırsın.


bunu yaptıktan sonrada beni bilgilendirirsin. sonuçları merak ediyorum açıkçası 🙂

 
Gönderildi : 08/06/2011 17:43

(@ugurinal)
Gönderiler: 145
Estimable Member
Konu başlatıcı
 

Teşekkürler Turgay bey. Beklediğim cevap buydu.

 
Gönderildi : 09/06/2011 12:49

(@huseyintemiz)
Gönderiler: 110
Estimable Member
 

Evet yaptıklarınızı ve sonuçları bize bildirirseniz çok iyi olacak.


 İyi çalışmalar.

 
Gönderildi : 10/06/2011 15:26

Paylaş: