Udostępnij za pośrednictwem


Czytanie stron

We/Wy z wystąpienie Aparat baz danych programu SQL Server zawiera odczyty fizyczne i logiczne.Przeczytaj logicznych występuje co czas Aparat baz danych żąda strona z buforu pamięci podręcznej.Jeśli strona nie jest aktualnie w pamięci podręcznej buforu, fizycznego odczytać kopie pierwszej strony z dysku do pamięci podręcznej.

Żądania odczytu generowane przez wystąpienie Aparat baz danych są kontrolowane przez aparat relacyjnych i zoptymalizowane przez aparat magazynu.aparat relacyjny określa najbardziej efektywne metoda dostępu (takie jak skanowanie tabela, skanowanie indeksu lub dostosowane odczytu); metoda dostępu do Menedżera składników buforu aparat magazynu określić wzorzec ogólne odczytów do wykonywania i zoptymalizować odczyty wymagane do wykonania metoda dostępu.wątek wykonywania partia planuje odczytów.

Odczyt z wyprzedzeniem

Aparat baz danych Obsługuje mechanizm optymalizacji wydajności odczytu z wyprzedzeniem.Odczyt z wyprzedzeniem przewiduje stron indeks i danych potrzebnych do zrealizowania plan wykonania kwerend i sprowadza stron do bufora pamięci podręcznej przed są rzeczywiście używane przez kwerendę.Dzięki temu obliczeń i we/wy do nakładania, pełnego wykorzystania Procesora i dysku.

Odczyt z wyprzedzeniem mechanizm pozwala Aparat baz danych do odczytu do 64 stron ciągła (512 KB) z jednego pliku.Odczyt jest wykonywane jako pojedynczy xy zbieranie odczytu do odpowiedniej liczby buforów (prawdopodobnie nieciągłych) w buforze pamięci podręcznej.Jeśli strona w zakres są już w pamięci podręcznej buforu, odpowiadające im strona z odczytu zostaną usunięte po zakończeniu odczytu.Zakres stron może również być "przycięte" od końca Jeśli odpowiednie strony są już obecnie w pamięci podręcznej.

Istnieją dwa rodzaje odczytu z wyprzedzeniem: jeden dla danych stron i jeden dla stron indeksowych.

Odczytywanie danych stron

Skanowanie odczytane dane strony są bardzo wydajny w tabeli Aparat baz danych.Strony indeksu mapy alokacji (IAM) w SQL Server bazy danych listy zakresów używane przez tabela lub indeks.Aparat magazynu można odczytać IAM zbudować posortowanej listy adresów dysku, które należy przeczytać.Dzięki temu aparat magazynu zoptymalizować jej Wy jako duże kolejne odczyty, które są wykonywane w kolejności, na podstawie ich lokalizacji na dysku.Aby uzyskać więcej informacji na temat IAM stron, zobacz Zarządzanie zajmowane przez obiekty.

Odczytywanie indeksu strony

Aparat magazynu odczytuje stron indeksowych szeregowo w klucz zamówienia.Na przykład na ilustracji przedstawiono uproszczony reprezentacja zestaw stron typu liść, zawierającą zestaw kluczy i węzeł indeksu pośrednie mapowania stron typu liść.Aby uzyskać więcej informacji o strukturze stron w indeksie, zobacz Struktury indeksu klastrowanego.

Pośredni węzeł indeksu wykonuje mapowanie na strony liścia wg klucza

Aparat magazynu używa informacji w strona indeksu pośrednich poziom liścia poziom zaplanować odczyty z szeregowego odczytu wyprzedzeniem dla stron, które zawierają klucze.Jeżeli wniosek jest złożony dla wszystkich kluczy z ABC DEF, aparat magazynu najpierw odczytuje strona indeksu powyżej strony typu liść.Jednak to nie tylko odczytu każdej strony danych w kolejności od strony 504 stronę 556 (ostatnia strona z kluczami określonego zakres).Zamiast tego, aparat magazynu skanuje pośredniego strona indeksu i buduje wykaz stron typu liść, które należy przeczytać.Aparat magazynu następnie planuje wszystkie odczyty w klucz zamówienia.Aparat magazynu rozpoznaje także strony 504 i 505 i 527/528 są ciągłe i wykonuje pojedyncze punktowego, przeczytaj do pobierania kolejnych stron w jednej operacji.W przypadku wielu stron mają być pobrane w operacji szeregowy aparatu magazynu planuje blok odczytów w czas.Po zakończeniu podzbiór tych odczyty aparat magazynu planuje równą liczbę nowych odczyty aż wymagane odczyty zostały zaplanowane.

Aparat magazynu używa odczyt z wyprzedzeniem wyszukiwań tabela bazowa prędkości od zbudowania indeksów nie klastrowanych.Wiersze typu liść indeks nieklastrowany zawierają wskaźniki do wierszy danych, które zawierają każdej określonej wartości klucz.Jako aparat magazynu odczytuje stronach liść indeks nieklastrowany również uruchamia planowanie Asynchroniczne odczyty dla wierszy danych, w których wskaźniki zostały już pobrane.Dzięki temu aparat magazynu pobrać wiersze danych z tabela źródłowa przed zakończeniu skanowania indeks nieklastrowany.Odczyt z wyprzedzeniem jest używany niezależnie od tego, czy tabela ma indeks klastrowany.SQL ServerPrzedsięwzięcia wykorzystuje więcej odczyt z wyprzedzeniem niż inne wersje SQL Server, umożliwiając więcej stron odczytywanych z wyprzedzeniem być.Odczyt z wyprzedzeniem poziom nie jest konfigurowany w dowolnej wersji.Aby uzyskać więcej informacji na temat ponownego zbudowania indeksów, zobacz Struktury indeks nieklastrowany.

Zaawansowane skanowania

W SQL Server przedsiębiorstwa, funkcja skanowania zaawansowane umożliwia wielu zadań udostępnić tabela pełne skanowanie.Jeśli plan realizacji Transact-SQL instrukcja wymaga skanowania stron danych w tabeli i Aparat baz danych wykryje, że tabela jest już skanowany w poszukiwaniu innego planu realizacji, Aparat baz danych przyłącza drugiego skanowania do pierwszego, w bieżącej lokalizacji drugiego skanowania. Aparat baz danych Odczytuje pierwszej strona czas i przekazuje wiersze z każdej strona do obu planów wykonanie.Ten proces jest kontynuowany aż osiągnięty zostanie koniec tabela.

W tym punkcie pierwszego planu wykonania ma pełne wyniki skanowania, ale drugi plan wykonania nadal mogą pobierać strony danych, które zostały odczytane przed przyłączeniem się skanowanie w toku.Skanowanie w poszukiwaniu drugi plan wykonania zawija się następnie do pierwszych danych strona tabela i skanowanie przesyła gdzie ona przyłączony pierwszego skanowania.Dowolną liczbę skanowania można łączyć postać. Aparat baz danych Będzie przechowywać pętli strony danych, dopóki zostanie ukończona wszystkich skanowania.Mechanizm ten jest również nazywany "skanowania merry-go-round" i demonstruje, dlaczego nie można zagwarantować kolejności wyniki zwróconych z instrukcja SELECT bez klauzula ORDER BY.

Załóżmy, że istnieje tabela z 500 000 stron.Wykonuje UserA Transact-SQL instrukcja, która wymaga skanowanie tabela.Podczas przetwarzania 100 000 stron tego skanowania UserB wykonuje inną Transact-SQL instrukcja, które skanuje tej samej tabela. Aparat baz danych Jeden zestaw żądań odczytu stron po 100,001, planuje i przekazuje wiersze z każdej strona do obu skanowania.Podczas skanowania osiągnie strona 200,000th, UserC wykonuje inną Transact-SQL instrukcja, które skanuje tej samej tabela.Począwszy od strona 200,001, Aparat baz danych przekazuje wiersze z każdej strona, odczytuje powrót do wszystkich trzech skanowania.Po odczytuje 500,000th wiersza, skanowania dla UserA i skanowania dla UserB i UserC zawijać Wstecz i rozpoczęcia odczytu stron, rozpoczynając od strona 1.Gdy Aparat baz danych pobiera strona 100 000, skanowania dla wypełnione UserB.Skanowanie w poszukiwaniu UserC następnie przechowuje przechodząc samodzielnie, aż odczytuje strona 200 000.W tym momencie skanowania zostały zakończone.

Bez zaawansowane skanowania, każdy użytkownik musiałby konkurują z miejsca w buforze i powodować ramienia dysku rywalizacja.Te same strony następnie będzie można odczytać raz dla każdego użytkownika, zamiast odczytu czas i współużytkowanych przez wielu użytkowników, zmniejszają wydajność i opodatkowania zasobów.