W wierszu danych
Typy małych lub średnich dużą wartość (varchar(max), nvarchar(max), varbinary(max), i xml) i typy danych do dużego obiektu (LOB) (text, ntext, i image) mogą być przechowywane w wierszu danych.To zachowanie jest kontrolowany za pomocą dwóch opcji w sp_tableoption systemowa procedura składowana: typów dużą wartość z wiersza opcja dla typów dużą wartość oraz tekstu w wierszu opcja dla dużych obiektów.Opcje te najlepiej nadaje się do tabel, w których wartości danych jednego z tych typów danych są zazwyczaj odczytu lub zapisane w jedną jednostkę i większość instrukcji, które odwołują się do tabela odnoszą się do tego rodzaju danych.W zależności od charakterystyki obciążenie lub obciążenia przechowywania danych w wierszu może nie być użyteczne.
![]() |
---|
Tekstu w wierszu opcji zostaną usunięte w przyszłej wersja SQL Server.Unikaj używania tej opcji w nowych prac rozwojowych i plan do modyfikowania aplikacji korzystających aktualnie z tekstu w wierszu.Zaleca się przechowywanie dużych danych za pomocą varchar(max), nvarchar(max), lub varbinary(max) typów danych.Aby kontrolować zachowanie tych typów danych w wierszu i poza wiersz, typów dużą wartość z wiersza opcji. |
Chyba że tekstu w wierszu jest opcja zestaw ON lub szczególnego limitu w wierszu text, ntext, lub image są ciągi znaków dużych lub ciągów binarnych (do 2 gigabajtów), które są przechowywane poza wiersz danych.Wiersz danych zawiera tylko tekst 16-bajtowy wskaźnik punkty do węzła głównego drzewa wbudowany wewnętrzny wskaźników.Te wskaźniki mapuj strony, w którym ciąg fragmenty są przechowywane.Aby uzyskać więcej informacji na temat przechowywania text, ntext, lub image ciągów, zobacz Tekst i obraz danych.
zestaw tekstu w wierszu opcja dla tabel zawierających kolumn typu dane LOB.Można również określić tekstu w wierszu opcji limit, od 24 do 7000 bajtów.
Podobnie chyba że typów dużą wartość z wiersza jest opcja zestaw on, varchar(max), nvarchar(max), varbinary(max), i xml kolumn są przechowywane, jeśli jest to możliwe, wewnątrz wierszy danych.Przypadku, Aparat baz danych programu SQL Server próbuje dopasować określoną wartość, jeśli mogą i będzie wypychanie wartość off wiersz inaczej.Jeśli typów dużą wartość z wiersza jest zestaw on, wartości są przechowywane poza wiersz i wskaźnik 16-bajtowy tekst jest przechowywany w rekordzie.
Ostrzeżenie
Masowej w wierszu dla typów danych dużą wartość jest zestaw do 8000 bajtów po typów dużą wartość z wiersza jest wyłączona.W odróżnieniu od tekstu w wierszu opcji nie można określić limit w wierszu kolumny w tabela.
Gdy tabela jest skonfigurowany do przechowywania dużą wartość typu lub typów danych do dużego obiektu bezpośrednio w danych wierszy, rzeczywiste kolumna wartości będą w wiersza, jeśli istnieje jeden z następujących warunków:
Długość ciąg jest krótszy niż limit określony dla text, ntext, i image kolumny.
Dostępne w wierszu danych, aby pomieścić ciąg jest wystarczająca ilość wolnego miejsca.
Typ wartości dużych lub dużego obiektu wartość kolumna Typ danych jest przechowywana w wierszu danych Aparat baz danych nie ma dostępu do oddzielną strona lub zestaw stron do odczytu lub zapisu znak lub ciąg binarny.Dzięki temu Odczyt i zapis o tak szybka jak Odczyt lub zapis ograniczony rozmiar ciągi w wierszu varchar, nvarchar, lub varbinary ciągów.Podobnie, gdy wartości są przechowywane poza wierszem, Aparat baz danych ponosi dodatkowe strona odczytu lub zapisu.
Dla typów danych dużego obiektu, jeśli ciąg jest dłuższy niż tekstu w wierszu opcji limitu lub miejsca w wierszu zestaw wskaźniki, które mogą w inny sposób przechowywane w węźle katalog główny drzewa wskaźnik są przechowywane w wierszu.Wskaźniki są przechowywane w wierszu, jeśli istnieje jeden z następujących warunków:
Ilość miejsca potrzebnego do przechowywania wskaźników jest krótszy niż określona tekstu w wierszu opcję limit.
Dostępne w wierszu danych do przechowywania wskaźników jest wystarczająca ilość wolnego miejsca.
Po przeniesieniu z korzenia wskaźniki do wiersza, Aparat baz danych nie trzeba użyć węzła głównego.Można to wyeliminować dostęp strona podczas odczytu lub zapisu ciąg.Zwiększa wydajność.
W przypadku węzłów głównych są przechowywane jako jeden z fragmentów ciąg w systemie LOB strona i może zawierać maksymalnie pięć wskaźniki wewnętrznego. Aparat baz danych Potrzebuje 72 bajtów miejsca w wierszu do przechowywania pięciu wskaźników dla ciąg w wierszu.Jeśli jest za mało miejsca w wierszu do przechowywania wskaźników po tekstu w wierszu opcji jest włączone lub typów dużą wartość z wiersza opcja jest wyłączona, Aparat baz danych może mieć strona 8 K, aby je przydzielić.Jeśli długość danych wartości przekracza 40,200 bajtów, więcej niż pięciu wskaźników w wierszu są zobowiązani, na których punkt tylko 24 bajty są przechowywane w głównym wiersz i jest alokowana strona dodatkowe dane LOB miejsce magazynowania.
Kiedy długie ciągi są przechowywane w wierszu, są one przechowywane podobnie ciągów o zmiennej długości. Aparat baz danych Kolumn w malejącej kolejności rozmiar sortuje i wypycha wartości poza wiersz, aż pozostałe kolumny dopasowanie (8 K) strona danych.
Włączanie i wyłączanie typów dużą wartość z wiersza opcji
Można włączyć typów dużą wartość z wiersza opcja dla tabela za pomocą sp_tableoption w następujący sposób:
sp_tableoption N'MyTable', 'large value types out of row', 'ON'
Jeśli określisz OFF limit w wierszu varchar(max), nvarchar(max), varbinary(max), i xml kolumn jest zestaw do 8000 bajtów.Tylko główny 16-bajtowy wskaźnik jest przechowywana w wierszu, a wartość miejsca LOB.Zaleca się ustawienie tej opcji ON dla tabel, w których większość instrukcji nie odwołania kolumn typów dużą wartość.Przechowywanie tych kolumn poza wiersza oznacza, że więcej wierszy może być dopasowanie na strona, w związku z tym zmniejszenie liczby operacji We/Wy wymagane skanowanie tabela.
Wartość ta opcja zestaw na wyłączone, wiele ciągów może mieć przechowywane w wierszu, potencjalnie zmniejszanie liczby wierszy danych, które mieszczą się na każdej stronie.Jeśli większość instrukcji, które odwołują się do tabela nie uzyskać dostępu do varchar(max), nvarchar(max), varbinary(max), i xml kolumny, zmniejszenie wierszy strona można zwiększyć stron, które należy przeczytać przetwarzania kwerend.Zmniejszenie wierszy na strona można zwiększyć liczbę stronas, który może być skanowane, jeśli Optymalizator znajdzie indeks nie można używać.
Można również użyć sp_tableoption wyłączyć opcję Limit wierszy:
sp_tableoption N'MyTable', 'large value types out of row', 'OFF'
Gdy duża wartość typy z wartość opcji wiersza zostanie zmieniona, w istniejących varchar(max), nvarchar(max), varbinary(max), i xml wartości nie są bezpośrednio konwertowane.Następnie są one aktualizowane Magazyn ciągów został zmieniony.Wszelkie nowe wartości wstawione do tabela są przechowywane w mocy zgodnie z opcją tabela.
Aby zbadać wartość typów dużą wartość z wiersza opcji dla określonej tabela, kwerendy large_value_types_out_of_row kolumna sys.tables wykazu widoku.To kolumna jest równa 0, jeśli tabela nie ma typów dużą wartość z wiersza włączone, a 1 Jeśli typy dużą wartość są przechowywane z wiersza.
Włączanie i wyłączanie tekstu w wierszu opcji
Można włączyć tekstu w wierszu opcja dla tabela za pomocą sp_tableoption w następujący sposób:
sp_tableoption N'MyTable', 'text in row', 'ON'
Opcjonalnie można określić maksymalny limit, od 24 do 7000 bajtów, o długości text, ntext, i image ciąg znaków, które mogą być przechowywane w wierszu danych:
sp_tableoption N'MyTable', 'text in row', '1000'
Jeśli określisz na zamiast konkretnego limitu limit domyślnie 256 bajtów.Wartość domyślna to zapewnia większość korzyści wydajności, które mogą zostać uzyskane za pomocą tekstu w wierszu opcji.Chociaż można zazwyczaj nie powinien zestaw wartość niższą niż 72 możesz również nie powinny zestaw zbyt wysokiej wartości.Dotyczy to zwłaszcza dla tabel, w których większość instrukcji odwołuje się do text, ntext, i image kolumny; lub w którym są wielu text, ntext, i image kolumny.
Jeśli użytkownik zestaw dużych tekstu w wierszu limitu i wiele ciągi są przechowywane w sam wiersz, mogą znacznie zmniejszyć liczbę wierszy danych, które mieszczą się na każdej stronie.Jeśli większość instrukcji, które odwołują się do tabela nie uzyskać dostępu do text, ntext, lub image kolumny, zmniejszenie wierszy strona można zwiększyć stron, które należy przeczytać przetwarzania kwerend.Zmniejszenie wierszy na strona można zwiększyć rozmiar indeksów i stron, które może być skanowane, jeśli Optymalizator znajdzie indeks nie można używać.Wartość domyślna 256 dla tekstu w wierszu limitu jest wystarczająco duży, aby upewnić się, że małe ciągi i wskaźniki głównego tekstu mogą być przechowywane w wierszach, ale nie tak duża, że zmniejsza wierszy na strona wystarczająco, aby wpłynąć na wydajność.
Tekstu w wierszu opcja jest automatycznie zestaw do 256 dla zmiennych o typie danych tabela i tabele zwracane przez użytkownika funkcje zwracające tabela.Nie można zmienić tego ustawienia.
Można również użyć sp_tableoption Aby wyłączyć opcję określając wartość opcji albo OFF lub 0:
sp_tableoption N'MyTable', 'text in row', 'OFF'
Aby zbadać wartość tekstu w wierszu opcji dla określonej tabela, kwerendy text_in_row_limit kolumna sys.tables wykazu widoku.W tej kolumnie jest 0, jeśli tabela nie ma tekstu w wierszu włączony i wartość większa niż 0, jeśli wiersz w ograniczone zostało zestaw.
Efekty użycia tekstu w wierszu opcji
Tekstu w wierszu opcja ma następujące skutki:
Po włączeniu tekstu w wierszu opcji odczytywać lub modyfikować dowolne części można użyć instrukcji TEXTPTR, READTEXT, UPDATETEXT lub WRITETEXT text, ntext, lub image wartość przechowywana w tabela.W instrukcji SELECT można odczytać całe text, ntext, lub image ciąg, lub użyj PODCIĄG funkcja odczytywania części ciągu.WSTAW wszystko lub instrukcji UPDATE, które odwołują się do tabela należy określić pełną ciągi znaków i nie można modyfikować tylko część text, ntext, lub image ciąg.
Gdy tekstu w wierszu pierwszym włączeniu opcji istniejących text, ntext, lub image ciągi są konwertowane nie bezpośrednio w wierszu ciągi.Ciągi są konwertowane w wiersza ciągi tylko wtedy, gdy są one aktualizowane.Wszelkie text, ntext, lub image ciąg dodaje się po tekstu w wierszu jest włączona opcja jest wstawiany jako ciąg w wierszu.
Wyłączanie tekstu w wierszu opcja może być długotrwały, zarejestrowane operacji.Tabela jest zablokowana i wszystkie w wiersza text, ntext, i image ciągi są konwertowane na zwykły text, ntext, i image ciągów.Czas, należy uruchomić polecenie i ilość danych zmodyfikowane zależy od liczby text, ntext, i image ciągów muszą zostać przekonwertowane z ciągów znaków w wierszu do regularnych ciągi.
Tekstu w wierszu opcja nie wpływa na działanie SQL Server macierzystego klienta dostawcy OLE DB lub SQL Server sterownika ODBC macierzystym klienta, inne niż szybkość dostępu do text, ntext, i image danych.
Biblioteki DB tekstowych i graficznych funkcje, takie jak dbreadtext i dbwritetext, nie można stosować do tabela po tekstu w wierszu została włączona opcja.