Sql Server ve Prompt Engineering Nedir ?

By | August 13, 2024

Selamlar herkese, 

Bugün yazdığım bu metnin amacı, üzerinde durduğumuz özelliğin örneklerinin kendine özgü olduğunu ve bu özelliği kullanarak yazdığımız kodlardan dolayı bize ithamlarda bulunanların ne kadar yanlış yolda olduğunu göstermek için yazdım. Başlığı belirledim ancak içeriği ChatGPT’ye yazdırdım. Yani, SQL yazmayı bilmeyebilirsiniz, ancak GPT’ye istediğinizi yazarak ve verilen kodları SQL Server sunucunuzda çalıştırarak işlem yapabilirsiniz. Artık SQL kodunu herkes yazabilir. Fark, tecrübedir. Kodu yazmak ya da GPT’ye yazdırmak değil, tecrübenizle nasıl yorumladığınız ve çözdüğünüzdür.

Hadi GPT’ye soralım. ( Ben Poe kullanıyorum. Kaynak paylaşımını da ekliyorum. İsterseniz linkten de erişebilirsiniz.  https://poe.com/s/tpLJrRZ4b6izwvc9BrzF ) 

Soru1: SQL Server da extended events nedir ve ne amaçla kullanılır ? Örnekleri ile bana anlatır mısın?

SQL Server’da Extended Events, olayları izlemek, toplamak ve analiz etmek için kullanılan bir hata ayıklama ve izleme mekanizmasıdır. SQL Server 2008 ve sonrasında sunulan bu özellik, Profiler’in yerini almış ve daha hafif, daha esnek ve daha performans odaklı bir izleme mekanizması sunmuştur.

Extended Events’in bazı temel özellikleri şunlardır:

  • Hafiflik: Extended Events, Profiler’a göre daha az sistem kaynağı kullanır. Bu nedenle, üretim sistemlerinde performans etkisi daha az olacaktır.
  • Esneklik: Olayların izlenmesi ve toplanması için çeşitli seçenekler sunar ve detaylı özelleştirme imkanı sağlar.
  • Performans Odaklı: Daha az etki ile daha fazla olayı izleyebilir ve toplayabilir.

Extended Events, aşağıdaki amaçlarla kullanılabilir:

  1. Performans Sorunlarını Tanımlama: SQL Server’daki performans sorunlarını tanımlamak için sorgu süreleri, engellenme olayları, indeks kullanımı vb. gibi olayları izleyebilirsiniz.
  2. Deadlock ve Block Analizi: Deadlock ve block durumlarını izlemek ve analiz etmek için kullanılabilir.
  3. İşlem İzleme ve İzleme Logları: Belirli işlemlerin izlenmesiiçin kullanılabilir ve izleme logları oluşturmak için ideal bir araçtır.
  4. Güvenlik İzleme: Yetkilendirme değişiklikleri, başarısız oturum açma girişimleri gibi güvenlik olaylarını izlemek için kullanılabilir.

Extended Events ile bir örnek oluşturalım:

  1. Query Sürelerini İzleme:
    Aşağıdaki kod bloğu, SQL Server’da bir veritabanındaki sorguların çalışma sürelerini izleyen bir Extended Events session oluşturur.

CREATE EVENT SESSION QueryDurationMonitoring ON SERVER
ADD EVENT sqlserver.sql_statement_completed

    ACTION(sqlserver.database_id, sqlserver.sql_text, sqlserver.tsql_stack) 
    WHERE sqlserver.database_id = DB_ID(‘YourDatabaseName’) 
)
ADD TARGET package0.event_file

    SET filename = ‘C:\Temp\QueryDurationMonitoring.xel’
);

  1. Extended Events Session’ı Başlatma:
    Oluşturduğunuz session’ı başlatarak izlemeyi başlatabilirsiniz.

sql

ALTER EVENT SESSION QueryDurationMonitoring ON SERVER STATE = START;

  1. Session’ı Durdurma ve Silme:
    İzleme işlemi bittiğinde session’ı durdurabilir ve silebilirsiniz.

sql

ALTER EVENT SESSION QueryDurationMonitoring ON SERVER STATE = STOP;
DROP EVENT SESSION QueryDurationMonitoring ON SERVER;

Bu örnekte, belirli bir veritabanındaki sorguların çalışma sürelerini izlemek için Extended Events’i kullandık. Bu şekilde, performans sorunlarını tanımlamak ve gidermek için izleme yapabilirsiniz. Extended Events, SQL Server’da çeşitli senaryolar için kullanılabilen güçlü bir araçtır.

Soru2: Extended Events ile başka hangi olayları izleyebilirim? ( https://poe.com/s/RHgImFoVvJkPZTvEmVVb )

Extended Events, SQL Server’da çeşitli olayları izlemek için geniş bir yelpazede kullanılabilir. Aşağıda, Extended Events ile izleyebileceğiniz bazı olay türlerinin bir listesi bulunmaktadır:

  1. sqlserver.sql_statement_starting / sqlserver.sql_statement_completed: Bir SQL ifadesinin başlatılması veya tamamlanması.
  • sqlserver.sp_statement_starting / sqlserver.sp_statement_completed: Bir stored procedure çağrısının başlatılması veya tamamlanması.
  • sqlserver.rpc_starting / sqlserver.rpc_completed: Bir uzak prosedür çağrısının başlatılması veya tamamlanması.
  • sqlserver.error_reported: Bir hata rapor edildiğinde.
  • sqlserver.lock_acquired / sqlserver.lock_released: Bir kilidin alındığı veya serbest bırakıldığı zaman.
  • sqlserver.deadlock_priority_change: Bir deadlock önceliğinin değiştirilmesi.
  • sqlserver.dropped_connection: Bir bağlantının bırakıldığı zaman.
  • sqlserver.login: Bir kullanıcının oturum açtığı zaman.
  • sqlserver.logout: Bir kullanıcının oturumu kapattığı zaman.
  1. sqlserver.sp_statement_starting: Bir stored procedure çağrısının başladığı zaman.
  1. sqlserver.query_post_execution_showplan: Bir sorgunun yürütülmesinden sonra oluşturulan sorgu planını gösterir.
  1. sqlserver.sql_batch_completed: Bir SQL batch’in tamamlandığını belirtir.

Bu olayların yanı sıra, Extended Events ile özelleştirilmiş izleme senaryoları oluşturabilir ve belirli durumları izlemek için gerekli olayları seçebilirsiniz. Olayların ayrıntılarını ve ne zaman tetikleneceğini belirleyen kriterler de tanımlayabilirsiniz.

Extended Events, SQL Server’daki olayları izlemek ve analiz etmek için oldukça güçlü ve esnek bir araçtır. Belirli bir durumu izlemek ve sorunları tanımlamak için gereken olayları seçerek, performans sorunları, deadlock’lar, güvenlik olayları gibi çeşitli senaryoları ele alabilirsiniz. Bu şekilde, veritabanınızın performansını optimize etmek ve sorunları hızlı bir şekilde tanımlayarak çözmek mümkün olabilir.

Soru3 : Deadlock’ları izlemek için hangi özel olayları eklemeliyim? (https://poe.com/s/vWphtME0CaUaC2CDnUah )

SQL Server’da deadlock’ları izlemek için xml_deadlock_report olayını izlemek en yaygın ve etkili yöntemdir. Bu olay, SQL Server’daki deadlock’ları tanımlamak için kullanılır ve deadlock durumları meydana geldiğinde XML formatında bir rapor oluşturur.

Aşağıdaki örnek SQL betiği, xml_deadlock_report olayını içeren bir Extended Events session oluşturur:

sql

CREATE EVENT SESSION DeadlockCaptureSession ON SERVER
ADD EVENT sqlserver.xml_deadlock_report
ADD TARGET package0.asynchronous_file_target
(
    SET FILENAME = N’C:\Temp\DeadlockCaptured.xel’,
    METADATAFILE = N’C:\Temp\DeadlockCaptured.xem’
);

Bu kod, xml_deadlock_report olayını izleyen bir Extended Events session oluşturur ve deadlock’lar oluştuğunda bu olaylar C:\Temp\DeadlockCaptured.xel dosyasına kaydedilir.

Deadlock’ları izlerken ayrıca diğer bazı olayları da ekleyebilirsiniz. Örneğin, aşağıdaki olayları ekleyerek deadlock’larla ilgili daha geniş bir izleme yapabilirsiniz:

  • sqlserver.lock_deadlock: Bir deadlock durumu oluştuğunda tetiklenir.
  • sqlserver.lock_deadlock_chain: Deadlock zinciri oluşturan tüm işlemleri izler.
  • sqlserver.lock_escalation: Kilit yükseltmelerini izler.

Bu olayları ekleyerek deadlock’ları daha kapsamlı bir şekilde izleyebilir ve analiz edebilirsiniz. Ancak, genellikle xml_deadlock_report olayı deadlock’ları tespit etmek ve analiz etmek için yeterli olacaktır.

Soru4: Extented event ile başka hangi olayları takip edebilirim? (https://poe.com/s/CrkrtGpY2HxSXbwE3CwR)

SQL Server’da Extended Events kullanarak izleyebileceğiniz birçok farklı olay bulunmaktadır. İşte Extended Events ile izleyebileceğiniz bazı yaygın olay türleri:

  1. sqlserver.rpc_completed: Bir remote procedure call (RPC) tamamlandığında tetiklenir.
  • sqlserver.sql_batch_completed: Bir SQL batch’in tamamlandığında tetiklenir.
  • sqlserver.sql_statement_completed: Bir SQL ifadesinin tamamlandığında tetiklenir.
  • sqlserver.error_reported: Bir hata rapor edildiğinde tetiklenir.
  • sqlserver.login: Bir kullanıcının oturum açtığında tetiklenir.
  • sqlserver.logout: Bir kullanıcının oturumu kapattığında tetiklenir.
  • sqlserver.lock_deadlock: Bir deadlock durumu oluştuğunda tetiklenir.
  • sqlserver.lock_escalation: Bir kilit yükseltmesi gerçekleştiğinde tetiklenir.
  • sqlserver.sp_statement_completed: Bir stored procedure çağrısının tamamlandığında tetiklenir.
  1. sqlserver.database_state_change: Bir veritabanı durumu değiştiğinde tetiklenir.
  1. sqlserver.trace_deadlock: Bir izleme deadlock durumu oluştuğunda tetiklenir.

Bu olaylar, SQL Server’daki çeşitli durumları ve etkinlikleri izlemek ve analiz etmek için kullanılabilir. Extended Events’in esnek yapısı sayesinde, izlemek istediğiniz belirli olayları seçebilir ve olayların tetiklenme koşullarını özelleştirebilirsiniz. Bu şekilde, performans sorunlarını tespit etmek, güvenlik denetimlerini gerçekleştirmek veya diğer veritabanı aktivitelerini izlemek için özelleştirilmiş izleme senaryoları oluşturabilirsiniz.

Gördüğünüz gibi SQL Kodlarının hiç birini ben yazdım ve bu kodların hiç biri benim kodum değil. Fakat hedeflediğim ve istediğim konu başlıklarını artık takip etmeme GPT ile çözüm ürettim. 

Arkadaşlar, 2024 yılındayız ve teknoloji o kadar ilerledi ki, bir konuyu bilmeden bile işlerinizi halledebiliyorsunuz. Yapmanız gereken tek şey, doğru şekilde soru sormak. Bu zamanlarda buna Prompt Engineering deniyor. Burada iş bilmez insanlar yok. Lütfen temelsiz ve mantıksız yaklaşımlardan kaçının, çünkü önce insanlığınızı, sonra itibarınızı kaybedebilirsiniz. Özellikle benim gibi yıllardır bu işi yapan, konusunda uzman ve SQL Server ürünü konusunda en değerli ödülü almış birine karşı. Güvenliğiniz ve saygınlığınız için dikkatli olun

Leave a Reply

Your email address will not be published. Required fields are marked *