Opis korzystania z buforów dysku twardego w programie SQL Server dla administratorów bazy danych

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 234656 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Streszczenie

System bazy danych jest przede wszystkim odpowiedzialny za precyzyjne przechowywanie i pobieranie danych, także wtedy, gdy wystąpi niespodziewana awaria systemu.

Musi on zapewniać niepodzielność i odporność transakcji przy uwzględnieniu bieżącego wykonywania, wielu transakcji i różnych punktów, w których może wystąpić awaria. Te cechy bywają określane jako właściwości ACID od ang. Atomicity, Consistency, Isolation i Durability (niepodzielność, spójność, izolacja i odporność).

W tym artykule opisano skutki buforowania dysków. Zaleca się przeczytanie poniższych artykułów z bazy wiedzy Microsoft Knowledge Base, aby uzyskać więcej wyjaśnień na temat buforowania i alternatywne omówienia trybu awarii:
86903 Program SQL Server i buforowanie kontrolerów dysków
46091 Korzystanie z buforowania kontrolera dysku twardego w programie SQL Server
230785 Algorytmy rejestrowania i przechowywania danych w programach SQL Server 7.0 i SQL Server 2000 zwiększają niezawodność danych
Zaleca się także przeczytanie następujących dokumentów:

Więcej informacji

Programy Microsoft SQL Server 2005, SQL Server 2000, SQL Server 7.0, wcześniejsze wersje programu SQL Server oraz wiele głównych produktów bazodanowych dostępnych na rynku używają protokołu WAL (Write-Ahead Logging).
Protokół WAL
Określenie protokół to znakomity sposób wyjaśnienia, co znaczy WAL. Jest to charakterystyczny i zdefiniowany zestaw kroków implementacyjnych niezbędnych do zagwarantowania, że dane są poprawnie przechowywane i wymieniane oraz że można je odtworzyć w znanym stanie w wypadku awarii. Podobnie jak sieć zawiera zdefiniowany protokół wymiany danych w spójny i chroniony sposób, tak WAL opisuje protokół ochrony danych.
Wszystkie wersje programu SQL Server otwierają pliki dzienników i danych za pomocą funkcji CreateFile systemu Win32. Członek dwFlagsAndAttributes zawiera opcję FILE_FLAG_WRITE_THROUGH, gdy plik jest otwarty przez program SQL Server.
FILE_FLAG_WRITE_THROUGH
Ta opcja instruuje system, że należy zapisać wszystkie pośrednie bufory bezpośrednio na dysku. System wciąż może buforować operacje zapisu, ale nie może leniwie ich opróżniać.

Opcja FILE_FLAG_WRITE_THROUGH gwarantuje, że jeśli operacja zapisu zwróci pomyślne zakończenie, dane będą poprawnie zapisane w stabilnym magazynie. Jest to zgodne ze specyfikacją protokołu WAL zapewnienia bezpieczeństwa danych.
Wiele stacji dysków (SATA, ATA, SCSI oraz IDE) zawiera wewnętrzne bufory o rozmiarach 512 KB, 1 MB i większych. W buforach stacji dysków zazwyczaj stosuje się rozwiązanie oparte na kondensatorach, a nie na zapasowym zasilaniu bateryjnym. Takie mechanizmy buforowania nie mogą zagwarantować zapisu w wypadku zaniku zasilania lub analogicznych awarii. Gwarantują jedynie ukończenie operacji zapisu sektora. Ponieważ pojemność dysków stale rośnie, bufory stają się coraz większe i mogą zawierać większe ilości danych w chwili awarii.

Ulepszone systemy kontrolerów buforowania wyłączają wewnętrzny bufor dysku i zapewniają funkcjonalne rozwiązanie oparte na zapasowym zasilaniu bateryjnym. Takie bufory mogą przechowywać dane przez kilka dni, umożliwiając nawet umieszczenie karty buforu na innym komputerze. Po przywróceniu zasilania bufor jest całkowicie opróżniany z niezapisanych danych, zanim będzie dozwolony jakikolwiek dalszy dostęp do danych. Wiele z takich buforów pozwala określić procent buforu zapisu w stosunku do buforu odczytu w celu zapewnienia optymalnej wydajności. Niektóre zawierają ogromne obszary przechowywania w pamięci. W istocie, dla pewnego specyficznego segmentu rynku niektórzy producenci sprzętu oferują zaawansowane systemy buforowania dysków z zapasowym zasilaniem bateryjnym, wyposażone w bufory o wielkości rzędu gigabajtów. Takie systemy mogą znacznie poprawić wydajność bazy danych.

Transfery we/wy wykonywane bez użycia buforu mogą być znacznie wolniejsze z powodu szybkości obrotowej dysków twardych, czasu wymaganego na fizyczne przesunięcie głowic i innych czynników. Instalacje programu SQL Server są przeznaczone do systemów wyposażonych w kontrolery buforowania. Te kontrolery wyłączają bufory wewnętrzne dysku i zapewniają stabilne nośniki buforujące spełniające wymagania we/wy programu SQL Server. Eliminują one problemy z wydajnością związane z czasem wyszukiwania i dostępu, stosując różne optymalizacje.

Istnieje wiele rodzajów implementacji takich podsystemów. RAID i SAN to dwa przykłady rodzajów implementacji takich podsystemów. Te systemy są zazwyczaj budowane przy użyciu dysków typu SCSI. Ma to kilka powodów. W poniższej sekcji opisano ogólnie rozważania dotyczące dysków.

Dyski SCSI:
  • Są na ogół przeznaczone do intensywnego użytkowania.
  • Są na ogół przeznaczone do implementacji dla wielu użytkowników, w których są stosowane serwery.
  • Na ogół mają dłuższy średni czas między awariami niż inne implementacje.
  • Zawierają zaawansowane rozwiązania heurystyczne służące do przewidywania awarii.
Inne implementacje dysków, takie jak IDE, ATA i SATA:
  • Są na ogół przeznaczone do mało i średnio intensywnego użytkowania.
  • Są na ogół przeznaczone do implementacji dla jednego użytkownika.
  • Niektóre nowsze implementacje zawierają zaawansowane rozwiązania heurystyczne służące do przewidywania awarii.
Kontrolery inne niż SCSI typu desktop zużywają więcej czasu procesora i często są ograniczone do obsługi jednego aktywnego polecenia. Jeśli na przykład dysk inny niż SCSI naprawia błędny blok, polecenia wydawane przez hosta muszą czekać na ukończenie tej operacji. Kontroler ATA stanowi inny przykład. Kontroler ATA obsługuje 2 urządzenia, ale tylko jedno polecenie może być aktywne. Z tego powodu jeden dysk jest bezczynny, gdy drugi obsługuje oczekujące polecenie. W systemach Raid opracowanych na bazie technologii typu desktop mogą występować wszystkie te symptomy i te systemy mogą być w znacznym stopniu spowalniane przez najwolniejszy dysk. Jeśli te systemy nie będą korzystały z zaawansowanych rozwiązań, ich wydajność nie będzie dorównywać wydajności systemów SCSI.

Istnieją sytuacje, w których dyski lub macierze dyskowe typu desktop będą stanowić właściwe i niedrogie rozwiązanie. Jeśli na przykład zostanie utworzona baza danych tylko do odczytu na potrzeby raportowania, nie należy się spodziewać wystąpienia wielu czynników wpływających na wydajność bazy danych OLTP, gdy zostanie wyłączone buforowanie.

Pojemności dysków stale rosną. Tanie dyski o wysokiej pojemności mogą być kuszącym rozwiązaniem. Ale podczas konfigurowania dysków na potrzeby programu SQL Server odpowiednich do potrzeb firmy dotyczących czasu reakcji należy uwzględnić następujące kwestie:
  • Projekt ścieżki dostępu
  • Wymaganie wyłączenia wewnętrznego buforu dysku
W poniższej tabeli podano komentarze wysokiego poziomu. Dotyczą one typowych konfiguracji producentów.

Zwiń tę tabelęRozwiń tę tabelę
Typ systemu dyskowegoKomentarze
IDE i ATA
  • Prędkość obrotowa 7200 obr./min
  • Na ogół przeznaczone do komputerów stacjonarnych i aplikacji użytkownika.
  • Domyślnie bufor dysku jest włączony. Można użyć okna dialogowego „Właściwości: Dysk” , karta Sprzęt, aby uzyskać dostęp do „Właściwości” i karty „Zasady” , na której można określić ustawienie buforowania dysku.

    Uwaga: Niektóre dyski ignorują to ustawienie. Takie dyski wymagają użycia specjalnego narzędzia producenta do wyłączenia buforowania.
  • Buforowanie dysku należy wyłączyć, jeśli dysk ma być używany przez program SQL Server.
  • Systemy IDE i ATA mogą opóźniać polecenia, gdy wykonują takie operacje, jak naprawa błędnego bloku. To może spowodować okresy zatrzymania operacji we/wy.
IDE/komputer przenośny
  • Prędkość obrotowa 5200 obr./min
  • Przeznaczone do komputerów przenośnych.
  • Zobacz komentarze w sekcji IDE i ATA.
  • Urządzenia ReadyDrive oraz NAND Flash mogą zapewnić stabilne rozwiązanie we/wy.
SATA
  • Prędkość obrotowa 7200 obr./min
  • Na ogół przeznaczone do komputerów stacjonarnych i serwerów średniej klasy.
  • Domyślnie bufor dysku jest włączony. Można użyć okna dialogowego „Właściwości: Dysk” , karta Sprzęt, aby uzyskać dostęp do „Właściwości” i karty „Zasady” , na której można określić ustawienie buforowania dysku.

    Uwaga: Niektóre dyski ignorują to ustawienie. Takie dyski wymagają użycia specjalnego narzędzia producenta do wyłączenia buforowania.
  • Większe pojemności dysków i buforów niż w dyskach IDE i ATA.
  • Buforowanie dysku należy wyłączyć, jeśli dysk ma być używany przez program SQL Server.
  • Mniej okablowania i połączeń.
  • Łatwe łączenie z dyskami Serial Attached SCSI (SAS) i prostsza instalacja.
  • Niektóre zawierają mechanizmy przewidywania awarii.
SCSI
  • Prędkość obrotowa 10 000 i 15 000 obr./min
  • Zaprojektowane do serwerów i aplikacji dla wielu użytkowników.
  • Zaprojektowane z myślą o pracy przy dużym obciążeniu oraz o wydłużonym czasie między awariami.
  • Domyślnie bufor dysku jest włączony. Można użyć okna dialogowego „Właściwości: Dysk” , karta Sprzęt, aby uzyskać dostęp do „Właściwości” i karty „Zasady” , na której można określić ustawienie buforowania dysku.

    Uwaga: Niektóre dyski ignorują to ustawienie. Takie dyski wymagają użycia specjalnego narzędzia producenta do wyłączenia buforowania.
  • Buforowanie dysku należy wyłączyć, jeśli dysk ma być używany przez program SQL Server.
  • W systemach macierzowych i SAN na ogół występuje mniej okablowania i połączeń.
  • Zawierają mechanizmy przewidywania awarii.
System Serial Attached SCSI (SAS) zapewnia zaawansowane kolejkowanie do 256 poziomów. System SAS udostępnia także takie funkcje, jak początek kolejki (ang. head of queue) i kolejkowanie poza kolejnością (ang. out of order queuing). System SAS został zaprojektowany w sposób umożliwiający używanie zarówno dysków SAS, jak i SATA w tym samym systemie. Zalety rozwiązania SAS są oczywiste.

Instalacja programu SQL Server zależy od możliwości wyłączenia wewnętrznego buforu dysku przez kontroler i zapewnienia stabilnego buforu we/wy. Zapis danych poza kolejnością na różnych dyskach nie jest przeszkodą dla programu SQL Server, pod warunkiem że kontroler zapewnia odpowiedni stabilny nośnik na potrzeby buforowania. Złożoność konstrukcji kontrolera rośnie, gdy są stosowane zawansowane techniki zabezpieczeń, takie jak dublowanie.

Aby w pełni zabezpieczyć dane, należy zagwarantować poprawną obsługę buforowania. W wielu sytuacjach oznacza to konieczność wyłączenia buforowania zapisu dysków.

Uwaga: Należy zagwarantować, że wszelkie alternatywne mechanizmy buforowania są w stanie poprawnie obsłużyć wiele typów awarii.

Firma Microsoft przeprowadziła testowanie kilku dysków SCSI i IDE przy użyciu narzędzia SQLIOStress. To narzędzie symuluje intensywne asynchroniczne operacje odczytu/zapisu na symulowanym urządzeniu danych i dziennika. Statystyki testu wydajności reprezentują średnią liczbę operacji zapisu na sekundę z przedziału od 50 do 70 dla dysku z wyłączonym buforowaniem i o prędkości obrotowej z przedziału od 5200 do 7200 obr./min.

Aby uzyskać dodatkowe informacje na temat narzędzia SQLIOStress, zobacz następujący artykuł z bazy wiedzy Microsoft Knowledge Base:
231619 INF: SQLIOStress Utility to Stress Disk Subsystem Like SQL Server
Wielu producentów komputerów (na przykład Compaq, Dell, Gateway czy HP) zamawia dyski z wyłączonym buforowaniem zapisu. Jednak testy wykazują, że taka sytuacja nie jest regułą, więc należy zawsze sprawdzać, czy tak jest w rzeczywistości.

Uwaga: Jeśli istnieją wątpliwości odnośnie do stanu buforowania dysku, należy skontaktować się z producentem w celu uzyskania odpowiedniego narzędzia lub informacji o ustawieniu zworek zapewniającego wyłączenie buforowania operacji zapisu.

Materiały referencyjne

Aby uzyskać wszystkie szczegółowe informacje na temat wymagań operacji we/wy programu SQL Server, odwiedź następującą witrynę firmy Microsoft w sieci Web: http://www.microsoft.com/sql/AlwaysOn

Właściwości

Numer ID artykułu: 234656 - Ostatnia weryfikacja: 3 stycznia 2008 - Weryfikacja: 3.4
Informacje zawarte w tym artykule dotyczą:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000, Workgroup Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
Słowa kluczowe: 
kbinfo KB234656

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com