Varchar(Max) – jeśli nie jest za duży może być zapisany w strukturze rekordu

15-sie-2011

varchar(max) to typ pozwalający zachowywać w bazie danych 2^31 bajtów danych. Ponieważ rekordy znajdują się na stronach, a rozmiar strony to 8 KB, to takie dane trzeba przechowywać poza rekordem. W rekordzie zajmuje się jedynie 16 bitów na wskaźnik. Istnieje opcja pozwalająca przechowywać dane typu varchar(max) na stronie z rekordem o ile oczywiście w danej stronie zostało odpowiednio dużo wolnego miejsca.

Polecenie

sp_tableoption N'TestTable', 'large value types out of row', 'ON'

powoduje, że omawiany mechanizm nie działa. Nawet jeżeli do tabeli o strukturze zawierającej kolumnę varchar(max) wstawisz jeden bajt danych, to będzie on umieszczony poza strukturą rekordu, w rekordzie zaś zostanie umieszczony wskaźnik do tej wartości.

Polecenie:

sp_tableoption N'TestTable', 'large value types out of row', 'OFF'

powoduje, że serwer podejmie próbę umieszczenia wartości w rekordzie.

Można sprawdzić, jak jest ustawiona ta opcja dla tabeli odwołując się do widoku sys.tables. Kolumna large_value_types_out_of_row informuje o ustawieniu lub wygaszeniu tej opcji.

Komentarze są wyłączone

Autor: Rafał Kraik