Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
In dit artikel wordt beschreven hoe de database-engine paginacompressie implementeert. Deze samenvatting bevat basisinformatie waarmee u de opslagruimte kunt plannen die u nodig hebt voor uw gegevens.
Paginacompressie is vergelijkbaar voor tabellen, tabelpartities, indexen en indexpartities. De volgende beschrijving van paginacompressie voor een tabel is evenzeer van toepassing op paginacompressie voor alle objecttypen. In de volgende voorbeelden worden tekenreeksen gecomprimeerd, maar zowel voorvoegsel als woordenlijstcompressie worden dezelfde principes toegepast op andere gegevenstypen.
Het comprimeren van het bladniveau van tabellen en indexen met paginacompressie bestaat uit drie bewerkingen in de volgende volgorde:
- Rijcompressie
- Voorvoegselcompressie
- Woordenlijstcompressie
Wanneer u paginacompressie gebruikt, worden pagina's op niet-bladniveau van indexen gecomprimeerd met alleen rijcompressie. Voor meer informatie over rijcompressie, zie de implementatie van rijcompressie.
Voorvoegselcompressie
Voor elke pagina die wordt gecomprimeerd, gebruikt voorvoegselcompressie de volgende stappen:
Voor elke kolom wordt een waarde geïdentificeerd die kan worden gebruikt om de opslagruimte voor de waarden in elke kolom te verminderen.
Een rij die de voorvoegselwaarden voor elke kolom vertegenwoordigt, wordt gemaakt en opgeslagen in de ci-structuur (compressiegegevens) die direct volgt op de paginakoptekst.
De herhaalde voorvoegselwaarden in de kolom worden vervangen door een verwijzing naar het bijbehorende voorvoegsel. Als de waarde in een rij niet exact overeenkomt met de geselecteerde voorvoegselwaarde, kan nog steeds een gedeeltelijke overeenkomst worden aangegeven.
In de volgende afbeelding ziet u een voorbeeldpagina van een tabel vóór de compressie van voorvoegsels.
In de volgende afbeelding ziet u dezelfde pagina na compressie van voorvoegsels. Het voorvoegsel wordt verplaatst naar de koptekst en de kolomwaarden worden gewijzigd in verwijzingen naar het voorvoegsel.
In de eerste kolom van de eerste rij geeft de waarde 4b aan dat de eerste vier tekens van het voorvoegsel (aaab) aanwezig zijn voor die rij en ook het teken b. Dit maakt de resulterende waarde aaabb, de oorspronkelijke waarde.
Woordenlijstcompressie
Nadat de compressie van voorvoegsels is voltooid, wordt woordenlijstcompressie toegepast. Woordenlijstcompressie zoekt overal op de pagina naar herhaalde waarden en slaat deze op in het CI-gebied. In tegenstelling tot voorvoegselcompressie is woordenlijstcompressie niet beperkt tot één kolom. Woordenlijstcompressie kan herhaalde waarden vervangen die zich overal op een pagina voordoen. In de volgende afbeelding ziet u dezelfde pagina na woordenlijstcompressie.
Er is naar de waarde 4b verwezen vanuit verschillende kolommen van de pagina.
Wanneer paginacompressie plaatsvindt
Wanneer er een nieuwe tabel met paginacompressie wordt gemaakt, treedt er geen compressie op. De metagegevens voor de tabel geven echter aan dat paginacompressie moet worden gebruikt. Omdat gegevens worden toegevoegd aan de eerste gegevenspagina, worden gegevens met rijen gecomprimeerd. Omdat de pagina niet vol is, profiteert u niet van paginacompressie. Wanneer de pagina vol is, start de volgende rij die moet worden toegevoegd de bewerking voor paginacompressie. De hele pagina wordt beoordeeld; elke kolom wordt geëvalueerd voor voorvoegselcompressie en vervolgens worden alle kolommen geëvalueerd voor woordenlijstcompressie. Als paginacompressie voldoende ruimte heeft gecreëerd op de pagina voor een extra rij, wordt de rij toegevoegd en worden de gegevens zowel rij- als paginagecomprimeerd. Als de ruimte die is opgedaan door paginacompressie minus de benodigde ruimte voor de CI-structuur niet significant is, wordt paginacompressie niet gebruikt voor die pagina. Toekomstige rijen passen op de nieuwe pagina of, als ze niet passen, wordt er een nieuwe pagina aan de tabel toegevoegd. Net als de eerste pagina is de nieuwe pagina niet als eerste pagina gecomprimeerd.
Wanneer een bestaande tabel met gegevens wordt geconverteerd naar paginacompressie, wordt elke pagina opnieuw opgebouwd en geëvalueerd. Als u alle pagina's opnieuw opbouwt, wordt de tabel, index of partitie opnieuw opgebouwd.