powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / сортировка
8 сообщений из 8, страница 1 из 1
сортировка
    #35718437
LexaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребят, почему при изменении строки (UPDATE ...) в таблице, эта строка меняет свое местоположение? мож я че в настройках не сделал?

заранее спасибо.не судите за глупый вопрос
...
Рейтинг: 0 / 0
сортировка
    #35718529
ivanmara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это так называемая "мультиверсионность" (MVCC (multi-version concurency control)) когда в рамках начатой транзакции по UPDATE физически создаться новая строка в таблице, в которой производятся изменения и, которая видна только в рамках этой тразакции. Старый же вариант доступен другим транзакциям пока работает ваша по UPDATE. Как только ваша транзакция успешно завершаться старая запись помечается "на удаление". новым транзакциям становиться видна новая запись которая физически расположена в конце таблицы (обычно). поэтому когда вы делаете select * from table без прямого указания порядка сортировки запрос вернёт вам строки в том порядке в котором они расположены на диске.
Что бы строки не "убегали в конец и находились на нужных местах" нужно:
1. создать serial поле по таблице (скажем "id") и назначить его как primary key индекс
2. использовать order by id в селектах.
3. использовать order by [название нужного поля] если сортировка нужна определенная
4. использовать возможности VACUUM для удаления ненужных записей
5. читать теоретический материал на предмет организации версонности sql баз данных:
http://www.citforum.ru/database/articles/multiversion/
http://oraclemind.blogspot.com/2007/08/blog-post.html
http://www.ibase.ru/devinfo/mga.htm (только для ознакомления на примере firebird, не брать за основную концепцию postgresql)

Успехов в начинании.
...
Рейтинг: 0 / 0
сортировка
    #35718597
LexaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanmara
3. использовать order by [название нужного поля] если сортировка нужна определенная
...я так и делал (сортировал по id). Просто думал может че настроить надо при администрировании базы , чтоб не сортировать каждый раз (как то мне это неграмотным показалось).

СПАСИБО за исчерпывающий ответ!
...
Рейтинг: 0 / 0
сортировка
    #35718598
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanmara,

вы куда-то не туда углубились :)

в sql порядок выдачи строк в результате не определён (если он не задан явно при помощи order by).
...
Рейтинг: 0 / 0
сортировка
    #35718607
LexaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanmara
1. создать serial поле по таблице (скажем "id") и назначить его как primary key индекс
3. использовать order by [название нужного поля] если сортировка нужна определенная
и посоветуйте пожалуйста какой из этих вариантов более предпочтительней для моего случая:мне нужно просто чтоб всегда был правильный порядок по id и все, строк в таблице > 1 млн.(если это важно)
...
Рейтинг: 0 / 0
сортировка
    #35718608
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexaF пишет:
> ребят, почему при изменении строки (UPDATE ...) в таблице, эта строка
> меняет свое местоположение? мож я че в настройках не сделал?

в таблице нет местоположения строк. Поэтому и меняться нечему.
Ты просто один раз выводишь данные, строка появляется в одном
месте, другой - в другом. Это - можно сказать случайный процесс.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сортировка
    #35718613
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanmara пишет:
> Это так называемая "мультиверсионность" (MVCC (multi-version concurency
> control))

MVCC тут абсолютно ни при чём. В таблице порядок запирей не определяется.

> 2. использовать order by

Вот этого достаточно. Необходимое и достаточное условие отсортированности
записей - наличие order by
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
сортировка
    #35718623
LexaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем спасибо!.. не ожидал таких дискуссий по этому поводу =)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / сортировка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]