Introduction to PostgreSQL physical storage
http://rachbelaid.com/introduction-to-postgres-physical-storage/
- определение OID (object ID) вашей таблицы (
select * from pg_database
)
- сама база хранится в 1ГБ файлах,
filenode
- system table pg_catalog для каждой таблицы
- таблица сохраняется как массив страниц фиксированного размера (8кб)
- страницы перемешаны, никакого порядка
- записи лежат очень долго, почти вечно, поэтому индекс тоже не меняется
- указатель на запись = номер страницы + индекс
select cid, * from bar
;
- кол-во столбцов ограничено, т.к. строки нельзя переносить между страницами
- TOAST = The Oversized-Attribute Storage Technique. Отдельная таблица с данными + указатель.
- Free Space map - очень приблизительно показывает свободное место, с точностью до 1/256 страницы (32 байта).
- Vacuum удаляет dead row и помечает записи для дальнейшего использования.
- Vacuum Full - компактизирует таблицы, перезаписывая файлы, поэтому освобождает место. Занимает много места.