Paul'un yedek iç kısımlarla ilgili makalesi mükemmeldir ve okumalısınız. Başkalarının söylediklerine ekleme ve sorunuzun belirli bir bölümünü vurgulama
Ayrıca, yedeklemenin tek iş parçacıklı olduğunu duydum, tek bir dosyaya yedeklediğinizi varsayarak sadece bir çekirdek kullanıyor. Ayrıca, çok çekirdekli bir makineniz olduğunu varsayarız, örneğin 16 çekirdek veya en azından birden fazla sayıda.
Yedekleme işlemi can use parallelism
ancak bu hatırlıyorum değil , SQL Server Doktoru tarafından tahrik paralellik onun yedek veri dosyasını okumak zorunda ve yedekleme oluşturulan yedekleme dosyaları veri dosyası ve miktarını yazar nerede yerden dahil olan disk sayısını tarafından tahrik.
MAXDOP
SQL Server yedeklemesi alırken ipucu kullanamazsınız
Basit TSQL yedekleme işlemi için SSMS'de yürütme planı oluşturamazsınız.
SQL Server'da sorgu iyileştirici tarafından yönlendirilen paralellik temel olarak ilgili operatörler içindir (aslında daha karmaşıktır ancak basitlik açısından bunu alabilirsiniz) çünkü yedekleme işlemi, optimizer tarafından çalıştırılan paralelliği kullanamayacağı için herhangi bir operatör içermez.
Technet Wiki'de SQL Server yedekleme sırasında paralelliğin açıklanması için basit örnekler kullandığım Yedekleme ve paralellik hakkında bir makale yazdım . Sonuç aşağıdadır
Veritabanı dosyaları birden çok diskte ise, verileri okumak için aygıt sürücüsü başına iş parçacığında yedekleme işlemi başlatılır. Aynı şekilde, birden fazla sürücü / bağlama noktasında geri yükleme yapılırsa, yedekleme işlemi her sürücü / bağlama noktası için bir iş parçacığı başlatır
Aynı sürücüye birden çok yedek kopyasını dökseniz bile, dökülen yedek dosya başına bir iş parçacığımız olur.
Yedeklemeyle ilişkili paralellik, çizgilerle ilgilidir. Her şerit kendi işçi iş parçacığını alır ve yedekleme / geri yüklemenin paralel işlemler olarak düşünmesi gereken tek şey budur.
Maksimum paralellik derecesinin yedekleme işlemi üzerinde hiçbir etkisi yoktur.
Bu konuda Paul ve Bob Dorr'dan uzman görüşü aldım.
Bir yedekleme işi çalışırken ne olur? Ayrıca farklı sürümler için önemli farklılıklar var mı? örneğin 2008, 2012 ve 2014 (lisanslar değil).
Bob Dorr'un bu blog.msdn makalesini okumanızı öneririm . Vurguladığı bazı önemli noktalar
Bir yedekleme başladığında, arabellek havuzunun dışındaki bellekten ayrılan bir dizi arabellek oluşturur. Hedef, her tampon için genellikle 4 MB'dir, bu da yaklaşık 4 ila 8 tamponla sonuçlanır. Hesaplamayla ilgili ayrıntılar şu adreste bulunur: http://support.microsoft.com/kb/904804/en-us
Tamponlar, serbest ve veri kuyrukları arasında geçiş yapar. Okuyucu ücretsiz bir arabellek çeker, veriyle doldurur ve veri kuyruğuna yerleştirir. Yazar (lar) doldurulmuş veri tamponlarını veri kuyruğundan alır, arabelleği işler ve ücretsiz listeye döndürür.
Her yedekleme cihazı başına bir yazıcı alırsınız, her biri veri kuyruğundan alınır. Bu yüzden dört (4) diske spesifikasyona sahip bir yedekleme komutunda dört yazar ve bir okuyucu bulunur. Okuyucu yazarlara ayak uydurabilmesi için zaman uyumsuz G / Ç kullanır.
Etkinleştirebilirsiniz trace flags 3213 and 3605
, her ikisi de belgesizdir, bu yüzden lütfen test ortamında kullanın ve SQL Server hata günlüğüne hangi ilginç iletinin atıldığını görün. Aşağıdaki gibi bir şey görünecektir
Memory limit: 249MB
BufferCount: 7
Sets Of Buffers: 1
MaxTransferSize: 1024 KB
Min MaxTransferSize: 64 KB
Total buffer space: 7 MB
Tabular data device count: 1
Fulltext data device count: 0
Filestream device count: 0
TXF device count: 0
Filesystem i/o alignment: 512
Media Buffer count: 7
Media Buffer size: 1024KB
Çeşitli sürümler için yedekleme kodunda herhangi bir önemli değişikliklerin farkında değilim, bu tür şeyler belgelenmiyor. Ben sadece SQL Server 2012 SP1 Cumulative Update 2,
TSQL veya SMO kullanarak SQL Server'dan Windows Azure Blob depolama hizmetinden yedekleme ve geri yükleme etkinleştirmek tanıtılan geliştirme hakkında biliyorum . Burada okuyun