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 VM'de 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 sağlanır. 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. SQL Server Veritabanı Altyapısı için giriş ve çıkış gereksinimleri hakkında daha fazla bilgi için bkz. SQL Server Veritabanı Altyapısı Disk Giriş/Çıkış (G/Ç) gereksinimleri.
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 gerçekleştirilir.
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. Bazı durumlarda (örneğin, yanlış hizalanmış log G/Ç), senkron G/Ç meydana gelebilir.
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. Benşim G/Ç maskesi seçeneği, SQL Server disk G/Ç'sini 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. Bu, SQL Server'ın birden çok fiziksel G/Ç isteğinden kaçınarak arabellek önbelleğini hızla doldurma veya boşaltma kapasitesine sahip olduğu anlamına gelir.
Uzun G/Ç istekleri
Arabellek yöneticisi, en az 15 saniyedir hala beklemede olan tüm G/Ç isteklerini raporlar. Bu, 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 G/Ç, bir okuma veya yazma olabilir; bu mesajda şu anda belirtilmemiştir. 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ı olmak için bildirilir. 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. İletiden hangi senaryonun söz konusu olduğunu söylemek mümkün değildir, ancak kayıp G/Ç genellikle mandal zaman aşımına yol açar.
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.
Uzun G/Ç'ler, G/Ç yolundaki bir bileşenden (örneğin, sürücü, denetleyici veya üretici yazılımı) daha yeni isteklere hizmet verme amacıyla eski bir G/Ç isteğini sürekli olarak ertelemeden kaynaklanabilir. Bu, iSCSI ve fiber kanal ağları gibi birbirine bağlı ortamlarda (yanlış yapılandırma veya yol hatası nedeniyle) oluşabilir. Çoğu G/Ç'ye hemen hizmet verildiğinden, bu durum Performans İzleyicisi aracıyla doğrulamanın zor olabileceği anlamına gelir. Uzun G/Ç istekleri 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 tarafından ağırlaştırılabilir.
Ö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/Ç, verimli bir şekilde yazılmayan veya dizinler ve istatistiklerle düzgün ayarlanmayan sorgulardan kaynaklanabilir. 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 daha az G/Ç gecikmesi 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
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, önbellek kullanılmadan gerçekleştirilen G/Ç aktarımları mekanik sürücülerde önemli ölçüde daha uzun olabilir. SQL Server yüklemeleri, önbelleğe alma denetleyicileri sağlayan sistemlere yöneliktir. 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. Güçle ilgisi olmayan hata modları oluşabileceğinden, bunu başarmak için harici bir kesintisiz güç kaynağı (UPS) kullanmak genellikle yeterli değildir.
Önbelleğe alma denetleyicileri ve depolama alt sistemleri SQL Server tarafından kullanılmak üzere güvenli olabilir. Bunları içeren yeni amaca yönelik sunucu platformlarının çoğu güvenlidir. Ancak, depolama alt sisteminin veri 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.
İleriye yazma günlüğü
SQL Server veri değişikliği ifadeleri mantıksal sayfa yazmaları oluşturur. Bu yazma akışı, günlük ve veritabanının kendisi olmak üzere iki yere gidiyor şeklinde görülebilir. Performans nedenleriyle, SQL Server, kendi önbellek arabellek sistemi aracılığıyla veritabanına yazmayı erteleyebilir. Günlüğe yazma işlemleri yalnızca COMMIT zamanına kadar kısa bir süre ertelenir. Bunlar, 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 veri yazma işlemlerinden önce geldiği için, günlük bazen önceden yazma günlüğü (WAL) olarak adlandırılır.
Ö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ı kurtarmayö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 önbelleğe alabilir, ancak bunları boşaltamaz. Daha fazla bilgi için bkz. CreateFileA.
seçeneği, FILE_FLAG_WRITE_THROUGH bir yazma işleminin başarıyla tamamlanmasını döndürdüğünde verilerin kararlı depolamada doğru şekilde depolanmasını sağlar. Bu, verilerin güvenliğini sağlamak için Önceden Yazma Günlüğü (WAL) 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 kesim 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, tamamen uygulanan veya tamamen geri alınan atomik iş birimleri olarak kabul edilir. SQL Server önceden yazma işlem günlüğü, işlem bütünlüğünün uygulanmasında önemli bir bileşendir.
Herhangi bir ilişkisel veritabanı sistemi, planlanmamış sistem hatalarından kurtarma olan işlem bütünlüğüyle yakından ilgili bir kavramla da ilgilenmelidir. Bu hataya ideal olmayan, gerçek dünya etkilerinden birkaçı 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üklenip 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ı her yeniden başlatıldığında, kullanıcılar girilen son işleme kadar tüm verilerinin mevcut olduğunu görür.
SQL Server'da işlem bütünlüğü ve otomatik kurtarma güçlü bir zaman ve iş gücü tasarrufu özelliği oluşturur. Yazma önbelleğe alma denetleyicisi, veri açısından kritik bir işlem DBMS ortamında kullanılmak üzere düzgün şekilde tasarlanmamışsa, SQL Server'ın kurtarma yeteneğini tehlikeye atarak veritabanını bozabilir. Bu durum, denetleyici SQL Server işlem günlüğü yazımlarını keserse ve bunları denetleyici kartındaki bir donanım önbelleğinde önbelleğe alırsa, ancak bir sistem hatası sırasında bu kaydedilen verileri korumazsa meydana gelebilir.
Yazma önbelleğe alma ve depolama cihazı denetleyicileri
Çoğu depolama cihazı önbelleğe alma denetleyicisi yazma önbelleği gerçekleştirir. Yazma önbelleği işlevi her zaman devre dışı bırakılamaz.
Sunucu bir UPS kullansa bile bu, ö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 nedenle veritabanı sunucusu tarafından kullanılması güvenlidir. Bu tasarım özelliklerinden bazıları, önbelleğe alma denetleyicisinin kontrolsüz sıfırlanmasını önlemek için RST veri yolu sinyalinin engellenmesini, yerleşik pil yedekleme sistemini ve yansıtılmış bellek veya hata denetleme 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ı durumunda bile verilerin doğru şekilde depolanmasından ve alınmasından en başta sorumludur.
Sistem, mevcut işlemi göz önünde bulundurarak, birden çok işlem ve çeşitli arıza noktalarını hesaba katarak işlemlerin bölünmezliğini ve dayanıklılığını garanti etmelidir. Bu 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 edinmek için Microsoft Bilgi Bankası'ndaki aşağıdaki makaleleri okumanız önerilir:
- 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ı
Aşağıdaki belgeler de önerilir:
Bu iki belge, SQL Server'ın şu anda desteklenen tüm sürümleri için 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. Bunların çoğu, en iyi performans için okuma ve yazma önbelleği yüzdesinin oluşturulmasına izin verir. Bazıları 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. Bunlar veritabanı performansını önemli ölçüde geliştirebilir. Pil destekli önbelleğe alma çözümlerinin kullanılması, SQL Server'ın beklediği verilerin dayanıklılığını ve tutarlılığını sağlar.
Depolama alt sistemi uygulamaları
Birçok tür alt sistem uygulaması vardır. RAID (bağımsız disklerin yedekli dizisi) ve SAN (depolama alanı ağı), bu tür alt sistem uygulamalarına iki örnektir. Bu sistemler genellikle SCSI tabanlı sürücülerle oluşturulur. Bunun birkaç nedeni vardır. Aşağıdaki bölümde genel olarak ü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 üretilmektedir.
- Genellikle çok kullanıcılı, sunucu tabanlı uygulamaları hedefler.
- Genellikle arızaya kadar geçen ortalama süre oranları diğer uygulamalardan daha iyidir.
- 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şenlerinde desteklenir. 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. Bu, SQL Server'ın IP ağları arasında blok düzeyindeki uzak depolama alanından okumasını ve yazmasını sağlar. iSCSI ağlara bağlı olduğundan gecikmeler veya performans sorunları yaşayabilirsiniz, bu nedenle sunucunun önbelleğe alma performansını iyileştirmeli ve gecikme süresini en aza indirmelisiniz. 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 üretilmektedir.
- Genellikle tek kullanıcı tabanlı 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, 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ı bir sürücünün veya dizinin uygun bir düşük maliyetli çözüm olduğu durumlar vardır. Ö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şmamanız gerekir.
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 dikkate almanız gerekir:
- 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.
Sürücüyü SQL Server ile kullanmak için sürücü önbelleğe alma devre dışı bırakılmalıdır. Varsayılan olarak, sürücü önbelleği etkinleştirilir. Windows Server'da, Sürücü önbelleği ayarını denetlemek üzere Özellikler> sekmesine erişmek için Disk Özellikleri>Donanım sekmesini kullanın.
Uyarı
Bazı sürücüler bu ayara uymuyor. Bu sürücülerin önbelleği devre dışı bırakması için belirli bir üretici yardımcı programı gerekir.
IDE ve ATA tabanlı sistemler, hatalı blok düzenlemesi gibi etkinlikler gerçekleştirdiklerinde ana bilgisayar komutlarını erteleyebilir. Bu, durdurulmuş G/Ç etkinliği dönemlerine yol açabilir.
SAS avantajları arasında en fazla 256 düzeye kadar gelişmiş kuyruğa alma, kuyruk başı ve sıra dışı sıraya 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. Katı hal depolama, NVM Express (NVMe), PCI Express (PCIe) ve SATA gibi çeşitli arabirimler kullanılarak sunucunuza bağlanır. 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ıtlar rastgele bit hataları gösterir.
- 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ı: FTL'deki 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 birimlerinin çoğu 512 baytlık sektör büyüklüklerini bildirir, ancak 1 MB'lık silme blokları içinde 4 KB'lık sayfalar 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 kullandığımız bir teknik, sürücünün tamamına bilinen bir modeli yazmaktı. Ardından aynı sürücüde veritabanı etkinliğini yürütürken, desen beklenmedik bir şekilde ortaya çıktığında yanlış davranışı (eski okuma / kayıp yazma / yanlış ofset okuma / vb.) algılayabiliriz.
Bu teknik katı hal depolamada iyi çalışmaz. Yazma işlemleri için silme ve RMW etkinlikleri deseni yok eder. Katı hal depolama birimi çöp toplama (GC) faaliyetleri, aşınma dengelemesi, orantılı/ayrılmış liste blokları ve diğer optimizasyonlar, dönen medyanın sektör yeniden kullanımlarından farklı olarak yazmaların farklı fiziksel konumlara yerleşmesine yol açma 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 belirli bir süre 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, 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 olsa bile hata olasılığını matematiksel olarak artırır.
SQL Server kullanılırken aşınma dengelemenin 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 kafası yoktur ve bu da arama süresini ortadan kaldırır. Birçok katı hal cihazı, farklı bloklarda paralel işlemlere paralel olarak izin verecek şekilde tasarlanmıştır. Bu, katı hal medyasının birleştirilmesinin gereksiz olduğu anlamına gelir. 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, performansı artırabilir, sürücü aşınmasını ve fiziksel parçalanma düzeylerini azaltabilir.
NTFS öznitelik sınırlamalarını önlemek için ReFS dosya sistemini kullanmayı göz önünde bulundurun.
Dosya büyüme boyutlarının uygun şekilde boyutlandırıldığından 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ü kararlı medyanın amacını koruduğu sürece sıkıştırma, sürücünün ömrünü uzatabilir ve performansı olumlu 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 sağladığı yönergeleri yakından takip edin.
Önbellekle ilgili dikkat edilmesi gerekenler ve SQLIOSim
Verilerinizin güvenliğini tam olarak sağlamak için tüm veri önbelleğe alma işlemlerinin düzgün bir şekilde işlendiğinden emin olmanız gerekir. Çoğu durumda bu, sürücünün yazma önbelleğini devre dışı bırakmanız gerektiği anlamına gelir.
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.
Microsoft, SQLIOSim yardımcı programını kullanarak çeşitli SCSI ve IDE sürücülerinde test gerçekleştirdi. Bu yardımcı program, sanal veri cihazına ve günlük cihazına ağır zaman uyumsuz okuma/yazma etkinliğinin benzetimini sağlar. SQLIOSim hakkında daha fazla bilgi ve ayrıntı için bkz. Disk alt sistemindeki SQL Server etkinliğinin benzetimini yapmak için SQLIOSim yardımcı programını kullanma.
Birçok bilgisayar üreticisi, yazma önbelleği devre dışı bırakılmış sürücüleri sipariş etmektedir. Ancak test, bunun 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ğe alma işlemlerini devre dışı bırakmak için uygun yardımcı program veya jumper ayarlarını alın.
SQL Server, SQL Server G/Ç Güvenilirlik Programı Gereksinimleri altında açıklandığı gibi sistemlerin kararlı medyaya garantili teslimi desteklemesini gerektirir. SQL Server Veritabanı Altyapısı için giriş ve çıkış gereksinimleri hakkında daha fazla bilgi için bkz. SQL Server Veritabanı Altyapısı Disk Giriş/Çıkış (G/Ç) gereksinimleri.