Delen via


Implementatie van paginacompressie

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-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:

  1. Rijcompressie
  2. Voorvoegselcompressie
  3. 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:

  1. Voor elke kolom wordt een waarde geïdentificeerd die kan worden gebruikt om de opslagruimte voor de waarden in elke kolom te verminderen.

  2. Een rij die de voorvoegselwaarden voor elke kolom vertegenwoordigt, wordt gemaakt en opgeslagen in de ci-structuur (compressiegegevens) die direct volgt op de paginakoptekst.

  3. 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.

Diagram van pagina vóór voorvoegselcompressie.

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.

Diagram van pagina na voorvoegselcompressie.

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.

Diagram van 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.

Volgende stappen