Важным является понимание того , каким образом хранятся и организованы файлы с данными (таблицами) баз данных в СУБД.
Блочная структура хранения данных СУБД
Все таблицы СУБД разбиты на части, которые называются страницы (pages). При чтении данных (строки), страница целиком помещается в оперативную память, чтобы быть считанной.

Такое хранение данных позволяет снизить нагрузку на СУБД, потому что при работе с данными таблица считывается не вся, а блоками.
Каждый отдельный блок с данными (page) имеет свой уникальный номер в рамках всей базы данных. СУБД на уровне своих метаданных знает, где и какие данные хранятся и кому принадлежат, не смотря на то, что сами страницы могут идти в разной последовательности.
Т.е. соседние page могут не принадлежать одной таблице. Это связано с тем, что страницы выделяются по мере необходимости, а необходимость может возникнуть для разных таблиц в разное время.
Содержимое делится на заголовок (header), строки (rows) и подвал (offset).
Header
Заголовок хранит информацию о строках, а так же в случае с индексом, информацию о соседних страницах (предыдущая и следующая).
Rows
В строках хранятся сами данные, аналогично как и в строках файла excel.
Footer
В подвале хранится информация о смещении строк, относительно их реального положения (offset).
Offset
Offset помогает установить порядок без физического удаления/перемещения строк внутри страниц. Т.е. сами строки не перемещаются и не удаляются, но их нумерация корректируется количеством смещения относительно 0.

Операции над данными в СУБД
Удаление
При удалении конкретных данных из таблиц (БД), сами строки физически не удаляются из файла (блока файла), а помечаются как неактивные.
Таким образом, если была удалена строка №4, то следующая строка №5 будет иметь смещение (offset) на 1, в итоге 5-1=4, т.е. становится №4.
Добавление
При добавлении информации в БД, строка с данными добавляется в существующий блок (page) или новый, если все уже забиты.
Изменение
При изменении данных в строке (например, изменяем только одну колонку — Наименование), очищаются данные всех колонок. После чего выполняется попытка записать новые значения.
Но так как для конкретных полей уже выделен конкретный размер на диске (первоначальный), то могут возникнуть 2 ситуации:
- Новые данные занимают меньше места, чем старые — таким образом, создается пустое пространство (выделенное, но незанятое).
- Новые данные занимают больше места, чем старые — таким образом, они помещаются в другой блок, как новая. А в старом остается пустота и ссылка на новое место хранения.
Хранение больших данных
При хранении текста неограниченной величины или файлов, задействуются несколько страниц (информация разбивается).
Таким образом, повышается количество операций ввода/вывода, при чтении объекта.
Кучи и индексы
В куче данные между собой не связаны, т.е. отдельная страница не знает, где находится следующая и предыдущая. Но существует отдельная область (управляющая страница), которая содержит в себе всю информацию о страницах, связанных с таблицей.
В случае с индексом, над страницами данных есть управляющая надстройка, которая указывает, в каких страницах, какие данные хранятся, а точнее что содержит первая запись на конкретной странице.
Такая надстройка называется b-tree (balanced tree или сбалансированное дерево).

Дерево называется сбалансированным, потому что какие бы данные СУБД не искала, она проделает одинаковое количество операций ввода вывода (I/O).
Данная тема подробнее рассматривается в пакете видео-курса «Секреты 1С: Эксперта» Шаг 2. Занятие 04-02 Хранение данных в СУБД.