THPDFCompressedSpillStream
Предоставляет временный stream с поддержкой seek для данных, которые не должны целиком находиться в памяти
Объявление
constructor Create(
BlockBytes: Integer = 262144;
BatchBytes: Integer = 1048576;
MaxQueuedBytes: Integer = 4194304);
Модель хранения
- Каждый логический блок сжимается независимо с быстрой стратегией Flate
- Блок остаётся несжатым, если сжатие добавило бы минимум 32 байта накладных расходов
- Последовательные записи ставят целые блоки в очередь, а worker разбирает несколько блоков за батч
- Производитель ждёт, только когда объём ожидающих обработки несжатых блоков достигает
MaxQueuedBytes - Чтения, flush, случайные перезаписи и изменение размера синхронизируются, только когда им нужен стабильный индекс блоков
- При случайной перезаписи текущий физический слот переиспользуется, если замещающие данные влезают, иначе добавляется новая версия блока
- Собственный временный файл удаляется деструктором
Статистика
GetStatistics заполняет THPDFSpillStatistics логическими и физическими байтами, текущим количеством сжатых и несжатых блоков, количествами асинхронных батчей и блоков, ожиданиями производителя и пиковым объёмом очереди в байтах
См. также: THPDFLazyFileStream, LoadedStreamMemoryThreshold, GetLoadedStreamCacheInfo