Bu makalede SQL Server2014 ile gelen bir özellik olan ilişkisel veri tabanlarının ortak bir özelliği olan Delayed Durability den bahsedeceğim. Bu özellik hakkında detaylı bir şekilde konuşmaya başlamadan önce tekrar etmemiz gereken bir özellik var o da bir verinin yazılmasının aşamaları. Veri öncelikle log file olan .ldf dosyasına yazılmadan (log flush), data file olan .mdf veya .ndf dosyalarına yazılma işlemi (page flushing) gerçekleşmez. Veri tabanına verinin yazılması sürecinde işlem commit edilerek bunun bilgisi kullanıcıya dönüş sağlanır ancak aksi bir durumda crash veya buna benzer durumlarda sql server veriyi log dosyasından recover edebileceği için verinin kaybolmamasının garantisini sağlamış olur. Bu aşamada makalemizin konusu olan Delayed Durability bize esneklik sağlayabilir. Kısaca açıklayacak olursak bu özellik sayesinde veri tabanına verinin yazılması sürecinde işlem commit edilmeden kullanıcıya sürecin tamamlandığı bilgisi veriliyor bu güzellik bir özellik gibi görünse de aslında bir dezavantaj aslında işlem tamamlanmış olmuyor bu özelliği kullanırken crash veya buna benzer durumlarda sql […]
SQL Server’da partitioning, büyük veritabanı tablolarını daha yönetilebilir ve performanslı hale getirmek amacıyla kullanılan bir tekniktir. Bu teknik, tablonun verilerini fiziksel olarak değil, mantıksal olarak parçalara ayırır. Veriler, belirli bir partition function ve partition scheme kullanılarak farklı bölümlere yönlendirilir. Partitioning, özellikle büyük veri kümeleriyle çalışan veri tabanlarında sorgu performansını artırır ve veri yönetimini kolaylaştırır. Partition Function ve Partition Scheme nedir? Partition Function: Verilerin hangi kriterlere göre bölüneceğini belirler. Örneğin, bir tarih aralığına göre verileri ayırmak. Partition Scheme: Verilerin hangi filegroup’larda depolanacağını belirler. Örnek olarak Range LEFT ve Range RIGHT olmak üzere iki ayrı tabloda partition nasıl yapılır sizlere göstereceğim. İlk olarak Range LEFT olan partition yapısından başlayacağım. Öncelikle Veri tabanıma yeni filegroup ve file ekliyorum Şimdi sıra FUNCTION ve SCHEME oluşturmakta ben tablomu yıllık olarak partition yaptım sizler ihtiyaçlarınız doğrultusunda aylık,günlük vs yapabilirsiniz. LEFT partition dediğimiz olay vermiş olduğunuz tarih aralığına eşit bir veri geldiğinde bu veriyi solundaki partition […]
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 […]
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. […]
Daha önceki yazımızda SQL Server Agent kavramı hakkında bilgilerimizi paylaşmıştık bu yazımızda SQL Server Agent kullanırken olmazsa olmalarımız kullandığımızda SQL Server Agent işlemlerini yapabilmemizi sağlayan Job ve Schedule hakkında daha detaylı bilgi verip derinlemesine öğrenip uygulama üzerinde de nasıl kullanırız bunu göstermeye çalışacağım, SQL Server Agent veri tabanımızın işlemlerini gerçekleştirip veri tabanı hakkında otomatik işlemler yapmamızı sağlayan bir SQL kavramıydı, şimdi otomatik olarak veri tabanımız için her 30 saniyede kayıt almasını sağlayan Job işlemi yapmaya başlayalım, bu işlemi yapmadan önce bilgisayarımızdan SQL Server Configuration Management adlı uygulamamızı açıyoruz burada uygulamanın sol kısmında yer alan SQL Server Services uygulamasına tıklayıp sağ tarafta açılan menüden SQL Server Agent yazan alana sol ardından sağ klik yapıp start diyerek SQL Server Agent’ı çalıştırıyoruz, “state” barı “stopped” olan durumlarda geçerlidir eğer çalışıyorsa buna gerek kalmıyor. Bu işlemi yapıp SQL Server Agent Servisini çalıştırdıktan sonra SQL Server Management Studio da işlemlerimizi yapmaya başlayabiliriz, bu başlatma işlemimizi […]
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 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 […]
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 […]
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 […]
SQL Server’da Columnstore Index Arşivlenmiş veriler, büyük veri ambarları ve analitik sorgular için performansı artıran bir index türüdür. Geleneksel satır tabanlı Index yerine, verileri sütunlar halinde depolar ve sorgu performansını önemli ölçüde artırır. MSSQL Server ‘da ColumnStore İndex ‘in Avantajları, Kullanım alanları , Sürümlere göre farkları , Performansa etkisi ve en önemlisi Data boyutunuzdaki Compress(Sıkıştırma) özelliğini nasıl kullandığını anlatmaya çalışacağım. İlk olarak SQL Server 2012‘de tanıtılan Columnstore Index, sütun bazında depolanan İndex’in oluşturulmasına olanak tanıyan ve Memory kullanan bir yapıdır. Sorgu performansını mükemmel seviyeye taşıyabilecek bir index türüdür. Bir columnstore index, verileri farklı bir index Pagelerde depolar ve verileri büyük ölçüde sıkıştırır. Ayrıca, işleme hızını büyük ölçüde artıran ve CPU kullanımını azaltan yeni bir Batch Mode Processing modu sunar. Yeni depolama türü, sıkıştırılmış veriler ve batch mode processing işleminin birleşimi, SQL Server’ın daha az veri okumasını ve sorgu performansını büyük ölçüde iyileştirmesini sağlar. Peki bu yeni index geleneksel index’den nasıl […]