Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Utwórz tabelę z kompresją w SQL Server (T-SQL)

Kiedy tworzysz tabelę w SQL Server, masz możliwość skorzystania z kompresji danych.

Kompresja danych pomaga zmniejszyć rozmiar bazy danych. Może również pomóc poprawić wydajność obciążeń intensywnie korzystających z operacji we/wy, ponieważ dane są przechowywane na mniejszej liczbie stron, co zmniejsza liczbę stron, które zapytania muszą odczytać z dysku.

Aby to zrobić, użyj DATA_COMPRESSION opcja podczas tworzenia tabeli.

Przykład

Oto przykład do zademonstrowania.

CREATE TABLE Movies (
    MovieId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    MovieName nvarchar(200)
    )
WITH (DATA_COMPRESSION = ROW);

W tym przypadku używam kompresji wierszy.

Poniższe używa kompresji stron.

CREATE TABLE Movies (
    MovieId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    MovieName nvarchar(200)
    )
WITH (DATA_COMPRESSION = PAGE);

Jak usunąć kompresję

Możesz usunąć kompresję za pomocą ALTER TABLE instrukcja odbudowania tabeli przy użyciu NONE jako typ kompresji.

ALTER TABLE MOVIES
REBUILD WITH (DATA_COMPRESSION = NONE);

Tabele kolumnowe

Jeśli używasz tabel magazynu kolumn (tabele przechowywane z klastrowanym indeksem magazynu kolumn), powyższe typy kompresji nie mają zastosowania. W tym przypadku twoje opcje kompresji to COLUMNSTORE i COLUMNSTORE_ARCHIVE .

Wyniki kompresji mogą się różnić

Stopień kompresji, jaki uzyskasz, będzie zależeć od danych i rodzaju kompresji.

ROW kompresja, na przykład, usuwa niepotrzebne bajty z wartości kolumn, przechowując je w formacie o zmiennej długości. PAGE z drugiej strony kompresja przechowuje powtarzające się wartości tylko raz na stronę i ustawia wskaźnik z odpowiednich kolumn na stronie.

Czasami może się okazać, że kompresja obiektu nie zawsze zmniejsza jego rozmiar, a w niektórych przypadkach może nawet zwiększyć jego rozmiar.

Może się tak zdarzyć, jeśli Twoje kolumny używają typu danych, który nie korzysta z kompresji.

Ponadto kompresja wierszy zmniejsza obciążenie metadanych, ale w niektórych przypadkach obciążenie może być większe niż w przypadku starego formatu przechowywania.

Jeśli Twoje dane nie uzyskują żadnych korzyści z kompresji ze względu na ich typ danych, prawdopodobne jest, że obciążenie spowoduje wzrost wymagań dotyczących pamięci, a nie ich spadek.

Jednak różnice w rozmiarze kompresji będą również zależeć od rzeczywistych danych. Na przykład, jeśli masz znak(10) kolumna, kompresja usunie wszystkie końcowe znaki dopełnienia. Jeśli masz wiele wierszy ze znakami dopełnienia końcowego, powinieneś uzyskać lepszy wynik niż w przypadku braku (lub kilku) wierszy ze znakami dopełnienia końcowego.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę przeszukać wszystkie kolumny w tabeli?

  2. Błąd programu SQL Server 7222:„Tylko dostawca programu SQL Server jest dozwolony w tym wystąpieniu”

  3. Usuń liczby z serwera sql string

  4. Jak włączyć CDC w zestawie tabel LUB włączyć we wszystkich tabelach w bazie danych w programie SQL Server — samouczek dotyczący programu SQL Server

  5. Najlepsze narzędzie do odzyskiwania SQL na rok 2020 do odzyskiwania kluczowej bazy danych SQL