T-SQL

SQL Server Plan Cache Temizlemenin 9 Farklı Yolu

SQL Server 2 gün önce

SQL Server Cache Temizleme Yöntemleri Bu yazımızda SQL Server’da cache problemleri ile karşılaştığımızda hangi yöntemle nasıl çözümler üretebileceğimizin üzerinde duracağız. Bu işlem sistemde öngörülemeyen sorunlara yol açabileceğinden, komutları çalıştırmadan önce uzmanlardan yardım almanızda fayda olacaktır.   Cache üzerinde sorun yaşamamıza neden olacak bazı durumlar vardır; Query’lerde çok fazla Recompile kullanımı. Özellikle Store Procedure içinde yer alan Option Recompile kullanımı. Dynamic T-SQL code’ların çok fazla kullanımı. SQL Server Instance’ın ihtiyacı olan memory’den daha az memory verilmesi. Uzun süre çalışan ve size olarak çok fazla data çeken query’ler Index’siz kullanılan query’ler. Birden fazla SQL Server Instance kullanımında var olan Memory’den daha fazla memory kullanımına izin verilmesi.   Yukardaki durumlar memory dar boğazı yaşamamıza neden olacaktır ve bunun sonucunda cache temizleme ihtiyacı duyacağımız durumlar ortaya çıkması olasıdır. Cache temizlemenin birçok yöntemi vardır. Bu yöntemleri birlikte ele alacağız.   1-) DBCC FREEPROCCACHE Bu komut yardımı ile bir Resource pool’u ya da specific bir planı […]

SQL SERVER PARTITION SPLIT-MERGE

T-SQL 1 ay önce

Partitioning Nedir? SQL Server’da partitioning (bölümleme), büyük veritabanlarını yönetilebilir parçalara ayırmak amacıyla kullanılan bir tekniktir. Bu sayede büyük veri setlerinin yönetimi daha verimli hale gelir. Tabloyu veya indeksleri birden fazla bölüme ayırarak, her bölümün ayrı bir veri dosyasında saklanmasını sağlarsınız. Bu, sorgu performansını artırabilir ve bakım işlemlerini kolaylaştırabilir. Partition Range Split ve Merge: Range Split: Partitioning aralığını (range) bölme işlemi, mevcut bir partition’un iki ayrı bölüme ayrılması anlamına gelir. Bu, veri büyüdükçe daha ince kontrol sağlamak için yapılabilir. Merge: Partition’ları birleştirme işlemi, veritabanı yapısını sadeleştirmek veya daha büyük veri kümelerini tek bir partition içinde toplamak için kullanılır. Partition split ve merge işlemleri yaparken kullanılan partition tipi çok önemlidir. Range RIGHT ve Range LEFT arasında bazı önemli temel farklar bulunmaktadır. Bu farklar var olan partition yapınızı güncellemek,yeni bir bölümlemeye sahip olmak istediğinizde hali hazırda kullanımda olan partition bölümlemenizin bozulmasına sebebiyet verebilir. Peki nedir bu Farklar; Tablonuzda Range LEFT olan bir partition […]

SQL Server DMV ve DMF – 6

SQL Server 2 ay önce

Bu yazımızda DMV ve DMF Serimizin 6.sına devam edeceğiz. Bir önceki seride Memory’ye ilişkin DMV ve DMF’leri ele almıştık. Bu yazıda Memory konusunda devam edeceğiz. SQL server’da Memory kavramı en önemli kavramlardan biridir. Özellikle tüm transaction işlemlerinin önce Buffer sonra disk üzerinden devam ettiğini düşünürsek buffer’ın oynadığı kritik rolü daha iyi anlayabiliriz. Bu yazıda Memory’nin durumunu ve monitör edilmesine bakacağız. Özellikle Performans sorunlarında memory konusunda sorun yaşandığı durumda nasıl okumak gerektiği önemli rol oynamaktadır. Hangi database’de, hangi tablo’da sorun yaşandığına ilişkin bilgilere bu paylaşım sonrasında görebileceğiz. SQL Server’ın Memory kullanım durumunu incelediğimde; select physical_memory_in_use_kb/1048576.0 AS ‘physical_memory_in_use (GB)’, locked_page_allocations_kb/1048576.0 AS ‘locked_page_allocations (GB)’, virtual_address_space_committed_kb/1048576.0 AS ‘virtual_address_space_committed (GB)’, available_commit_limit_kb/1048576.0 AS ‘available_commit_limit (GB)’, page_fault_count as ‘page_fault_count’ from  sys.dm_os_process_memory; Görsel – 1   Physical_memory_in_use: Kullanımda olan Fiziksel Memory miktarını gösterir. locked_page_allocations: Memory’de lock’lanmış olan Page’lerin miktarını belirtir. virtual_address_space_contained: SQL Server VAS(Virtual Adress Space) için ayrılan miktarı belirtir. available_commit_limit: SQL Server tarafından kullanılabilecek Memory Miktarını gösterir. […]

SQL SERVER’DA LINKED SERVER KULLANIMI – 2

SQL Server 3 ay önce

SQL Server’da Linked Server Kullanımı makalemizin ikinci bölümünde uygulamamıza göre ayarlamaları yapabilmeyi ve sorgu çalıştırma yöntemlerini anlatmaya çalışacağız. Birinci bölüme ulaşmak için SQL SERVER’DE LINKED SERVER KULLANIMI – 1 linkine tıklayabilirsiniz. SERVER OPTIONS Collation Compatible: Linked server’da “collation compatible” seçeneği, iki veritabanı arasındaki metin karşılaştırmalarında ve sıralamalarında uyumluluğu belirler. Bu seçenek, bir linked server’a bağlanırken, yerel veritabanının ve linked server’daki veritabanının collation ayarlarının uyumlu olup olmadığını kontrol eder. True: Karşılaştırma ve sıralama işlemlerinin sorunsuz bir şekilde yapılacağı anlamına gelir. Örneğin, karakter setleri ve sıralama kuralları arasında tutarsızlık olmadığında, bu ayar kullanışlıdır. False: Metin karşılaştırmalarında ve sıralamalarında sorunlar çıkabilir. Örneğin, veritabanları farklı diller için ayarlanmışsa, bir sorgu doğru sonuçlar vermeyebilir. Data Access: Linked server’da “data access” seçeneği, linked server üzerinden veritabanına veri erişiminin etkin olup olmadığını belirler. Bu seçenek, linked server ile iletişim kurarken veri okuma, yazma ve güncelleme işlemlerinin yapılabilip yapılmayacağını kontrol eder. True: Sorguların, veri güncellemelerinin ve diğer veri […]

SQL SERVER’DA LINKED SERVER KULLANIMI – 1

SQL Server 3 ay önce

SQL Server’da Linked Server Kullanımı SQL Server, farklı veri kaynakları arasında veri entegrasyonunu kolaylaştıran bir dizi özellik sunar. Bunlardan biri de “Linked Server” (bağlantılı sunucu) özelliğidir. Linked Server, SQL Server’ın birden fazla veritabanı sunucusuyla iletişim kurmasına ve bu sunuculardaki verilere erişmesine olanak tanır. Bu makalede, SQL Server’da Linked Server özelliğinin nasıl yapılandırılacağı, kullanımı ve yönetimi hakkında bilgi aktarmaya çalışacağım. Makalenin içeriği detaylı ve uzun olacağı için sizleri de okurken sıkmaması adına iki parçaya bölerek anlatmaya çalışacağım. İlk bölümde Linked Server’in ne işe yaradığını ve kurulumunda kullanılan 4 farklı seçeneği inceleyeceğiz Linked Server Nedir? Linked server, SQL Server’a başka bir SQL Server instance’ı ya da başka bir veri kaynağı (örneğin, Oracle, Excel, Access gibi) ile bağlantı kurma yeteneği kazandıran bir yapıdır. Bu özellik, farklı veri kaynakları arasında sorgular çalıştırmayı, veri almayı ve veri yazmayı mümkün kılar. Bu makalede yapacağımız örnekleme iki farklı sunucu kaynağında bulunan SQL Server arasında gerçekleştirilecek. Öncelikle Linked […]

DDM(Dynamic Data Masking)

T-SQL 4 ay önce

Veri yönetiminde karşılaşılan zorluklardan biri, hassas bilgilerin korunmasını sağlarken bu bilgilerin kullanımını sürdürmektir. Dynamic Data Masking (DDM), bu dengenin sağlanmasına yardımcı olarak, veri tabanlarındaki hassas verileri gizleyip, yetkili kullanıcıların yalnızca gerekli bilgileri görmesini mümkün kılar. Dynamic Data Masking’de default, email, ve partial olmak üzere üç adet parametre bulunmaktadır. default: Bu yöntem ile yapacağınız veri maskeleme işlemlerinde kolonun veri tipine göre maskeleme işlemi yapar. Metinsel kolonlarda veri maskelemeyi ‘xxx’ değeri ile yapar. Sayısal kolonlarda veri maskelemeyi tek byte’lık 0 değeri ile yapar. Tarihsel kolonlarda veri maskelemeyi ‘01.01.1700 00:00:00.0000000’ değeri ile yapar. email: E-Mail maskeleme işlemininde bu yöntemi kullanırız. Sadece ilk harfini alarak geri kalanını “XXX@XXXX.com” şeklinde şifreler. Örneğin;FXXX@XXXX.com partial: Veriyi istediğiniz formatta maskeleyebileceğiniz fonksiyondur.Kullanımına Örnek vermek gerekirse; partial(2,A,2) fonksiyonuyla maskelenmiş bir kolonda verilerin baştan iki karakteri ve sondan iki karakterini gösterecek kalan karakterlerini A harfiyle maskeleyecektir. random:Veriyi belirlemiş olduğunuz değerler arasında rastgele değerlerle maskeler. Numaric  alanlarda kullanılır. Örnek vermek gerekirse; random(10,20) fonksiyonuyla kolona gelen […]

SQL Server Table Partition Switch

SQL Server 5 ay önce

Modern veri merkezlerinde ve büyük ölçekli bilişim sistemlerinde, sistemlerin esnekliği ve verimliliği üzerine yapılan çalışmalar, partition switch’lerin (bölünme anahtarları) kritik rolünü giderek daha belirgin hale getirmektedir. Bu yazımızda sizlere Partition Switch işleminden bahsedeceğim. Partition Switch öncesi Partition işleminin nasıl yapıldığı hakkında bilgi almak için Duran BÜYÜKÖZTÜRK hocamın SQL Server Table Partition Oluşturmak makalesine göz atabilirsiniz. Öncelikle yapısal olarak birebir eş iki tablo oluşturuyoruz (Alan sayıları ve alanların Data tipleri eşit ve her ikisi de aynı Partition schema üzerinden partiton yapılmış). Resimde görüldüğü üzere içerisinde veri bulunan tablomuz ‘Satislar’, İçerisine switch işlemi ile verileri atacağımız tablomuz ‘Satislar2’. Bu iki tablo yapısal olarak birbirleriyle eş tablolardır ve aynı partition schema üzerine partition yapılmıştır. SELECT p.partition_number,p.partition_id, fg.name AS [filegroup],r.boundary_id, CONVERT(DATE,r.value) AS BoundaryValue, p.rows FROM sys.tables AS t INNER JOIN sys.indexes AS i ON t.object_id = i.object_id INNER JOIN sys.partitions AS p ON i.object_id = p.object_id AND i.index_id = p.index_id INNER JOIN sys.allocation_units a […]

MSSQL Server Tablodaki Kolonun Yerini Değiştirme

SQL Server 6 ay önce

SQL Server’da tablo oluştururken kolonu yanlış konumlandırdım diyenlerdenseniz doğru yazıyı okuyorsunuz. SQL Server’da bir tablo oluştururken kolonların sırasını yanlış konumlandırabilirsiniz. Ancak, kolonların sırasını değiştirmek oldukça kolaydır ve aşağıdaki örnek olarak yaptığım adımları izleyerek bunu yapabilirsiniz. Test Veritabanımızın altında bulunan “kisiler” tablosunu oluştururken sırasıyla “ad” ve “soyad” kolonlarını oluşturmak isterken önce “soyad” ardından “ad” kolonunu yazdığınızı varsayalım. Tabloyu silip tekrar oluşturmak veya kolon isimlerini değiştirmekte bir yöntemdir ancak burada içerisine çok sayıda veri yazılan bir tablo olduğunu varsayarak başka bir yöntem kullanacağım. Değişiklik yapmak istediğimiz tabloda “design” kısmına giriyoruz. Görüldüğü üzere “soyad” kolonu önce “ad” kolonu sonra yazılmış. Bunların yerini değiştirmek için “ad” veya “soyad” yazan yerlerin hemen sol tarafında bulunan ok işaretinden istediğimiz yere sürükleyip bırakıyoruz. Yapmamız gereken tek işlem bu aslında.   Görüldüğü üzere kolonların yerleri değişti. Bu noktada yapılan işlemi kaydetmemiz lazım. Değişiklikleri kaydettiğimizde karşımıza aşağıdaki hata gelmektedir. Hata Mesajı: Değişikliklerin kaydedilmesine izin verilmez. Yaptığınız değişiklik aşağıdaki tablonun […]

SQL Server AlwaysON “Not Synchronizing / Suspect”

SQL Server 8 ay önce

“Not Synchronizing / Suspect” SQL Serer AlwaysOn mimarisinde bulunan sunucuların veri tabanlarında bu sorunun meydana gelmesinde birçok neden vardır. Bunlar; Ağ Sorunları: AlwaysOn mimarisinde, ana sunucu ve ikincil sunucular arasında veri senkronizasyonu için gerekli olan ağ bağlantısı sorunları. Disk Sorunları: Veri tabanı dosyalarının tutulduğu disklerde disk doluluğu, disk arızası gibi disk sorunlarının meydana gelebilir. Log Dosyası Sorunları: Veri tabanlarının log dosyalarının bozulması veya dolması durumu. Bekleyen İşlemler: Veri tabanında bekleyen bir işlem (örneğin, büyük bir sorgu veya bir yedekleme işlemi) diğer işlemleri engellemesi durumunda. Veri tabanı Bozulması: Veri tabanı dosyalarında veya yapılarında bozulma meydana gelmesi. Bakım Yetersizliği: Düzenli yedekleme, veri tabanı kurtarma işlemleri vb. gibi veri tabanı yönetimi için gerekli düzenli bakımların yapılmaması. Bu gibi durumlarda, genellikle SQL Server hata günlüklerine bakarak daha spesifik bir sorun tespit edilebilir ve ardından uygun çözüm yolları belirlenebilir. Biz bu makalede disk sorunu ile karşılaşacağımız için disk sorununun tespiti ve çözümü üzerine gideceğiz. Karşılaşabileceğimiz […]

SQL Server DMV ve DMF – 2

SQL Server 8 ay önce

Bu yazımızda DMV ve DMF serimizin 2.sine devam edeceğiz. Yazımızda sql server query execution sonuçlarını montior etme ve bunları nasıl anlamlandırabileceğimize bakacağız. Yazı sonunda hazır olarak çoğumuzun kullandığı bu DMV ve DMF’lerin nerede ve ne için kullanıldığını öğrenmiş olacağız. Bu seride Connection, Session ve Request bölümlerini inceleyeceğiz. Task ve Worker bölümleri operating system ile alakalı olduğundan dolayı bir sonraki bölümde onları ele alacağız. SQL Server bir session’ın process’i aşağıdaki gibi gerçekleşmektedir. Görsel – 1 Bu süreci detaylandırmak istersek adım adım aşağıda bunları ele alabiliriz. Sql Server’da connection yapıldıktan sonra unique olarak kendine özel bir session alır. Görsel – 2 session_id: Session’ın Id’si connect_time: Connection’ın gerçekleştirildiği tarih net_transport: SQL Server’a gerçekleştirilen bağlantı türü auth_scheme: Gerçekleştirilen bağlantının tipi client_net_address: Bağlantı gerçekleştiren Session’ın IP bilgisi num_reads: Session’ın yapmış olduğu okuma sayısı num_writes: Yapmış olduğu yazma sayısı last_read: Yapılan son okumanın tarihi last_write: Yapılan son yazmanın tarihi   Görsel – 3 ve Sql Server […]