Всем привет! подскажите пожалуйста, есть вопрос по работе базы данных.

Как происходит запись и удаление данных в таблицу базы данных? Т.е. получается если создается новая таблица в БД, то при добавлении новых строк, они как в массиве добавляются в конец и у каждого свой уникальный идентификатор, как индекс, но если мы из середины таблицы удаляем строку, то строки, которые были ниже не сдвигаются на одну строку выше, а остаются на своих местах? И при добавлении новой строки сначала проверяется на пустые строки и если есть такие то туда и записывается новая строка, например в середину таблицы, откуда было удаление? я правильно понимаю или нет?Может статью подскажите где об этом почитать

25 ответов

26 просмотров

В Postgre скорее всего так же, как в MS SQL, данные хранятся в страницах. Соответственно при удалении ничего не сдвигается, иначе пришлось бы перезаписывать все страницы.

Послушайте второй сезон подкаста https://t.me/tfeat, про устройство БД. Не реклама :)

Pavel- Автор вопроса
Ara Slanov
В Postgre скорее всего так же, как в MS SQL, данны...

Спасибо, тогда в связи с этим вопрос, при считывании данных как система определяет какая строка на оси времени была записана раньше, а какая позже? Эта информация закладывается в идентификатор как хэш функция и при считывании расшифровываете ее и сортирует в нужном порядке, например по дате?

Pavel- Автор вопроса
Pavel- Автор вопроса
Леонид Волканин
ответ в выпуске 29 :)

Отлично, ещё раз спасибо!

Pavel
Спасибо, тогда в связи с этим вопрос, при считыван...

СУБД вообще без разницы хронологический порядок записей. Особенно если это кластеризованная таблица.

Ara Slanov
СУБД вообще без разницы хронологический порядок за...

Более того, по стандарту языка SQL, порядок вывода строк не определён без указания ORDER BY

Pavel- Автор вопроса
Ara Slanov
СУБД вообще без разницы хронологический порядок за...

а как происходит понимание какие данные были раньше записаны, какие позже?

Pavel- Автор вопроса
АВ
А зачем?

например данные для формирования отчета по заказам

А причём здесь порядок кортежей в СУБД?

Pavel
например данные для формирования отчета по заказам

Это уже, извините планирование за Вами, какие Вы данные хотите в таблице хранить

Pavel- Автор вопроса
АВ
А причём здесь порядок кортежей в СУБД?

Хочу понять как происходит вытаскивание данных из таблицы, если они записываются не в конец, а туда где есть свободное место и где заложены временные данные для сортировки и формирования списка данных по хронологии

Pavel
Хочу понять как происходит вытаскивание данных из ...

Блин, данные выбираются выборкой при помощи языка SQL. Почитайте книги - их море

Pavel- Автор вопроса
Pavel
Хочу понять как происходит вытаскивание данных из ...

Это зависит от конкретного SQL-сервера, его версии и т.п., и вам знать не нужно, от слова совсем.

Pavel
Хочу понять как происходит вытаскивание данных из ...

Если ВЫ добавите поле ДАННЫХ временное/порядковое и индекс к ним, то совершенно неважно, где физически кортежи находятся

Pavel- Автор вопроса
Pavel
а как происходит понимание какие данные были раньш...

в каждом кластере есть счётчик транзакций, который и является мерилом времени для вопросов "раньше-позже". у каждой строки есть xmin -номер транзакции которая строку создала, xmax - номер транзакции которая строку удалила. и есть ещё битовая маска со всякими флагами. вот сервер на это смотрит, сраванивает эти значения с номером текущей транзакции и делает выводы

Pavel
Хочу понять как происходит вытаскивание данных из ...

в загаловке каждой странице есть указатели на версии строк и указатели на свободное пространство, постгрес грубо говоря при обращени к табдице смотрит кка (то не важно как) читая эти страничные указатели и решает можно ли на эту страничку новую строку положить или нет

Pavel
Хочу понять как происходит вытаскивание данных из ...

как бы было именно так поставлен вопрос "данные для сортировки и формирования списка данных по хронологии"

Похожие вопросы

Обсуждают сегодня

у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
4
здравствуйте, братья, кто-нибудь знает, как работать с Swift.com или Swift.net?
Ozzy
6
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Всем привет! Есть камеры для наблюдения с встроенной видеоаналитикой (детектор лиц, например). Как я понял, все вычисления и анализ происходят на самом железе камеры, и пр...
Артур 🌞 Сапрыкин
1
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Приветствую всех, возникла проблема, до этого писал бота в простом формате где при выполнении условий приходило через send_message информация, сейчас решил добавить хендлер на...
Andrew
4
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Объединять ячейки и графики строить обе умеют?
■_|ilya|_■
4
Ребят, привет. У кого-то есть опыт заказа мерча в сторе? Есть успешные кейсы? Чёт у меня турецкую карту не принимает
Vladimir F.
7
Карта сайта