одной стороны все логично. считали блок. положили его в памяти в другую структуру. и когда надо переписали старое место в файле полностью. альтернатива тут какая? не создавать дополнительных структур и работать напрямую с куском файла. например у меня есть индекс из 16 блоков. вот я прочел корень с диска. у меня же все равно там в двоичном формате все лежит. мне нужно десерелиазовать.
shared_buffers вроде хранит данные в том же виде, что и на диске
Плюс ко всему прочему читать все время с диска, при конкурентном доступе плохая идея. Система то не под монопольную работу рассчитана. Кроме того, что несколько клиентов спрашивает, так еще и сам постгрес подходящие вещи расспаралеливает
но на диске ведь они в последовательности байт. тогда это должен быть массив байт?
Да. Щас сразу найти не могу. Где то тема была про параллельное сканирование индекса, когда он сканируется в многопоток и у нескольких потоков результат ссылается на одни и те же блоки данных и оптимизируется соответственно путем помещения в shared_buffers в первозданном виде
спасибо. если там массив байт, то значит я не правильно понял. значит он не десериализует.
Хотя может еще какие вспомогательные структуры используются конкретно к индексам, хотя с точки зрения постгреса в целом это такая же таблица, только с оптимизацией хранения под графовую структуру - дерево, чтоб не считывать лишние блоки данных.
Обсуждают сегодня