Udostępnij za pośrednictwem


Obciążenie zasób wersji wiersza

RAM wersji wiersza obsługuje następujące funkcje dostępne w programie SQL Server:

  • : q

  • Wiele zestawów wyniki Active (MARS)

  • Indeksowanie w trybie online

RAM wersji wiersza obsługuje również następujący wiersz na przechowywanie wersji izolacji poziomów transakcji, która domyślnie nie są włączone:

  • Opcja READ_COMMITTED_SNAPSHOT bazy danych jest włączone, transakcje READ_COMMITTED świadczą poziomie instrukcja odczytać spójności przy użyciu wersji wiersza.

  • Opcja ALLOW_SNAPSHOT_ISOLATION bazy danych jest włączone, transakcje migawka świadczą poziom transakcji odczytać spójności przy użyciu wersji wiersza.

Poziom izolacji na przechowywanie wersji wiersza zmniejszyć liczbę blokad nabytych przez transakcję poprzez wyeliminowanie korzystanie z udostępnionych blokad dla operacji odczytu.Zwiększa to wydajność systemu przez ograniczenie zasobów, używane do zarządzania blokadami.Także zwiększa się wydajność przez zmniejszenie liczby transakcji jest blokowany przez blokad nabytych przez inne transakcje.

Poziom izolacji na przechowywanie wersji wiersza zwiększyć zasoby wymagane przez modyfikacji danych.Włączenie opcji powoduje, że wszystkie zmiany danych dla bazy danych do wersji.Kopia danych, zanim zmiany są przechowywane w tempdb nawet wtedy, gdy brak aktywnych transakcji przy użyciu izolacji na przechowywanie wersji wiersza.Po dokonaniu modyfikacji danych zawiera wskaźnik do wersji danych przechowywanych w tempdb.W przypadku dużych obiektów do tempdb kopiowany jest tylko część obiektu, który zmienił.

Używane miejsce w tempdb

Dla każdego wystąpienie Database Engine, tempdb musi mieć wystarczająco dużo miejsca do zapisania wersji wiersza generowane dla każdej bazy danych w wystąpieniu. Administrator bazy danych musi upewnić się, że tempdb ma miejsca wystarczającą do obsługi magazynu wersja.Istnieją dwa wersja są przechowywane w tempdb:

  • Magazynu wersja kompilacji online indeks jest używany do kompilacje online indeksu w przypadku wszystkich baz danych.

  • Typowe magazynu wersja jest używana dla wszystkich pozostałych danych modyfikacji operacji wszystkie bazy danych.

Wiersz wersji należy przechowywać tak długo, jak aktywnej transakcji musi uzyskać do niego dostęp.Po co minutę wątek tła powoduje usunięcie wersja wiersza, które nie są już potrzebne i zwalnia miejsce wersja w tempdb.Transakcja długim uniemożliwia miejsca w magazynie wersja opublikowanej, jeżeli spełnia ona jeden z następujących warunków:

  • Użyto izolacji na przechowywanie wersji wiersza.

  • Użyto wyzwalacze, Usługa MARS lub operacji budowania indeksu online.

  • Generuje wersji wiersza.

Uwaga

Jeśli wyzwalacz zostanie wywołane wewnątrz transakcji, wersje wierszy utworzonych przez wyzwalacz są zachowywane aż do zakończenia transakcji, nawet wtedy, gdy wersje wierszy nie są już potrzebne po zakończeniu pracy wyzwalacza.Dotyczy to także transakcje zatwierdzone odczytu za pomocą wersji wiersza.W przypadku tego typu transakcji transakcyjnie spójnego widoku bazy danych jest konieczne tylko w przypadku każdej instrukcja w transakcji.Oznacza to, że wiersz wersji dla instrukcja w transakcji nie są już potrzebne po wykonaniu instrukcja.Jednak wersje wierszy utworzonych przez każdej instrukcja w transakcji są zachowywane do zakończenia transakcji.

Gdy tempdb zabraknie miejsca, Database Engine Wymusza magazynów wersja, aby zmniejszyć. W trakcie zmniejszać najdłuższego bieżących transakcji, które nie zostały jeszcze generowane wersji wiersza są oznaczone jako ofiar.dziennik błędów dla każdej transakcji ofiarą jest generowany komunikat 3967.Jeśli transakcja jest oznaczony jako ofiarą, może już odczytać wersja wiersza w magazynie wersja.Podczas próby odczytu wersji wiersza, generowany jest komunikat 3966 i transakcja jest cofana.Jeśli proces shrinking powiedzie się, obszar staje się dostępny w tempdb.W przeciwnym razie tempdb zabraknie miejsca i mają miejsce następujące zdarzenia:

  • Napisz operacji kontynuować wykonać, ale należy nie generować wersji.dziennik błędów jest wyświetlany komunikat informacyjny (3959), ale nie dotyczy transakcji, które zapisuje dane.

  • Transakcje, które próbują uzyskać dostęp do wersji wiersza, które nie zostały wygenerowane z powodu wycofania pełnego tempdb zakończona z powodu błędu 3958.

Miejsce używane w wierszach danych

Każdy wiersz bazy danych może używać do 14 bajtów na końcu wiersza do wiersza informacje na temat wersji.Informacje na temat wersja wiersz zawiera numer sekwencyjny transakcji, że zatwierdzona w wersja i wskaźnik do wersja wiersza transakcji.Te 14 bajtów są dodawane w pierwszym czas wiersz zostanie zmodyfikowany, lub gdy wstawiony nowy wiersz, zgodnie z jedną z następujących warunków:

  • Opcje READ_COMMITTED_SNAPSHOT lub ALLOW_SNAPSHOT_ISOLATION są włączone.

  • Tabela ma wyzwalacza.

  • Wiele zestawów wyniki Active (MARS) jest używany.

  • Operacji budowania indeksu online są obecnie uruchomione na tabela.

Te 14 bajtów zostaną usunięte od czas pierwszego wiersza bazy danych w wierszu zmienia się we wszystkich poniższych warunków:

  • Opcje READ_COMMITTED_SNAPSHOT i ALLOW_SNAPSHOT_ISOLATION jest wyłączona.

  • Wyzwalacz nie istnieje już w tabela.

  • Usługa MARS nie jest używany.

  • Operacji budowania indeksu online nie są aktualnie uruchomione.

Jeżeli korzystasz z funkcji przechowywania wersji wiersza, należy przydzielić dodatkowego miejsca na dysku dla bazy danych pomieścić 14 bajtów na wiersza bazy danych.Dodawanie informacje na temat wersji wiersza może powodować podziały strona indeksu lub podziału na nowej stronie danych, jeśli na bieżącej stronie nie ma wystarczającej ilości miejsca.Jeśli długość wiersza średnią 100 bajtów, dodatkowych 14 bajtów powodują istniejącej tabela powiększyć do 14 procent.

Zmniejszanie współczynnik wypełnienia mogą pomóc zapobiec lub zmniejszenie fragmentacji strony indeksu.Aby przejrzeć informacje fragmentacji danych i indeksów tabela lub widoku, można użyć DBCC SHOWCONTIG.

Miejsce używane w dużych obiektach

The SQL Server Database Engine supports six data types that can hold large strings up to 2 gigabytes (GB) in length: nvarchar(max), varchar(max), varbinary(max), ntext, text, a image. Długie ciągi przechowywane przy użyciu tych typów danych są przechowywane w szeregu fragmenty danych, które są połączone z wiersza danych.Informacje na temat wersji wiersza są przechowywane w każdym fragmencie używane do przechowywania tych długie ciągi.Fragmenty danych to zbiór stron przeznaczonym do dużych obiektów do tabela.

Gdy nowe duże wartości są dodawane do bazy danych, są im przydzielane, używając maksymalnie 8040 bajtów danych dla fragmentu.We wcześniejszych wersjach Database Engine przechowywane do 8080 bajtów ntext, text, lub image dane na fragmenty.

Istniejące ntext, text, a image Aby po uaktualnieniu bazy danych do miejsca, aby informacje na temat wersja wiersza nie jest aktualizowany danych dużych obiektów (LOB) SQL Server z wcześniejszej wersja programu SQL Server. Jednak po raz pierwszy dane LOB zostanie zmodyfikowany, to jest dynamicznie uaktualniane do włączyć przechowywanie wersji informacji.Spowoduje to się zdarzyć nawet wtedy, gdy wiersz wersji nie są generowane.Po uaktualnieniu dane LOB maksymalna liczba bajtów przechowywane na fragment jest zmniejszony z 8080 bajtów do 8040 bajtów.Proces uaktualniania jest równoznaczne z usuwaniem wartość LOB i reinserting tę samą wartość.Dane LOB zostanie uaktualniony, nawet wtedy, gdy jest modyfikowany tylko przez jeden bajt.Jest to jedno-czas operacji dla każdego ntext, text, lub image Kolumna, ale każda operacja może generować bardzo dużą ilość alokacji strona i aktywności We/Wy, w zależności od rozmiaru dane LOB. Może również generuje dużą ilość operacji rejestrowania Jeśli modyfikacja pełni jest rejestrowane.Operacje WRITETEXT i UPDATETEXT minimalny zestaw są rejestrowane, jeśli tryb odzyskiwanie bazy danych nie jest ustawiona na FULL.

The nvarchar(max), varchar(max), and varbinary(max) data types are not available in earlier versions of SQL Server.Z tego powodu nie mają żadnych problemów uaktualniania.

Aby uwzględnić ten wymóg należy przydzielić wystarczającej ilości miejsca na dysku.

Monitorowanie wersja wiersza i magazynu wersja

Monitorowania wersja wiersza, magazynu wersja i migawka izolacja procesów dla wydajności i problemów, SQL Server zawiera liczniki wydajności w Monitorze systemu Windows i narzędzi dostępnych w postaci dynamicznych widoków Management (DMVs).

DMVs

Następujące DMVs zawierają informacje dotyczące bieżącego stanu systemu tempdb i magazynu wersja, jak również przy użyciu wersja wiersza transakcji.

sys.dm_db_file_space_usage.Zwraca obszar informacji o użyciu dla każdego pliku bazy danych.Aby uzyskać więcej informacji zobaczsys.dm_db_file_space_usage (języka Transact-SQL).

sys.dm_db_session_space_usage.Zwraca strona alokacji i dezalokacji aktywności sesja w bazie danych.Aby uzyskać więcej informacji zobaczsys.dm_db_session_space_usage (Transact-SQL).

sys.dm_db_task_space_usage.Zwraca strona alokacji i dezalokacji czynności przez zadanie bazy danych.Aby uzyskać więcej informacji zobaczsys.dm_db_task_space_usage (języka Transact-SQL).

sys.dm_tran_top_version_generators.Zwraca wirtualnej tabela dla obiektów produkcji najbardziej wersja magazynu wersja.Górny 256 zagregowane rekordów długości database_id i rowset_id go groups.Ta funkcja służy do znalezienia największych konsumentów magazynu wersja.Aby uzyskać więcej informacji zobaczsys.dm_tran_top_version_generators (Transact-SQL).

sys.dm_tran_version_store.Zwraca wirtualnego tabela, która wyświetla wszystkie rekordy w wersja w typowych magazynu wersja.Aby uzyskać więcej informacji zobaczsys.dm_tran_version_store (Transact-SQL).

Uwaga

sys.dm_tran_top_version_generators i sys.dm_tran_version_store są funkcje potencjalnie bardzo kosztowne, aby uruchomić, ponieważ oba kwerendy magazynu całej wersja, które mogą być bardzo duże.

sys.dm_tran_active_snapshot_database_transactions.Zwraca wszystkich baz danych w tabela wirtualnej dla wszystkich aktywnych transakcji SQL Server wystąpienie tej wersji wiersza użycia. Transakcje systemowe nie są wyświetlane w tym DMV.Aby uzyskać więcej informacji zobaczsys.dm_tran_active_snapshot_database_transactions (Transact-SQL).

sys.dm_tran_transactions_snapshot.Zwraca wirtualnego tabela, która wyświetla migawek przez każdej transakcji.Migawka zawiera numer kolejny aktywnych transakcji, które należy użyć wersji wiersza.Aby uzyskać więcej informacji zobaczsys.dm_tran_transactions_snapshot (języka Transact-SQL).

sys.dm_tran_current_transaction.Zwraca pojedynczy wiersz, który wyświetla informacje o stanie dotyczących przechowywania wersji wiersza transakcji w bieżącej sesja.Aby uzyskać więcej informacji zobaczsys.dm_tran_current_transaction (Transact-SQL).

sys.dm_tran_current_snapshot.Zwraca wirtualnej tabeli, który wyświetla wszystkie aktywne transakcje na czas uruchamia bieżącej migawka izolacji transakcji.If the current transaction is using snapshot isolation, this function returns no rows.sys.dm_tran_current_snapshot is similar to sys.dm_tran_transactions_snapshot, except that it returns only the active transactions for the current snapshot.Aby uzyskać więcej informacji zobaczsys.dm_tran_current_snapshot (Transact-SQL).

Liczniki wydajności

SQL Server liczniki wydajności dostarczają informacji o wydajności systemu z SQL Server procesy. Następujące liczniki wydajności monitorują tempdb i magazynu wersja, jak również przy użyciu wersja wiersza transakcji.Liczniki wydajności są zawarte w obiekcie wydajności SQLServer:Transactions.

Wolne miejsce w tempdb (KB).Monitoruje ilość, w kilobajtach (KB) wolnego miejsca w bazie danych tempdb.Musi być za mało wolnego miejsca w tempdb do obsługi magazynu w wersja obsługującej izolacji migawka.

Poniższa formuła zawiera surowca oszacowanie rozmiaru magazynu wersja.W przypadku długotrwałych transakcji może być przydatny do monitorowania generowanie i częstotliwość czyszczenia oszacowanie maksymalny rozmiar magazynu wersja.

[rozmiar magazynu wersji wspólnych] = 2 * [wersja magazynu danych na minutę] * [systemem najdłuższy czas (w minutach) transakcji]

Najdłużej bieżące transakcje nie powinna zawierać kompilacje online indeksu.Ponieważ tych operacji może zająć dużo czas na bardzo dużych tabel, kompilacje indeksu online za pomocą magazynu w oddzielnych wersja.Przybliżony rozmiar indeksu online utworzyć wersja magazynu jest równa ilości danych modyfikowane w tabela, w tym wszystkie indeksy podczas budowania indeksu online jest aktywny.

Rozmiar magazynu wersja (KB).Monitoruje rozmiar w KILOBAJTACH magazynów wszystkich wersja.Te informacje pomagają określić ilość miejsca w bazie danych tempdb dla magazynu wersja.Monitorowanie tego licznika w okresie czas zawiera przydatne szacowania dodatkowego miejsca na potrzeby dla tempdb.

Szybkość generowania wersja (KB/s).Monitoruje wersja generowania szybkości w KB na sekundę w magazynach wszystkich wersja.

Wersja Oczyszczanie szybkość (KB/s).Monitoruje wersja oczyszczania szybkości w KB na sekundę w magazynach wszystkich wersja.

Uwaga

Informacje z szybkość generowania wersja (KB/s) i wersja Oczyszczanie szybkości (KB/s) może służyć do przewidywania tempdb wymagania dotyczące ilości wolnego miejsca na dysku.

Liczba jednostek magazynu wersja.Monitoruje określa liczbę jednostek magazynu wersja.

Tworzenie jednostek magazynu wersja.Monitory całkowita liczba wersja przechowywać jednostek służy do przechowywania wersja wiersza od czasu uruchomienia wystąpienie.

Obcięcie jednostka magazynu wersja.Monitoruje całkowita liczba jednostek magazynu wersja obcięte uruchomienia wystąpienie.Jednostka magazynu wersja jest obcinana podczas SQL Server Określa, że żaden z wierszy wersja przechowywanych w jednostce magazynu wersja są potrzebne do uruchomienia aktywnych transakcji.

Współczynnik konfliktu aktualizacji.Monitoruje stopień transakcji migawka aktualizacji konflikty aktualizację, aby całkowita liczba transakcji migawka aktualizacji.

Najdłuższy czas pracy transakcji.Monitoruje najdłużej uruchomionych w sekundach każdą transakcję, przy użyciu wersji wiersza.Ta opcja może służyć do określenia, czy każda transakcja jest uruchomiony na wysokie czas.

Transakcje.Monitoruje całkowita liczba aktywnych transakcji.Nie dotyczy transakcji systemu.

Transakcje migawka.Monitoruje całkowita liczba transakcji aktywnych migawka.

Aktualizacja transakcji migawka.Monitoruje całkowita liczba transakcji aktywnych migawka, służące do wykonywania operacji aktualizacji.

Transakcje nonSnapshot wersja.Monitoruje całkowita liczba aktywnych transakcji innych niż migawka generujących wersja rekordów.

Uwaga

Suma transakcji migawka aktualizacji i NonSnapshot wersja transakcji — łączną liczbę transakcji, które uczestniczą w generacji wersji.Różnica w transakcji Snapshot i aktualizacja transakcji Snapshot raportów liczba transakcji Migawka tylko do odczytu.