Bestandssysteem-snapshots kunnen ervoor zorgen dat vectorcompactie zowel oude als herschreven blokken behoudt, waardoor het vrijgeven van ruimte wordt vertraagd en de copy-on-write-druk tijdens samenvoegingen toeneemt.
Een vectordatabase kan segmenten compacteren om tombstones te verwijderen, kleine bestanden samen te voegen en de query-lokaliteit te verbeteren, waarbij verouderde bestanden na een veilige vervanging worden verwijderd. Een bestandssysteem-snapshot die vóór de samenvoeging is gemaakt, verwijst nog steeds naar hun oude blokken. De pool behoudt die blokken dus en wijst tegelijkertijd ruimte toe voor de gecompacteerde uitvoer. De snapshot behoudt herstelmogelijkheden, maar het gedrag van vrije ruimte en latentie verschilt van dat van een bestandssysteem zonder snapshot.
Compactie schrijft logische records naar nieuwe bestanden
Veel vectoropslagen gebruiken onveranderlijke segmenten of loggestructureerde componenten. Updates en verwijderingen voegen een nieuwe status toe, waarna achtergrondcompactie live records leest, geconsolideerde bestanden schrijft, manifests bijwerkt en vervangen segmenten na een veilige commit verwijdert. Dit effect moet meetbaar blijven onder de beoogde thuisserverbelasting.
De fundamentele LSM-compactie beschrijft loggestructureerde samenvoegbomen als een hiërarchie die schrijfbewerkingen bundelt en componenten in de loop der tijd samenvoegt. Dit herschrijfpatroon verklaart waarom compactie tijdelijk zowel invoer- als uitvoergegevens nodig heeft. Het onderscheid is belangrijk wanneer verschillende pipelinefasen dezelfde opslag- en geheugencapaciteit delen.
Vectorspecifieke structuren voegen grafiekverbindingen, postinglijsten, payloadindexen en kwantiseringsbestanden toe. Daardoor hoeven de gecompacteerde bytes niet gelijk te zijn aan de verwijderde bytes. Opschoning op databaseniveau en het vrijgeven van blokken op bestandssysteemniveau zijn afzonderlijke gebeurtenissen. Die grens moet worden getest met representatieve huishoudelijke gegevens en niet als vanzelfsprekend worden beschouwd.
Snapshots houden blokken van vóór de compactie bereikbaar
Een copy-on-write-snapshot legt een blokgrafiek op een bepaald moment vast. Wanneer compactie nieuwe bestanden schrijft, verwijst het actieve bestandssysteem naar nieuwe blokken, terwijl de snapshot naar de oude segmenten blijft verwijzen. Het verwijderen van bestandsnamen uit de liveweergave kan blokken die de snapshot nog nodig heeft daarom niet vrijgeven.
Het behouden van snapshotblokken in OpenZFS definieert snapshots als alleen-lezenversies van een bestandssysteem of volume op een bepaald moment. Hun ruimtegebruik groeit naarmate de livegegevens ervan afwijken, precies wat een grote, herschrijfintensieve compactie veroorzaakt.
Een snelle snapshotopdracht kan dus voorafgaan aan een aanzienlijke latere groei van het ruimtegebruik. De kosten ontstaan bij volgende schrijfbewerkingen, niet noodzakelijk bij het maken van de snapshot, en blijven bestaan totdat elke snapshot die ernaar verwijst is verwijderd. Dit effect moet meetbaar blijven onder de beoogde thuisserverbelasting.
Weinig vrije ruimte kan behoud in latentie omzetten
Compactie heeft tijdelijke ruimte nodig en copy-on-write-toewijzing heeft vrije blokken nodig. Wanneer snapshots oude segmenten behouden, kan de pool gefragmenteerd raken of bijna vol lopen. Hierdoor vertragen schrijfbewerkingen en duurt compactie langer; langere compactie laat op haar beurt meer segmenten en querywerk achter.
Vectordatabasecompactie in Milvus beschrijft compactie als het samenvoegen van kleine segmenten en het opschonen van verwijderde gegevens om opslag- en querygedrag te verbeteren. Dit mechanisme laat zien waarom vectordatabases aanzienlijke bestanden kunnen herschrijven, zelfs wanneer de logische wijziging uit een reeks verwijderingen bestaat.
De foutgrens is de aanname dat de snapshotgrootte die bij het maken wordt gerapporteerd, de uiteindelijke kosten voorspelt. Het compactievolume, de updatefrequentie, compressie, verwijderde vectoren, vrije ruimte in de pool en de levensduur van de snapshot bepalen de behouden bytes en de staartlatentie. Het onderscheid is belangrijk wanneer verschillende pipelinefasen dezelfde opslag- en geheugencapaciteit delen.
Veelgestelde vragen over snapshots en vectorcompactie
Moeten snapshots tijdens compactie worden uitgeschakeld?
Niet automatisch. Snapshots beschermen herstelpunten, maar het plannen van grote compacties buiten snapshotvensters kan de behouden afwijking beperken. Elke wijziging moet een geteste back-up- en databaseconsistentieplanning behouden. Die grens moet worden getest met representatieve huishoudelijke gegevens en niet als vanzelfsprekend worden beschouwd.
Waarom blijft de databasegrootte hoog nadat verwijderde vectoren zijn gecompacteerd?
Oude blokken kunnen nog steeds worden verwezen door snapshots, clones of back-ups, zelfs nadat de live database verouderde segmenten heeft verwijderd. Controleer de databasebestanden en de door het bestandssysteem verwezen ruimte afzonderlijk. Dit effect moet meetbaar blijven onder de beoogde thuisserverbelasting.
Kan een snapshot een inconsistente vectorindex vastleggen?
Ja, als databasebestanden, write-aheadlogs, manifests en gerelateerde metadata niet zijn stilgelegd of atomair zijn vastgelegd. Gebruik indien nodig het checkpoint- of flushmechanisme van de database voordat u de bestandssysteem-snapshot maakt. Het onderscheid is belangrijk wanneer verschillende pipelinefasen dezelfde opslag- en geheugencapaciteit delen.
Meet snapshotafwijking tijdens een gecontroleerde samenvoeging
Kloon een representatieve index, leg de logische en fysieke grootte vast, maak een snapshot en voer vervolgens een gemeten verwijderings- en compactiecyclus uit. Houd compactiebytes, tijdelijke piekruimte, door de snapshot verwezen bytes, vrije ruimte in de pool, schrijflatentie, staartlatentie van queries en de tijd tot vrijgave na het verwijderen van de snapshot bij.
Vergelijk het resultaat met het mechanisme voor snapshotblokkering in het mechanisme voor snapshotblokkering. Herhaal dit zonder snapshot en met verschillende bewaarduren, terwijl u de databaseversie, index, gegevens, compressie, poolinstellingen en achtergrondbelasting constant houdt. Die grens moet worden getest met representatieve huishoudelijke gegevens en niet als vanzelfsprekend worden beschouwd.
Plan snapshots en compactie op basis van gemeten ruimtebuffer in plaats van gemak. Behoud een databaseconsistent herstelpunt, reserveer ruimte voor oude plus nieuwe segmenten en laat snapshots alleen verlopen volgens het vastgestelde bewaarbeleid, in plaats van bescherming te verwijderen om fouten in de capaciteitsplanning te verbergen.
Tech & AI HUB
Meer om te lezen

Kan een lokale LLM de generatie hervatten nadat het proces opnieuw is gestart?
Een mechanismegerichte uitleg van het hervatten van LLM-generatie, de afwegingen rond gedeelde resources, drie veelgestelde vragen over query-fan-out en een praktisch verificatieprotocol.

Kan een homeserver embeddings genereren en video transcoderen op dezelfde geïntegreerde GPU?
Een uitleg waarin het mechanisme centraal staat van gedeelde iGPU-embeddings en transcodering, de afwegingen rond gedeelde resources, drie veelgestelde vragen over query-fan-out en een...

Welke invloed heeft de levensduur van toegangstokens op de beveiliging en het gedoe in het huishouden?
Een mechanismegerichte uitleg van de levensduur van toegangstokens, de afwegingen rond gedeelde resources, drie veelgestelde vragen over query-fan-out en een praktisch verificatieprotocol.

