Sdílet prostřednictvím


Požadavky pro minimální protokolování hromadného importu

platí pro:SQL Server

Pro databázi v rámci úplného modelu obnovení jsou všechny operace vložení řádků prováděné hromadným importem plně protokolovány v transakčním protokolu. Velké importy dat můžou způsobit rychlé vyplnění transakčního protokolu, pokud se použije úplný model obnovení. Naproti tomu v rámci jednoduchého modelu obnovení nebo modelu hromadného obnovení minimální protokolování operací hromadného importu snižuje možnost, že operace hromadného importu vyplní místo protokolu. Minimální protokolování je také efektivnější než úplné protokolování.

Poznámka:

Model hromadného obnovení je navržený tak, aby dočasně nahradil celý model obnovení během velkých hromadných operací.

Požadavky na tabulku pro operace hromadného importu s minimálním protokolováním

Minimální protokolování vyžaduje, aby cílová tabulka splňovala následující podmínky:

  • Tabulka se nereplikuje.

  • Zamykání tabulky je zadané (pomocí TABLOCK).

    Poznámka:

    I když se vkládání dat během operace hromadného importu s minimálním protokolem nezaprotokoluje, databázový stroj stále protokoluje přidělení rozsahu při každém přidělení nového rozsahu do tabulky.

  • Tabulka není tabulka optimalizovaná pro paměť.

Jestli může dojít k minimálnímu protokolování pro tabulku, závisí také na tom, jestli je tabulka indexovaná, a pokud ano, jestli je tabulka prázdná:

  • Pokud tabulka neobsahuje žádné indexy, datové stránky se protokolují minimálně.

  • Pokud tabulka neobsahuje clusterovaný index, ale obsahuje jeden nebo více neclusterovaných indexů, datové stránky se vždy protokolují minimálně. Způsob protokolování stránek indexu ale závisí na tom, jestli je tabulka prázdná:

    • Pokud je tabulka prázdná, indexové stránky se protokolují minimálně. Pokud začnete s prázdnou tabulkou a hromadně importujete data v několika dávkách, index i datové stránky se pro první dávku zaprotokolují minimálně, ale počínaje druhou dávkou se zaprotokolují pouze datové stránky.

    • Pokud je tabulka neprázdná, indexové stránky jsou plně zaprotokolovány.

    • Pokud některý z indexů obsahuje IGNORE_DUP_KEY = ON, index a datové stránky jsou plně protokolovány.

  • Pokud má tabulka clusterovaný index a je prázdná, data i indexové stránky se protokolují minimálně. Naproti tomu pokud tabulka obsahuje clusterovaný index založený na stromu B a není prázdný, datové stránky a indexové stránky jsou plně protokolovány bez ohledu na model obnovení. Pokud začnete s prázdnou tabulkou rowstore a hromadně importujete data v dávkách, indexové i datové stránky se pro první dávku zaprotokolují minimálně, ale z druhé dávky dál se hromadně protokolují pouze datové stránky.

    Poznámka:

    Dokumentace používá termín B-tree obecně v odkazu na indexy. V indexech rowstore databázový stroj implementuje strom B+. To neplatí pro indexy columnstore ani indexy v tabulkách optimalizovaných pro paměť. Další informace najdete v SQL Serveru a architektuře indexu Azure SQL a průvodci návrhem.

  • Informace o protokolování clusterovaného indexu columnstore (CCI) najdete v tématu Pokyny k načítání dat indexu Columnstore.

Poznámka:

Pokud je povolena transakční replikace, BULK INSERT operace jsou plně protokolovány i v rámci modelu hromadného protokolování obnovení.

Další krok