Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Az SQL Server, az Azure SQL Database és az Azure SQL felügyelt példány támogatja a sor- és laptömörítést a sortáblák és indexek számára, valamint az oszloptári és oszloptári archiválási tömörítést az oszloptárolós táblák és indexek esetében.
Sortártáblák és indexek esetén az adattömörítési funkcióval csökkentheti az adatbázis méretét. A helytakarékosság mellett az adattömörítés segíthet az I/O-igényes számítási feladatok teljesítményének javításában, mivel az adatokat kevesebb oldalon tárolják, és a lekérdezéseknek kevesebb lapot kell olvasniuk a lemezről. Azonban a kiszolgálón további CPU-erőforrásokra van szükség az adatok tömörítéséhez és kibontásához, amíg az adatcsere zajlik az alkalmazás és a kiszolgáló között. A sor- és oldaltömörítést a következő adatbázis-objektumokon konfigurálhatja:
- Egy halomként tárolt egész tábla.
- Egy teljes táblázat, amely fürtözött indexként van tárolva.
- Egy teljes nem klaszterezett index.
- Egy teljes indexelt nézet.
- Particionált táblák és indexek esetén konfigurálhatja az egyes partíciók tömörítési beállítását, és az objektumok különböző partícióinak nem kell ugyanazzal a tömörítési beállítással rendelkezniük.
Az oszlopcentrikus táblák és indexek esetében az oszlopcentrikus táblák és indexek mindig oszlopcentrikus tömörítést használnak, és ez nem felhasználó által konfigurálható. Az oszlopcentrikus archiválási tömörítéssel tovább csökkentheti az adatméretet olyan helyzetekben, amikor több időt és processzorerőforrást biztosít az adatok tárolásához és lekéréséhez. Az oszlopcentrikus archiválási tömörítést a következő adatbázis-objektumokon konfigurálhatja:
- Egy teljes oszlopcentrikus tábla vagy fürtözött oszlopcentrikus index. Mivel egy oszlopcentrikus tábla fürtözött oszlopcentrikus indexként van tárolva, mindkét módszer ugyanazt az eredményt kapja.
- Egy teljes nem halmazosított oszlop-tárolós index.
- Particionált oszloptártáblák és oszlopcentrikus indexek esetén konfigurálhatja az egyes partíciók archiválási tömörítési beállítását, és a különböző partícióknak nem kell ugyanazzal az archiválási tömörítési beállítással rendelkezniük.
Megjegyzés:
Az adatok a GZIP-algoritmus formátumával is tömöríthetők. Ez egy további lépés, és leginkább alkalmas az adatok egy részének tömörítésére a régi adatok hosszú távú tárolás céljából történő archiválásakor. A függvény használatával COMPRESS
tömörített adatok nem indexelhetők. További információ: COMPRESS (Transact-SQL).
Sor- és oldaltömörítési szempontok
Sor- és oldaltömörítés használatakor vegye figyelembe a következő szempontokat:
Az adattömörítés részletei értesítés nélkül változhatnak a szervizcsomagokban vagy az azt követő kiadásokban.
A tömörítés elérhető az Azure SQL Database-ben
A tömörítés nem érhető el az SQL Server minden kiadásában. További információkért tekintse meg a jelen szakasz végén található kiadások és támogatott funkciók listáját.
A rendszertáblák tömörítése nem érhető el.
A tömörítéssel több sor tárolható egy lapon, de nem változtatja meg a tábla vagy index maximális sorméretét.
A táblázat tömörítéséhez nem engedélyezhető, ha a maximális sorméret és a tömörítési többletterhelés meghaladja a 8060 bájt maximális sorméretet. Például egy olyan tábla, amely oszlopokkal
c1 CHAR(8000)
rendelkezik, ésc2 CHAR(53)
a további tömörítési többletterhelés miatt nem tömöríthető. Ha a vardecimális tárolási formátumot használja, a sorméret ellenőrzése akkor történik meg, ha engedélyezve van a formátum. Sor- és oldaltömörítés esetén a sorméret ellenőrzése az objektum kezdeti tömörítésekor, majd az egyes sorok beszúrása vagy módosításakor történik. A tömörítés a következő két szabályt kényszeríti ki:- A rögzített hosszúságú típus frissítésének mindig sikeresnek kell lennie.
- Az adattömörítés letiltása mindig sikeres lehet. Még akkor is, ha a tömörített sor elfér az oldalon, ami azt jelenti, hogy kevesebb, mint 8060 bájt; Az SQL Server megakadályozza azokat a frissítéseket, amelyek tömörítetlen állapotban nem férnek el a sorban.
A soron kívüli adatok nem lesznek tömörítve az adattömörítés engedélyezésekor. Egy 8060 bájtnál nagyobb XML-rekord például soron kívüli oldalakat használ, amelyek nincsenek tömörítve.
Az adattömörítés számos adattípust nem érint. További információkat lásd a Sortömörítés hatása a tárolásrarészben.
Ha meg van adva a partíciók listája, a tömörítési típus beállítható
ROW
az ,PAGE
vagyNONE
az egyes partíciókon. Ha a partíciók listája nincs megadva, az összes partíció az utasításban megadott adattömörítési tulajdonsággal van beállítva. Tábla vagy index létrehozásakor az adattömörítés NINCS értékre van állítva, kivéve, ha másként van megadva. Ha módosít egy táblát, a meglévő tömörítés megmarad, kivéve, ha másként van megadva.Ha megadja a partíciók vagy a tartományon kívüli partíciók listáját, a rendszer hibát okoz.
A nem klaszteres indexek nem öröklik a tábla tömörítési tulajdonságát. Az indexek tömörítéséhez explicit módon be kell állítania az indexek tömörítési tulajdonságát. Alapértelmezés szerint az indexek tömörítési beállítása NINCS értékre van állítva az index létrehozásakor.
Ha egy halomra fürtözött indexet hoz létre, a fürtözött index örökli a halom tömörítési állapotát, hacsak nincs megadva másik tömörítési állapot.
Ha egy halom lapszintű tömörítésre van konfigurálva, a lapok csak az alábbi módokon kapják meg az oldalszintű tömörítést:
- Az adatok tömeges importálása engedélyezve van a tömeges optimalizálással.
- Az adatok az
INSERT INTO ... WITH (TABLOCK)
szintaxis használatával vannak beszúrva, és a tábla nem tartalmaz nem klaszterezett indexet. - A táblázat újraépítése a
ALTER TABLE ... REBUILD
utasítás végrehajtásával, aPAGE
tömörítési beállítással történik.
A DML-műveletek részeként egy halomba foglalt új lapok nem használnak
PAGE
tömörítést, amíg a halom újra nem jön létre. A kupac újraépítése tömörítés ismételt alkalmazásával vagy eltávolításával, illetve fürtözött index létrehozásával és eltávolításával.A halom tömörítési beállításának módosításához a táblán lévő összes nemclustered indexet újra kell építeni, hogy mutatókat tartalmazzanak az új sorhelyekhez a halomban.
Online vagy offline engedélyezheti vagy letilthatja a
ROW
vagy aPAGE
tömörítést. A halom tömörítésének engedélyezése egyetlen szálon történik egy online művelethez.A sor- vagy oldaltömörítés engedélyezésére vagy letiltására vonatkozó lemezterület-követelmények megegyeznek az indexek létrehozásával vagy újraépítésével. A particionált adatok esetében csökkentheti a szükséges területet, ha egyszerre egy partíció tömörítését engedélyezi vagy letiltja.
A particionált táblák partícióinak tömörítési állapotának meghatározásához kérdezze le a
data_compression
sys.partitions
katalógusnézet oszlopát.Indexek tömörítésekor a levélszintű lapok sor- és oldaltömörítéssel is tömöríthetők. A nem levélszintű lapok nem kapnak laptömörítést.
Méretük miatt a nagy értékű adattípusok néha külön tárolódnak a normál soradatoktól a speciális célú oldalakon. Az adattömörítés nem érhető el a külön tárolt adatokhoz.
Az SQL Server 2005-ben (9.x) a vardecimális tárolási formátumot implementáló táblák a frissítéskor megőrzik ezt a beállítást. Sortömörítést alkalmazhat a vardecimális tárolási formátummal rendelkező táblákra. Mivel azonban a sortömörítés a vardecimális tárolási formátum szuperhalmaza, nincs ok a vardecimális tárolási formátum megtartására. A decimális értékek nem kapnak további tömörítést, ha a vardecimális tárolási formátumot sortömörítéssel kombinálja. Az oldaltömörítést alkalmazhatja a vardecimális tárolási formátummal rendelkező táblákra; a vardecimális tárolóformátumú oszlopok azonban valószínűleg nem érnek el további tömörítést.
Megjegyzés:
Az SQL Server minden támogatott verziója támogatja a vardecimális tárolási formátumot; mivel azonban az adattömörítés ugyanazokat a célokat éri el, a vardecimális tárolási formátum elavult. Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.
Az SQL Server windowsos kiadásai által támogatott funkciók listáját a következő témakörben találja:
- Az SQL Server 2025 Előzetes verzió kiadásai és támogatott funkciói
- SQL Server 2022 kiadásai és támogatott funkciói
- SQL Server 2019 kiadásai és támogatott funkciói
- SQL Server 2017 kiadásai és támogatott funkciói
- SQL Server 2016- kiadásai és támogatott funkciói
Columnstore és columnstore archív tömörítés
Az oszlopcentrikus táblák és indexek mindig oszlopcentrikus tömörítéssel vannak tárolva. Az oszlopcentrikus adatok méretét további, archiválási tömörítésnek nevezett tömörítés konfigurálásával tovább csökkentheti. Az archiválási tömörítés végrehajtásához az SQL Server futtatja a Microsoft XPRESS tömörítési algoritmust az adatokon. Archiválási tömörítés hozzáadása vagy eltávolítása az alábbi adattömörítési típusok használatával:
- A
COLUMNSTORE_ARCHIVE
adattömörítéssel tömörítse az oszlopstore adatokat az archiválási tömörítés használatával. - Használja a
COLUMNSTORE
adattömörítést az archivált tömörítés kicsomagolásához. Az eredményként kapott adatok továbbra is oszlopcentrikus tömörítéssel lesznek tömörítve.
Archiválási tömörítés hozzáadásához használja az ALTER TABLE (Transact-SQL) vagy az ALTER INDEX (Transact-SQL), a REBUILD
opcióval és a DATA COMPRESSION = COLUMNSTORE_ARCHIVE
.
Például:
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = 1 WITH (
DATA_COMPRESSION = COLUMNSTORE_ARCHIVE
);
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = ALL WITH (
DATA_COMPRESSION = COLUMNSTORE_ARCHIVE
);
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = ALL WITH (
DATA_COMPRESSION = COLUMNSTORE_ARCHIVE ON PARTITIONS (2, 4)
);
Az archiválási tömörítés eltávolításához és az adatok oszlopcentrikus tömörítésre való visszaállításához használja az ALTER TABLE (Transact-SQL) vagy az ALTER INDEX (Transact-SQL) lehetőséget a REBUILD
következő beállítással:DATA COMPRESSION = COLUMNSTORE
Például:
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = 1 WITH (
DATA_COMPRESSION = COLUMNSTORE
);
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = ALL WITH (
DATA_COMPRESSION = COLUMNSTORE
);
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = ALL WITH (
DATA_COMPRESSION = COLUMNSTORE ON PARTITIONS (2, 4)
);
Ez a következő példa az adattömörítést oszlopcentrikusra állítja egyes partíciókon, és oszlopcentrikus archiválást a többi partíción.
ALTER TABLE ColumnstoreTable1
REBUILD PARTITION = ALL WITH (
DATA_COMPRESSION = COLUMNSTORE
ON PARTITIONS (4, 5),
DATA COMPRESSION = COLUMNSTORE_ARCHIVE
ON PARTITIONS (1, 2, 3)
);
Teljesítmény
Ha archiválási tömörítéssel tömöríti az oszlopcentrikus indexeket, az index lassabban teljesít, mint azok az oszlopcentrikus indexek, amelyek nem rendelkeznek archiválási tömörítéssel. Csak akkor használjon archiválási tömörítést, ha megengedheti magának, hogy több időt és cpu-erőforrásokat használjon az adatok tömörítéséhez és lekéréséhez.
Az archiválási tömörítés előnye a csökkentett tárterület, amely olyan adatok esetében hasznos, amelyekhez gyakran nem férnek hozzá. Ha például minden hónapban rendelkezik partícióval, és a tevékenység nagy része a legutóbbi hónapokra szól, archiválhatja a régebbi hónapokat a tárolási követelmények csökkentése érdekében.
Metadaták
Az alábbi rendszernézetek a fürtözött indexek adattömörítésével kapcsolatos információkat tartalmaznak:
-
sys.indexes (Transact-SQL) – A
type
éstype_desc
oszlopok tartalmazzákCLUSTERED COLUMNSTORE
ésNONCLUSTERED COLUMNSTORE
. -
sys.partitions (Transact-SQL) – Az
data_compression
és adata_compression_desc
oszlopok tartalmazzák aCOLUMNSTORE
ésCOLUMNSTORE_ARCHIVE
értékeket.
Az sp_estimate_data_compression_savings (Transact-SQL) eljárás az oszlopcentrikus indexekre is alkalmazható.
A particionált táblákra és indexekre gyakorolt hatás
Ha particionált táblákkal és indexekkel használ adattömörítést, vegye figyelembe az alábbi szempontokat:
Ha a partíciók felosztása az
ALTER PARTITION
utasítással történik, mindkét partíció örökli az eredeti partíció adattömörítési attribútumát.Két partíció egyesítésekor az eredményül kapott partíció örökli a célpartíció adattömörítési attribútumát.
Partícióváltáshoz a partíció adattömörítési tulajdonságának meg kell egyeznie a tábla tömörítési tulajdonságával.
A particionált táblák vagy indexek tömörítésének módosításához két szintaxisvariáció használható:
Az alábbi szintaxis csak a hivatkozott partíciót építi újra:
ALTER TABLE <table_name> REBUILD PARTITION = 1 WITH ( DATA_COMPRESSION = <option> );
Az alábbi szintaxis újraépíti a teljes táblázatot a meglévő tömörítési beállítás használatával a nem hivatkozott partíciók esetében:
ALTER TABLE <table_name> REBUILD PARTITION = ALL WITH ( DATA_COMPRESSION = PAGE ON PARTITIONS(<range>), ... );
A particionált indexek ugyanazt az elvet követik a használatával
ALTER INDEX
.Fürtözött index elvetésekor a megfelelő halompartíciók megőrzik az adattömörítési beállításukat, hacsak a particionálási sémát nem módosítják. Ha a particionálási séma módosul, a rendszer minden partíciót tömörítetlen állapotba hoz át. A fürtözött index elvetéséhez és a particionálási séma módosításához a következő lépések szükségesek:
- A fürtözött index elvetése.
- Módosítsa a táblázatot a
ALTER TABLE ... REBUILD
tömörítési beállítást meghatározó beállítással.
A fürtözött indexek
OFFLINE
elvetése gyors művelet, mert csak a fürtözött indexek felső szintjei törlődnek. Fürtözött index elvetésekorONLINE
az SQL Servernek kétszer újra kell építenie a halomot, egyszer az 1. lépéshez, egyszer pedig a 2. lépéshez.
A tömörítés hatása a replikációra
Ha replikációval használja az adattömörítést, vegye figyelembe az alábbi szempontokat:
Amikor a Pillanatkép-ügynök létrehozza a kezdeti sémaszkriptet, az új séma ugyanazokat a tömörítési beállításokat használja mind a tábla, mind az indexek esetében. A tömörítés nem engedélyezhető csak a táblán, és nem az indexen.
Tranzakciós replikáció esetén a cikkséma-beállítás határozza meg, hogy milyen függő objektumokat és tulajdonságokat kell parancsfájlokkal létrehozni. További információ: sp_addarticle.
A terjesztési ügynök nem ellenőrzi az alacsonyabb szintű előfizetőket, ha szkripteket alkalmaz. Ha a tömörítés replikációja ki van választva, a tábla létrehozása nem sikerül a alacsonyabb szintű előfizetők számára. Vegyes topológia esetén ne engedélyezze a tömörítés replikációját.
Az egyesítési replikáció esetében a kiadványkompatibilitási szint felülírja a sémabeállításokat, és meghatározza a szkriptelt sémaobjektumokat.
Vegyes topológia esetén, ha nem szükséges támogatni az új tömörítési beállításokat, a kiadvány kompatibilitási szintjét a alacsonyabb szintű előfizetői verzióra kell állítani. Ha szükséges, tömörítse a táblákat a létrehozásuk után az előfizető eszközén.
Az alábbi táblázat a replikáció során a tömörítést szabályozó replikációs beállításokat mutatja be.
Felhasználói szándék | Partíciós séma replikálása egy táblához vagy indexhez | Tömörítési beállítások replikálás | Szkriptelési viselkedés |
---|---|---|---|
A partíciós séma replikálása és a tömörítés engedélyezése a partíción az előfizetőnél. | Igaz | Igaz | Szkripteket hoz létre a partíciós sémához és a tömörítési beállításokhoz. |
A partíciós séma replikálása, de az előfizető adatainak tömörítése nem. | Igaz | Téves | A szkriptek kiosztják a partíciós sémát, de a partíció tömörítési beállításait nem. |
A partíciós sémát nem kell replikálni, és az adatokat nem kell tömöríteni az előfizetőn. | Téves | Téves | Nem engedélyezi a szkriptpartíciót vagy a tömörítési beállításokat. |
A táblázat tömörítése az előfizetőn, ha az összes partíció tömörítve van a kiadónál, de nem replikálja a partíciós sémát. | Téves | Igaz | Ellenőrzi, hogy az összes partíció engedélyezve van-e a tömörítéshez. A szkriptek a táblázat szintjén végzik el a tömörítést. |
Hatás más SQL Server-összetevőkre
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
A tömörítés az adatbázismotorban történik, és az adatok tömörítetlen állapotban jelennek meg az SQL Server többi összetevőjének. Ez a tömörítés más összetevőkre gyakorolt hatását a következő tényezőkre korlátozza:
- Tömeges importálási és exportálási műveletek
- Az adatok exportálásakor még natív formátumban is az adatok tömörítetlen sorformátumban jelennek meg. Ez azt eredményezheti, hogy az exportált adatfájl mérete jelentősen nagyobb, mint a forrásadatok.
- Az adatok importálásakor, ha a céltáblát engedélyezték a tömörítéshez, az adatbázismotor tömörített sorformátumúvá alakítja az adatokat. Ez megnövelheti a processzorhasználatot ahhoz képest, amikor az adatokat tömörítetlen táblába importálják.
- Amikor az adatokat tömegesen importálják egy laptömörítéssel rendelkező halomba, a tömeges importálási művelet oldaltömörítéssel próbálja tömöríteni az adatokat az adatok beszúrásakor.
- A tömörítés nem befolyásolja a biztonsági mentést és a visszaállítást.
- A tömörítés nem befolyásolja a naplók szállítását.
- Az adattömörítés nem kompatibilis a ritka oszlopokkal. Ezért a ritka oszlopokat tartalmazó táblák nem tömöríthetők, és a ritka oszlopok sem adhatók hozzá egy tömörített táblához.
- A tömörítés engedélyezése a lekérdezéstervek módosítását okozhatja, mivel az adatok tárolása oldalonként eltérő számú oldallal és sorszámmal történik.