Skip to content

ptflp/go-postgres-internals

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

type PageHeader struct {
	XLogID            uint32
	XRecOff           uint32
	PdChecksum        uint16
	PdFlags           uint16
	PdLower           uint16
	PdUpper           uint16
	PdSpecial         uint16
	PdPagesizeVersion uint16
	PdPruneXID        uint32
}

Структура PageHeader, которую вы описали, представляет собой заголовок страницы в PostgreSQL. PostgreSQL хранит данные в блоках фиксированного размера, называемых "страницами". Каждая страница имеет заголовок, который содержит метаданные, необходимые для управления этими страницами. Вот краткое описание каждого поля в структуре PageHeader:

  1. XLogID (Transaction Log ID): Это 32-битное поле содержит идентификатор журнала транзакций (XLog), который указывает на местоположение в журнале транзакций, где были записаны последние изменения этой страницы. Это важно для восстановления и механизмов обеспечения целостности данных.

  2. XRecOff (Transaction Record Offset): Это также 32-битное поле, указывающее смещение в журнале транзакций, где начинается запись, связанная с последним изменением этой страницы.

  3. PdChecksum: 16-битное поле, содержащее контрольную сумму страницы. Это используется для проверки целостности данных на странице. Контрольные суммы помогают обнаружить повреждение данных из-за аппаратных сбоев или других проблем.

  4. PdFlags: 16-битное поле флагов, которое используется для хранения различных маркеров состояния страницы, например, информации о том, была ли страница сжата или зашифрована.

  5. PdLower: 16-битное поле, указывающее на нижнюю границу свободного пространства на странице. Это смещение, где начинается свободное пространство для новых записей.

  6. PdUpper: 16-битное поле, указывающее на верхнюю границу свободного пространства на странице. Это смещение, где заканчивается свободное пространство, и начинаются данные.

  7. PdSpecial: 16-битное поле, указывающее на начало специальной области страницы. В PostgreSQL специальная область может использоваться для хранения структур данных, специфичных для индексов, таких как B-tree, GiST, GIN и т.д.

  8. PdPagesizeVersion: 16-битное поле, содержащее информацию о размере страницы и версии. Это поле используется для поддержки различных размеров страниц и версий формата страницы.

  9. PdPruneXID: 32-битное поле, содержащее идентификатор транзакции, до которой страница может быть обрезана (pruned). Обрезка страницы удаляет устаревшие кортежи (записи) для освобождения места на странице.

Эти поля вместе обеспечивают управление низкоуровневыми деталями хранения данных в PostgreSQL, включая отслеживание изменений, обеспечение целостности данных и оптимизацию доступа к данным.

About

postgres internals with go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages