Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
Azure Sanal Makineleri Üzerinde SQL Server
SQL Server veritabanının birincil amacı verileri depolamak ve almaktır; bu nedenle yoğun disk girişi/çıkışı (G/Ç), Veritabanı Altyapısı'nın temel bir özelliğidir. Disk G/Ç işlemleri çok fazla kaynak tüketebileceğinden ve tamamlanması görece uzun sürebileceğinden, SQL Server G/Ç'yi yüksek oranda verimli hale getirme üzerine odaklanır.
SQL Server için depolama alt sistemleri, mekanik sürücüler ve katı hal depolama dahil olmak üzere birden çok form faktöründe kullanılabilir. Bu makalede, Veritabanı Altyapısı G/Ç'sini geliştirmek için sürücü önbelleğe alma ilkelerinin nasıl kullanılacağına ilişkin ayrıntılar sağlanır.
SQL Server, sistemlerin SQL Server G/Ç Güvenilirlik Programı Gereksinimleri altında özetlenen kararlı medyaya garantili teslimi desteklemesini gerektirir.
Bu gereksinim aşağıdaki koşulları içerir ancak bunlarla sınırlı değildir:
- Windows Donanım Uyumluluk Programı
- Yazma sıralaması
- Önbelleğe alma kararlılığı
- Veri yeniden yazma yok
Bu gereksinimleri karşılayan sistemler SQL Server veritabanı depolamayı destekler. Sistemlerin SQL Server depolama çözümü programlarında listelenmeleri gerekmez, ancak gereksinimlerin karşılandığını garanti etmelidirler.
Disk Giriş/Çıkış
Arabellek yöneticisi yalnızca veritabanına okuma ve yazma işlemleri gerçekleştirir. Açma, kapatma, genişletme ve küçültme gibi diğer dosya ve veritabanı işlemleri veritabanı yöneticisi ve dosya yöneticisi bileşenleri tarafından işlenir.
Arabellek yöneticisinin gerçekleştirdiği Disk Giriş/Çıkış işlemleri aşağıdaki özelliklere sahiptir:
G/Ç genellikle zaman uyumsuz olarak gerçekleştirilir ve bu da G/Ç işlemi arka planda gerçekleşirken çağıran iş parçacığının işlemeye devam etmesini sağlar. Yanlış hizalanmış günlük G/Ç gibi bazı durumlarda eşzamanlı G/Ç işlemleri oluşabilir.
Bağlılık G/Ç seçeneği kullanımda değilse, tüm G/Ç işlemleri çağrı iş parçacıklarında gerçekleştirilir. affinity G/Ç maskesi seçeneği, SQL Server disk G/Ç işlemlerini belirtilen CPU alt kümesine bağlar. Üst düzey SQL Server çevrimiçi işlem işleme (OLTP) ortamlarında bu uzantı, G/Ç veren SQL Server iş parçacıklarının performansını artırabilir.
Birden çok sayfa G/Ç'leri, verilerin bitişik olmayan bellek alanlarına aktarılmasını veya bu alanlardan veri çıkışını sağlayan parçala-topla G/Ç ile gerçekleştirilir. SQL Server, birden çok fiziksel G/Ç isteğinden kaçınırken arabellek önbelleğini hızla doldurabilir veya boşaltabilir.
Uzun G/Ç istekleri
Bellek yöneticisi, en az 15 saniye bekleyen tüm G/Ç isteklerini bildirir. Bu işlem, sistem yöneticisinin SQL Server sorunlarıyla G/Ç alt sistemi sorunlarını ayırt etmesine yardımcı olur. Hata iletisi MSSQLSERVER_833 bildirilir ve SQL Server hata günlüğünde aşağıdaki gibi görünür:
SQL Server has encountered ## occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [##] in database [##] (#). The OS file handle is 0x00000. The offset of the latest long I/O is: 0x00000.
Uzun bir G/Ç işlemi, okuma veya yazma işlemi olabilir. İleti şu anda hangisini göstermiyor. Uzun G/Ç iletileri hata değil uyarıdır. BUNLAR SQL Server ile ilgili sorunları göstermez, ancak temel G/Ç sistemiyle ilgili sorunları gösterir. İletiler, sistem yöneticisinin kötü SQL Server yanıt sürelerinin nedenini daha hızlı bulmasına ve SQL Server denetimi dışındaki sorunları ayırt etmesine yardımcı olur. Bu nedenle herhangi bir eylem gerektirmez, ancak sistem yöneticisi G/Ç isteğinin neden bu kadar uzun sürdüğünü ve zamanın gerekçeli olup olmadığını araştırmalıdır.
Uzun giriş/çıkış isteklerinin nedenleri
Uzun G/Ç iletisi, G/Ç'nin kalıcı olarak engellendiğini ve hiçbir zaman tamamlanmayacağını (kayıp G/Ç olarak bilinir) veya yalnızca henüz tamamlanmadığını gösterebilir. Kaybolan bir G/Ç genellikle kilitlenme zaman aşımına yol açsa da, iletiden hangi senaryonun söz konusu olduğunu anlayamazsınız.
Uzun G/Ç'ler genellikle disk alt sistemi için çok yoğun olan bir SQL Server iş yükünü gösterir. Aşağıdaki durumlarda yetersiz bir disk alt sistemi gösterilebilir:
- Yoğun bir SQL Server iş yükü sırasında hata günlüğünde birden çok uzun G/Ç iletisi görüntülenir.
- Performans İzleyicisi sayaçları uzun disk gecikme süreleri, uzun disk kuyrukları veya disk boşta kalma süresi göstermez.
G/Ç yolundaki bir bileşen (örneğin, bir sürücü, denetleyici veya üretici yazılımı), daha yeni isteklere hizmet vermek amacıyla eski bir G/Ç isteğinin hizmetini sürekli erteleyerek uzun G/Ç'lere neden olabilir. Bu sorun, iSCSI ve Fiber Kanal ağları gibi birbirine bağlı ortamlarda oluşabilir (yanlış yapılandırma veya yol hatası nedeniyle). Performans İzleyici aracı, çoğu G/Ç'ye hemen hizmet verildiği için bu sorunun doğrulanmasını zorlaştırabilir. Yedekleme ve geri yükleme, tablo taramaları, sıralama, dizin oluşturma, toplu yüklemeler ve dosyaları sıfırlama gibi büyük miktarlarda sıralı G/Ç gerçekleştiren iş yükleri, uzun G/Ç isteklerini ağırlaştırabilir.
Önceki koşullardan herhangi biri ile ilgili görünmeyen izole uzun giriş/çıkış işlemleri bir donanım veya sürücü sorunundan kaynaklanabilir. Sistem olay günlüğü, sorunu tanılamaya yardımcı olan ilgili bir olay içerebilir.
Verimsiz sorgular veya filtre sürücülerinin neden olduğu G/Ç performans sorunları
Yavaş G/Ç'ye, dizinler ve istatistiklerle verimli bir şekilde yazılmamış veya düzgün ayarlanmamış sorgular neden olabilir. G/Ç gecikmesinin bir diğer yaygın faktörü, veritabanı dosyalarını taratan virüsten koruma veya diğer güvenlik programlarının mevcut olmasıdır. Bu tarama yazılımı ağ katmanını genişletebilir ve bu da ağ gecikme süresi ekler ve bu da veritabanı gecikme süresini dolaylı olarak etkiler. Yaklaşık 15 saniyelik G/Ç senaryosu donanım bileşenlerinde daha yaygın olsa da, iyileştirilmemiş sorgular veya yanlış yapılandırılmış virüsten koruma programlarıyla daha sık G/Ç gecikmeleri gözlemlenir.
Bu sorunların nasıl giderileceği hakkında ayrıntılı bilgi için bkz G/Ç sorunlarının neden olduğu yavaş SQL Server performansını giderme.
SQL Server'da virüsten korumayı yapılandırma hakkında bilgi için bkz. Sql Server ile çalışacak virüsten koruma yazılımını yapılandırma.
Yazma önbelleğe alma depolama denetleyicilerinde
Önbellek kullanmayan G/Ç aktarımları, sabit sürücü dönüş hızları, sürücü kafalarını taşımak için gereken mekanik süre ve diğer sınırlayıcı faktörler nedeniyle mekanik sürücülerde çok daha uzun sürebilir. SQL Server kurulumları, önbelleğe alma denetleyicileri sağlayan sistemleri hedef alır. Bu denetleyiciler disk içi önbellekleri devre dışı bırakır ve SQL Server G/Ç gereksinimlerini karşılamak için kararlı medya önbellekleri sağlar. Önbelleğe alma denetleyicisinin çeşitli iyileştirmelerini kullanarak depolama arama ve yazma süreleriyle ilgili performans sorunlarını önler.
Uyarı
Bazı depolama satıcıları önbellek yerine depolama alanı olarak kalıcı bellek (PMEM) kullanır ve bu da genel performansı geliştirebilir. Daha fazla bilgi için bkz. Windows üzerinde SQL Server için kalıcı bellek (PMEM) yapılandırma ve Linux üzerinde SQL Server için kalıcı bellek yapılandırma (PMEM).
Yazma önbelleği (geri yazma önbelleğe alma olarak da adlandırılır) depolama denetleyicisinin kullanılması SQL Server performansını artırabilir. Yazma önbelleğe alma denetleyicileri ve depolama alt sistemleri, veri açısından kritik bir işlem veritabanı yönetim sistemi (DBMS) ortamında kullanılmak üzere tasarlanmışsa SQL Server için güvenlidir. Sistem hatası oluşursa bu tasarım özelliklerinin önbelleğe alınan verileri koruması gerekir. Bu korumayı elde etmek için harici kesintisiz güç kaynağı (UPS) kullanmak genellikle yeterli değildir, çünkü güçle ilgisi olmayan hata modları oluşabilir.
Important
SQL Server, işlem bütünlüğü ve kurtarma için kararlı medyaya garantili teslime bağlıdır. Hatalarda verilerin korunmasını sağlamayan güvenli olmayan önbelleğe alma işlemi, işlem günlüğü yazma işlemlerinin tutarlılığından bağımsız olarak veritabanlarını bozabilir. Her zaman herhangi bir yazma önbelleği mekanizmasının tam dayanıklılık garantileri sağladığını doğrulayın.
Önbelleğe alma denetleyicileri ve depolama alt sistemleri SQL Server tarafından kullanılmak üzere güvenli olabilir. Bu denetleyicileri içeren yeni amaca yönelik sunucu platformlarının çoğu güvenlidir. Ancak, depolama alt sisteminin veri açısından kritik işlemsel ilişkisel veritabanı yönetim sistemi (RDBMS) ortamında kullanılmak üzere test edilmiş ve onaylanmış olduğundan emin olmak için donanım satıcınıza danışın.
Önbellek alt sistemi güvenlik yönergeleri
Geri yazma önbelleğe alma denetleyicileri belirli güvenlik gereksinimlerini karşılıyorsa performansı artırabilir:
- NvDIMM veya süper kapasitör destekli flash gibi pil destekli önbellek veya geçici olmayan bellek ekleyin.
- Veri açısından kritik OLTP veritabanı ortamları için satıcı tarafından onaylanmalıdır.
- Yalnızca güç kaybını değil tüm hata koşullarını kapsayan koruma sağlayın.
Important
Yalnızca dış UPS'ye güvenmeyin. Üretici yazılımı hataları veya donanım hatası gibi güçle ilgili olmayan hatalar önbellek kaybına neden olabilir.
İleriye yazma günlüğü
SQL Server veri değişikliği ifadeleri mantıksal sayfa yazmaları oluşturur. Bu yazma akışını iki yere yöneldiğini hayal edebilirsiniz: günlüğe ve veritabanının kendisine. Performans nedenleriyle, SQL Server yazmayı veritabanına önbellek tampon sistemi aracılığıyla erteler. Sistem, COMMIT zamanına kadar günlüğe yazmayı yalnızca anlık olarak erteler. Bu yazma işlemleri, veri yazma işlemleriyle aynı şekilde önbelleğe alınmaz. Belirli bir sayfa için günlük yazma işlemleri her zaman sayfanın verileri yazmadan önce geldiğinden, günlük bazen önceden yazma günlüğü (WAL) olarak adlandırılır.
SQL Server, işlemlerin atomiklik, tutarlılık, yalıtım ve dayanıklılık (ACID) özelliklerini bu WAL protokolü aracılığıyla korur.
Önceden yazma günlüğü (WAL) protokolü
Protokol terimi WAL'yi tanımlamak için mükemmel bir yoldur. SQL Server tarafından kullanılan WAL, ARIES (Kurtarma ve Yalıtımdan Yararlanma Semantiği Algoritması) olarak bilinir. Daha fazla bilgi için bkz. Hızlandırılmış Veritabanı Kurtarma Yönetme.
Verilerin düzgün bir şekilde depolandığından ve değiştirildiğinden ve bir hata durumunda bilinen bir duruma kurtarılabilmesinden emin olmak için gerekli olan belirli ve tanımlı bir uygulama adımları kümesidir. Bir ağ tutarlı ve korumalı bir şekilde veri alışverişi yapmak için tanımlanmış bir protokol içerdiği gibi WAL da verileri korumak için protokolü açıklar. SQL Server'ın tüm sürümleri, Win32 CreateFile işlevini kullanarak günlük ve veri dosyalarını açar. SQL Server tarafından açıldığında dwFlagsAndAttributes üyesi FILE_FLAG_WRITE_THROUGH seçeneğini içerir.
Dosya_Bayrağı_Yazma_Anında
SQL Server, veritabanı dosyalarını bayrağını FILE_FLAG_WRITE_THROUGH kullanarak oluşturur. Bu seçenek sisteme herhangi bir ara önbellek üzerinden yazmasını ve doğrudan depolama alanına gitmesini sağlar. Sistem yine de yazma işlemlerini önbellekte tutabilir, ancak onları tembel bir şekilde boşaltamaz. Daha fazla bilgi için bkz. CreateFileA.
seçeneği FILE_FLAG_WRITE_THROUGH , bir yazma işleminin başarılı bir şekilde tamamlanmasını döndürdüğünde verilerin kararlı depolamada doğru şekilde depolanmasını sağlar. Bu özellik, veri bütünlüğünü sağlamak için Write-Ahead Logging (Yazma-Öncesi Günlüğü) protokolü belirtimiyle uyumludur. Birçok depolama cihazı (NVMe, PCIe, SATA, ATA, SCSI ve IDE tabanlı), 512 KB, 1 MB ve daha büyük yerleşik önbellekler içerir. Depolama önbellekleri genellikle pil destekli bir çözüme değil, bir kapasitöre dayanır. Bu önbelleğe alma mekanizmaları, bir güç döngüsünde veya benzer bir hata noktasında yazma işlemini garantileyemez. Bunlar yalnızca sektör yazma işlemlerinin tamamlanmasını garanti eder. Depolama cihazlarının boyutu artmaya devam ettikçe, önbellekler büyür ve bir hata sırasında daha fazla miktarda veri ortaya çıkarabilir.
Linux dağıtımına göre FUA desteği ve bunun SQL Server üzerindeki etkisi hakkında daha fazla bilgi için bkz. Linux'ta SQL Server: Zorlamalı Birim Erişimi (FUA) İç Yapıları.
İşlem bütünlüğü ve SQL Server kurtarma
İşlem bütünlüğü, ilişkisel veritabanı sisteminin temel kavramlarından biridir. İşlemler, ya tamamen uygulanan ya da tamamen geri alınan atomik çalışma birimleridir. SQL Server önceden yazma işlem günlüğü, işlem bütünlüğünün uygulanmasında önemli bir rol oynar.
herhangi bir ilişkisel veritabanı sistemi, işlem bütünlüğüyle ilgili bir kavramı da işlemelidir: planlanmamış sistem hatasından kurtarma. Bu hataya ideal olmayan, gerçek dünyadaki etkiler neden olabilir. Birçok veritabanı yönetim sisteminde sistem hatası, insan tarafından yönlendirilen uzun bir el ile kurtarma işlemine neden olabilir.
Buna karşılık, SQL Server kurtarma mekanizması otomatiktir ve insan müdahalesi olmadan çalışır. Örneğin, SQL Server görev açısından kritik bir üretim uygulamasını destekliyor olabilir ve anlık güç dalgalanması nedeniyle sistem hatasıyla karşılaşabilir. Güç geri yüklendikten sonra sunucu donanımı yeniden başlatılır, ağ yazılımı yüklenir ve başlatılır ve SQL Server yeniden başlatılır. SQL Server başlatılırken, kurtarma işlemini işlem günlüğündeki verilere göre otomatik olarak çalıştırır. Bu sürecin tamamı insan müdahalesi olmadan gerçekleşir. İstemci iş istasyonları yeniden başlatıldığında, kullanıcılar girilen son işleme kadar tüm verilerinin mevcut olduğunu görür.
Otomatik kurtarma ve işlem bütünlüğü, bir hatadan sonra işlemleri geri yüklemek için gereken süreyi ve çabayı azaltmak için birlikte çalışır. Yazma önbelleğe alma denetleyicisi, veri açısından kritik bir işlem DBMS ortamında kullanılmak üzere düzgün tasarlanmamışsa, SQL Server'ın kurtarma yeteneğini tehlikeye atarak veritabanını bozabilir. Bu sorun, denetleyicinin SQL Server işlem günlüğü yazmalarını yakalayıp denetleyici panosundaki bir donanım önbellekte arabelleğe alması ancak bir sistem hatası sırasında bu kaydedilmiş sayfaları korumaması durumunda oluşabilir.
Warning
Önbelleğe alınan yazma işlemleri sistem sıfırlaması nedeniyle atılırsa, bir UPS mevcut olsa bile veritabanı bozulması oluşabilir. Veri kalıcılığını garanti etmek için her zaman yazma önbelleklerinin pil veya eşdeğer teknolojiyle yedeklenmiş olduğundan emin olun.
Disk üzerinde yazma önbelleğe alma riskleri
Çoğu depolama cihazı önbelleğe alma denetleyicisi yazma önbelleği gerçekleştirir. Yazma önbelleği işlevini her zaman devre dışı bırakamazsınız.
Sunucu bir UPS kullansa bile, cihaz önbelleğe alınan yazmaların güvenliğini garanti etmez. Bir UPS'in ele almadığı birçok türde sistem hatası oluşabilir. Örneğin, bir bellek eşlik hatası, işletim sistemi (OS) yakalaması veya sistem sıfırlamasına neden olan bir donanım hatası, kontrolsüz bir sistem kesintisi oluşturabilir. Donanım yazma önbelleğindeki bir bellek hatası da önemli günlük bilgilerinin kaybolmasına neden olabilir.
Yazma önbelleği denetleyicisiyle ilgili başka bir olası sorun sistem kapatma sırasında oluşabilir. Yapılandırma değişiklikleri sırasında işletim sistemini döngüye almak veya sistemi yeniden başlatmak sık karşılaşılan bir durum değildir. Dikkatli bir işleç, sistemi yeniden başlatmadan önce tüm depolama etkinliği sona erene kadar beklemek için işletim sistemi önerisine uyarsa bile, önbelleğe alınmış yazma işlemleri denetleyicide hala bulunabilir. Tuş bileşimine Ctrl+Alt+Del basıldığında veya donanım sıfırlama düğmesine basıldığında önbelleğe alınan yazma işlemleri atılabilir ve bu da veritabanına zarar verebilir.
Kirli önbellek verilerinin atılmasıyla ilgili tüm olası nedenleri dikkate alan bir donanım yazma önbelleği tasarlamak mümkündür ve bu da bir veritabanı sunucusu tarafından kullanılmasını güvenli hale getirir. Bu tasarım özelliklerinden bazıları, önbelleğe alma denetleyicisinin kontrolsüz bir şekilde sıfırlanmaması için RST (sıfırlama) veri yolu sinyalinin kesilmesini, yerleşik pil yedeklemesini ve yansıtılmış veya hata denetimi ve düzeltme (ECC) belleğini içerir. Yazma önbelleğinin bunları ve veri kaybını önlemek için gereken diğer özellikleri içerdiğinden emin olmak için donanım satıcınıza danışın.
SQL Server ile depolama önbelleklerini kullanma
Veritabanı sistemi, beklenmeyen sistem hataları sırasında bile verilerin doğru şekilde depolanmasından ve alınmasından öncelikli olarak sorumludur.
Sistem, mevcut yürütme, birden çok işlem ve çeşitli hata noktalarını göz önünde bulundurarak işlemlerin atomikliğini ve dayanıklılığını garanti etmelidir. Bu özellik genellikle ACID (Bölünmezlik, Tutarlılık, Yalıtım ve Dayanıklılık) özellikleri olarak adlandırılır.
Bu bölümde depolama önbelleklerinin etkileri ele alınıyor. Önbelleğe alma ve alternatif hata modu tartışmaları hakkında daha fazla bilgi için bkz:
- 86903 SQL Server ve önbelleğe alma disk denetleyicileri
- SQL Server'da veri güvenilirliğini genişleten günlük ve veri depolama algoritmalarının açıklaması
Ayrıca aşağıdaki arşivlenmiş içeriği de gözden geçirin:
Bu iki makaledeki kavramlar, SQL Server'ın geçerli sürümleri için genel olarak geçerlidir.
Pil destekli önbelleğe alma çözümleri
Gelişmiş önbelleğe alma denetleyicisi sistemleri disk içi önbelleği devre dışı bırakır ve işlevsel bir pil destekli önbelleğe alma çözümü sağlar. Bu önbellekler önbellekteki verileri birkaç gün boyunca koruyabilir ve hatta önbelleğe alma kartının ikinci bir bilgisayara yerleştirilmesine izin verebilir. Güç düzgün bir şekilde geri yüklendiğinde, daha fazla veri erişimine izin verilmeden önce yazılmamış veriler tamamen boşaltılır. Bu sistemlerin çoğu, en iyi performans için okuma ve yazma önbelleği yüzdesi oluşturmanıza olanak tanır. Bazı sistemler büyük bellek depolama alanları içerir. Bazı donanım satıcıları, birden çok gigabayt önbelleğe sahip üst düzey pil destekli sürücü önbelleğe alma sistemleri sağlar. Bu sistemler veritabanı performansını önemli ölçüde iyileştirebilir. Pil destekli önbelleğe alma çözümleri, SQL Server'ın beklediği verilerin dayanıklılığını ve tutarlılığını sağlar.
Depolama alt sistemi uygulamaları
Depolama alt sistemleri birçok türde bulunur. RAID (bağımsız disklerin yedekli dizisi) ve SAN (depolama alanı ağı) iki yaygın örnektir. Bu sistemler genellikle SCSI tabanlı sürücüler kullanır. Aşağıdaki bölümde üst düzey depolama konuları açıklanmaktadır.
SCSI, SAS ve NVMe
SCSI, SAS ve NVMe depolama cihazları:
- Genellikle ağır hizmet kullanımı için tasarlanmıştır.
- Genellikle çok kullanıcılı, sunucu tabanlı uygulamaları hedefler.
- Genellikle diğer uygulamalardan daha iyi ortalama hata verme süresine sahiptir.
- Yakın hataları tahmin etmeye yardımcı olacak gelişmiş sezgisel yöntemler içerir.
Uyarı
SQL Server , Windows Donanım Uyumluluk Programı gereksinimlerini karşılayan İnternet Küçük Bilgisayar Sistemi Arabirimi (iSCSI) teknolojisi bileşenlerini destekler. SQL Server doğrudan iSCSI ile etkileşim kurmasa da, Windows iSCSI depolama alanını standart sürücüler olarak sunduğundan sorunsuz çalışır. SQL Server daha sonra IP ağları arasında blok düzeyindeki uzak depolama alanından okuyabilir ve bu depolamaya yazabilir. iSCSI ağlara bağlı olduğundan gecikmeler veya performans sorunlarıyla karşılaşabilirsiniz. Sunucunun önbelleğe alma performansının en uygun olduğundan ve gecikme süresinin en aza indirildiğinden emin olun. Daha fazla bilgi için bkz. iSCSI Hedef Sunucusu Ölçeklenebilirlik Sınırları.
SCSI Olmayan
IDE, ATA ve SATA gibi diğer sürücü uygulamaları:
- Genellikle hafif ve orta ölçekli kullanım için tasarlanmıştır.
- Genellikle tek kullanıcılı uygulamaları hedefler.
SCSI olmayan masaüstü tabanlı denetleyiciler daha fazla ana işlemci (CPU) bant genişliği gerektirir ve genellikle tek bir etkin komutla sınırlıdır. Örneğin, SCSI olmayan bir sürücü bozuk bir bloğu düzeltirken, sürücü ana bilgisayar komutlarının beklemesini gerektirir. ATA veri yolu başka bir örnek sunar: ATA veri yolu iki cihazı destekler, ancak yalnızca tek bir komut etkin olabilir. Bu sınırlama, bir sürücüyü boşta bırakırken, diğer sürücü bekleyen komutu sağlar. Masaüstü teknolojileri üzerinde oluşturulan RAID sistemlerinin tümü bu belirtilerle karşılaşabilir ve en yavaş yanıt verenden büyük ölçüde etkilenebilir. Bu sistemler gelişmiş tasarımlar kullanmadığı sürece, performansları SCSI tabanlı sistemlerin performansı kadar verimli değildir.
Depolama ile ilgili dikkat edilmesi gerekenler
Masaüstü tabanlı sürücü veya dizi bazı durumlarda düşük maliyetli bir çözüm olabilir. Örneğin, raporlama için salt okunur bir veritabanı ayarlarsanız, sürücü önbelleği devre dışı bırakıldığında OLTP veritabanının performans faktörlerinin çoğuyla karşılaşmazsınız.
Depolama cihazı boyutları artmaya devam eder. Düşük maliyetli, yüksek kapasiteli sürücüler cazip olabilir. Ancak sürücüyü SQL Server ve iş yanıt süresi gereksinimleriniz için yapılandırdığınızda aşağıdaki sorunları dikkatle göz önünde bulundurun:
- Erişim yolu tasarımı
- Disk içi önbelleği devre dışı bırakma gereksinimi
Mekanik sabit sürücüler
Mekanik sürücüler, verileri depolamak için dönen manyetik tabaklar kullanır. Bunlar IDE, SATA, SCSI ve Seri Bağlı SCSI (SAS) gibi çeşitli kapasitelerde ve form faktörlerinde kullanılabilir. Bazı SATA sürücüleri hata tahmin yapıları içerir. SCSI sürücüleri daha ağır görev döngüleri ve daha az hata oranları için tasarlanmıştır.
IDE ve ATA tabanlı sistemler, hatalı blok ayarlaması gibi etkinlikleri gerçekleştirdiklerinde konak komutlarını erteleyebilir ve bu da durdurulmuş G/Ç etkinliği dönemlerine neden olur.
SAS avantajları arasında 256 düzeye kadar gelişmiş kuyruğa alma, kuyruk başı ve sıra dışı kuyruğa alma sayılabilir. SAS arka düzlemi, aynı sistem içinde hem SAS hem de SATA sürücülerinin kullanılmasını sağlayan bir şekilde tasarlanmıştır.
SQL Server yüklemeniz, denetleyicinin disk önbelleğini devre dışı bırakma ve kararlı bir G/Ç önbelleği sağlama yeteneğine bağlıdır. Denetleyici doğru kararlı medya önbelleğe alma özelliklerini sağladığı sürece verileri çeşitli sürücülere sıra dışı yazmak SQL Server'da bir engel oluşturmaz. Yansıtma gibi gelişmiş veri güvenliği teknikleriyle denetleyici tasarımının karmaşıklığı artar.
Katı hal depolama
Katı hal depolamanın mekanik (dönen) sabit sürücülere göre avantajları vardır, ancak dönen medya ile aynı hata desenlerinin birçoğuna açıktır. NVM Express (NVMe), PCI Express (PCIe) ve SATA gibi çeşitli arabirimleri kullanarak katı hal depolamayı sunucunuza bağlayabilirsiniz. Katı hal medyasını dönen medya gibi değerlendirin ve pil destekli önbellek denetleyicisi gibi güç kesintisi için uygun korumaların uygulandığından emin olun.
Güç hatasının neden olduğu yaygın sorunlar şunlardır:
- Bit bozulması: Kayıtlarda rastgele bit hataları gösterilir.
- Uçan yazılar: İyi biçimlendirilmiş kayıtlar yanlış yerlere gidiyor.
- Shorn writes: İşlemler kısmen beklenen sektör boyutunun altında bir düzeyde gerçekleştirilir.
- Meta veri bozulması: Flash çeviri katmanındaki (FTL) meta veriler bozuk.
- Yanıt vermeyen cihaz: Cihaz hiç çalışmıyor veya çoğunlukla çalışmıyor.
- Seri durumdan çıkarılamazlık: Depolamanın son durumu seri hale getirilebilir işlem sırasına bağlı değildir.
512e
Katı hal depolama cihazlarının çoğu 512 baytlık kesim boyutlarını rapor eder ancak 1 MB silme blokları içinde 4 KB sayfa kullanır. SQL Server günlük cihazı için 512 bayt hizalı sektörlerin kullanılması, daha fazla okuma/değiştirme/yazma (RMW) etkinlikleri oluşturabilir ve bu da daha yavaş performansa ve disk aşınmasına katkıda bulunabilir.
Öneri: Önbelleğe alma denetleyicisinin depolama cihazının doğru sayfa boyutunun farkında olduğundan ve fiziksel yazmaları katı hal depolama altyapısıyla düzgün bir şekilde hizalayaabildiğinden emin olun.
0xFFFFFFFF
Yeni biçimlendirilmiş bir sürücü genellikle tüm sıfırları tutar. Katı hal cihazının silinmiş bir bloğu tamamen 1 olduğunda, silinen bir bloğun ham okunması tüm 0xFF karakterlerini verir. Ancak, normal G/Ç işlemleri sırasında kullanıcının silinmiş bir bloğu okuması olağan dışıdır.
Desen damgalama
Geçmişte kullanılan bir teknik, sürücünün tamamına bilinen bir desen yazmaktır. Ardından veritabanı etkinliği aynı sürücüde yürütülürken, desen beklenmedik bir şekilde göründüğünde yanlış davranış (eski okuma, yazma kaybı veya yanlış uzaklık okuma) algılanabilir.
Bu teknik katı hal depolamada iyi çalışmaz. Yazma işlemleri için silme ve RMW etkinlikleri deseni yok eder. Katı hal depolama çöp toplama (GC) etkinliği, aşınma dengeleme, orantılı/ayrılmış liste blokları ve diğer iyileştirmeler, dönen medyanın sektör yeniden kullanımlarından farklı olarak yazmaların farklı fiziksel konumlar almasına neden olma eğilimindedir.
Donanım yazılımı
Katı hal depolamada kullanılan üretici yazılımı, dönen medya karşılıkları ile karşılaştırıldığında karmaşık olma eğilimindedir. Birçok sürücü, gelen istekleri ve çöp toplama etkinliklerini işlemek için birden çok işlem çekirdeği kullanır. Bilinen sorunlardan kaçınmak için katı hal cihaz üretici yazılımınızı güncel tuttuğunuzdan emin olun.
Veri hasarı ve aşınma dengelemesini okuma
Katı hal depolama için yaygın bir çöp toplama (GC) yaklaşımı, yinelenen ve okunan veri hasarlarını önlemeye yardımcı olur. Aynı hücreyi tekrar tekrar okurken, elektron aktivitesinin sızıp komşu hücrelere zarar verme olasılığı vardır. Katı hal depolama, çeşitli hata düzeltme kodu düzeyleri (ECC) ve diğer mekanizmalarla verileri korur.
Böyle bir mekanizma, aşınma dengeleme ile ilgilidir. Katı hal depolama, depolama cihazındaki okuma ve yazma etkinliğini izler. Çöp bellek toplama, diğer konumlardan daha hızlı yıpranan sıcak noktaları veya konumları belirleyebilir. Örneğin GC, bir bloğun salt okunur durumda olduğunu ve taşınması gerektiğini belirler. Bu hareket genellikle daha fazla aşınmaya sahip bir blok içindir, bu nedenle orijinal blok yazma işlemleri için kullanılabilir. Bu işlem sürücüdeki aşınmayı dengelemeye yardımcı olur, ancak salt okunur verileri daha fazla aşınmaya sahip bir konuma taşır ve biraz bile olsa hata olasılığını matematiksel olarak artırır.
Sql Server ile aşınma dengelemesinin başka bir yan etkisi de oluşabilir.
DBCC CHECKDB'yi yürüttüğün ve bir hata bildiriyor olduğunu varsayalım. İkinci kez çalıştırırsanız, katı hal depolama GC etkinliği yürütmeler arasında değişiklik yapabileceğinden, DBCC CHECKDB ek veya farklı bir hata deseni bildirme ihtimali düşüktür.
İşletim sistemi hatası 665 ve disk birleştirme
Dönen medyanın sürücünün baş hareketini azaltmak ve performansı artırmak için blokları birbirine yakın tutması gerekir. Katı hal depolamanın fiziksel bir kafası yoktur ve bu da arama süresini ortadan kaldırır. Birçok katı hal cihazı, farklı bloklarda paralel işlemlere izin verecek şekilde tasarlanmıştır. Bu nedenle katı hal medyasının birleştirilmesi gereksizdir. Seri etkinlikler, katı hal depolama cihazlarında G/Ç aktarım hızını en üst düzeye çıkarmak için en iyi G/Ç desenleridir.
Uyarı
Katı hal depolama, kullanılan bir işletim sistemi komutu olan trim özelliğinden yararlanır, bu komut artık kullanılmadığı kabul edilen blokları siler. Windows'ta Sürücüleri İyileştir aracını kullanarak sürücüleri iyileştirmeye yönelik haftalık bir zamanlama ayarlayın.
Öneriler:
Yazma etkinliklerini iyileştirmek için tasarlanmış uygun, pil destekli bir denetleyici kullanın. Bu seçim performansı artırabilir, sürücü aşınmasını azaltabilir ve fiziksel parçalanma düzeylerini düşürebilir.
NTFS öznitelik sınırlamalarını önlemek için ReFS dosya sistemini kullanmayı göz önünde bulundurun.
Dosya büyüme ayarlarının uygun olduğundan emin olun.
Parçalanmayla ilgili olarak 665 işletim sistemi hatasını giderme hakkında daha fazla bilgi için bkz. SQL Server dosyaları için 665 ve 1450 işletim sistemi hataları bildiriliyor.
Sıkıştırma
Sürücü stabil medya amacını koruduğu sürece, sıkıştırma sürücü ömrünü uzatabilir ve performansı olumlu yönde etkileyebilir. Ancak, bazı üretici yazılımları verileri zaten görünmez bir şekilde sıkıştırabilir. Yeni depolama senaryolarını üretim ortamınıza dağıtmadan önce test edin.
Özet
- Uygun yedekleme ve olağanüstü durum kurtarma yordamlarını ve işlemlerini koruyun.
- Üretici yazılımınızı güncel tutun.
- Donanım üreticinizin yönergelerini yakından dinleyin.
Sürücü önbelleği yapılandırması
SQL Server ile bir sürücü kullanmak için, sürücü önbelleğini devre dışı bırakın. Varsayılan olarak, sürücü önbelleği etkinleştirilir. Windows Server'da, yazma önbelleğini işletim sistemi düzeyinde devre dışı bırakmak için Disk Özellikleri>Donanım>İlkesi sekmesini kullanın.
Yalnızca işletim sistemi düzeyi ayarlarına güvenmeyin. Bazı sürücüler Windows ayarlarını yoksayar ve yazma önbelleğini devre dışı bırakmak için üretici tarafından sağlanan yardımcı programlar veya üretici yazılımı ayarları gerektirir. Yazma önbelleğinin gerçekten devre dışı bırakıldığını satıcı araçları aracılığıyla onaylayın.
Uyarı
Yazma önbelleği devre dışı bırakılmış olsa bile sürücü üretici yazılımı, temizleme komutlarını geciktiren iç iyileştirmelere neden olabilir. SQLIOSim gibi test araçlarını kullanarak dağıtımdan önce her zaman etkin önbellek durumunu onaylayın.
Önbellekle ilgili dikkat edilmesi gerekenler ve SQLIOSim
Üretime geçmeden önce I/O alt sisteminizi SQLIOSim kullanarak doğrulayın ve işlem dayanıklılığı garantilerini onaylayın. Bu araç, simüle edilmiş veri cihazı ve günlük cihazı üzerinde yoğun zaman uyumsuz okuma ve yazma etkinliğini simüle eder. Daha fazla bilgi için bkz . Disk alt sistemindeki SQL Server etkinliğinin benzetimini yapmak için SQLIOSim yardımcı programını kullanma. Daha geniş depolama karşılaştırması için diskspd depolama test aracını da kullanabilirsiniz.
Uyarı
Herhangi bir alternatif önbelleğe alma mekanizmasının birden çok hata türünü düzgün bir şekilde işleyebileceğinden emin olun.
Birçok bilgisayar üreticisi, yazma önbelleği devre dışı bırakılmış sürücüleri sipariş etmektedir. Ancak test, bu koşulun her zaman böyle olmayabileceğini gösterir, bu nedenle her zaman tamamen test etmelisiniz. Depolama cihazınızın önbelleğe alma durumu hakkında sorularınız varsa üreticiye başvurun ve yazma önbelleği işlemlerini devre dışı bırakmak için uygun yardımcı programı edinin. Eski depolama medyalarında jumper ayarlarına da ihtiyacınız olabilir.
SQL Server, SQL Server G/Ç Güvenilirlik Programı Gereksinimleri altında açıklandığı gibi sistemlerin kararlı medyaya garantili teslimi desteklemesini gerektirir.
Yanlış yazma önbelleğe alma riskleri
Uygun korumalar olmadan yazma önbelleğini etkinleştirdiğinizde, bazı depolama alt sistemleri veriler dayanıklı medyaya güvenli bir şekilde yazılmadan önce yazma işlemlerini tamamlandı olarak kabul eder. Güç kaybı veya sistem hatası oluşursa, bu durum aşağıdakilere neden olabilir:
- Veri kaybı, işlenen işlemlerin asla kalıcı olarak kaydedilmemesi.
- Bozuk yazma sırası garantileri nedeniyle veritabanı bozulması.
Important
Donanım satıcısı belgelerinde belirtilmediği sürece SQL Server veri ve günlük sürücülerinin yazma önbelleğini devre dışı bırakın.
- Önbellek pil desteklidir veya kalıcı flash depolama kullanır.
- Sürücü, güç kesintilerine ve sistem kilitlenmelerine karşı dayanıklılığı garanti eder.
Harici UPS cihazları, denetleyici üretici yazılımı hatası gibi tüm hata modlarına karşı koruma sağlamayabileceği için yeterli değildir.
G/Ç sorunları için destek
Microsoft SQL Server ve SQL Server tabanlı uygulamaları tam olarak destekler, ancak G/Ç çözümü sorunlara neden olduğunda destek cihaz üreticisinden sorumludur. Belirtiler şunlardır ancak bunlarla sınırlı değildir:
- Veritabanı bozulması
- Yedekleme bozulması
- Beklenmeyen veri kaybı
- Eksik işlemler
- Beklenmeyen G/Ç performans farkları
Uyarı
Microsoft üçüncü taraf donanım veya yazılım ürünlerinin SQL Server ile çalıştığını onaylamaz veya doğrulamaz. Microsoft, işlem semantiğini desteklemek için G/Ç alt sistemi ve önbelleğe alma sistemi gereksinimleri dahil olmak üzere ortam gereksinimlerini yayımlar. Üçüncü taraf satıcılar, ürünlerinin bu gereksinimleri karşıladığını doğrulamakla sorumludur. Üçüncü taraf ürünü içeren bir yapılandırmada sorun oluşursa SQL Server destek, araştırmaya devam etmeden önce sorunu üçüncü taraf ürünü olmadan yeniden oluşturmanızı isteyebilir.
Daha fazla bilgi için bakınız:
Dosya sistemi yapılandırması
Aşağıdaki tabloda, belirli G/Ç yapılandırmaları için ek bilgilerin bağlantıları sağlanmaktadır.