Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Можно ли генерировать последовательные UUID?
|
|||
|---|---|---|---|
|
#18+
В таблице поле UUID - первичный ключ. Можно ли генерировать последовательные значения UUID? Есть ли в этом смысл с точки зрения производительности при INSERT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 12:00 |
|
||
|
Можно ли генерировать последовательные UUID?
|
|||
|---|---|---|---|
|
#18+
Во всяком случае очевидной возможности генерировать uuid последовательно нет. Производительность insert - в postgresql данные не кластеризованы. Поэтому монотонная или случайная последовательность записываемых значений - значения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 13:37 |
|
||
|
Можно ли генерировать последовательные UUID?
|
|||
|---|---|---|---|
|
#18+
MelkijВо всяком случае очевидной возможности генерировать uuid последовательно нет. Производительность insert - в postgresql данные не кластеризованы. Поэтому монотонная или случайная последовательность записываемых значений - значения не имеет. ясно, а на перестройку индекса первичного ключа не влияет упорядочена последовательность значений ключей или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 13:41 |
|
||
|
Можно ли генерировать последовательные UUID?
|
|||
|---|---|---|---|
|
#18+
Ролг Хупин, по индексам я немного задумался ещё когда предыдущее сообщение писал. К сожалению, не могу точно ответить, что именно представлено в postgresql под названием B-tree. Классическая структура b-tree, если правильно помню, оптимально работает только со случайным заполнением данными. Возрастающая последовательность превращает дерево в простой неэффективный список. Производные от b-tree структуры (вроде красно-чёрных деревьев) с этим борются. Но что используется в реальном нынешнем мире и какие дополнительные внесены оптимизации в узкие места - я не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 14:32 |
|
||
|
Можно ли генерировать последовательные UUID?
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинМожно ли генерировать последовательные значения UUID?Можно: lpad(to_hex(123), 32, '0')::uuid Но это уже будет NU-uid ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 14:45 |
|
||
|
Можно ли генерировать последовательные UUID?
|
|||
|---|---|---|---|
|
#18+
Вставка строк в таблицу с индексами может серьезно замедлиться на больших объемах, когда данные не влезают в память. Например, массированная вставка 1000 строк с использованием copy в большую таблицу без индексов запишет несколько дисковых страниц в табличный файл. При наличии индекса важно, чтобы 1000 ссылок были записаны рядом в несколько дисковых страниц индексного файла. Например, первое поле в индексе event_time, и мы вставляем 1000 строк, относящихся к одному моменту времени. Иначе придется записать более 1000 дисковых страниц индексного файла. Это работает на порядок медленнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 10:06 |
|
||
|
Можно ли генерировать последовательные UUID?
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatПри наличии индекса важно, чтобы 1000 ссылок были записаны рядом в несколько дисковых страниц индексного файла. Например, первое поле в индексе event_time, и мы вставляем 1000 строк, относящихся к одному моменту времени. Иначе придется записать более 1000 дисковых страниц индексного файла. Это работает на порядок медленнее. А можно спросить — почему при разном времени будет записано “более 1000 индексных страниц”? Разве страницы-листья не будут заполняться в порядке следования значений event_time, которое имеет тенденцию коррелировать с порядком добавления записей? И учитывая, что timestamptz == 8байт, а ctid==6 байт, то все 1000 значений должны были бы влезть в пару страниц, нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 10:27 |
|
||
|
Можно ли генерировать последовательные UUID?
|
|||
|---|---|---|---|
|
#18+
vyegorovА можно спросить — почему при разном времени будет записано “более 1000 индексных страниц”? Разве страницы-листья не будут заполняться в порядке следования значений event_time, которое имеет тенденцию коррелировать с порядком добавления записей? И учитывая, что timestamptz == 8байт, а ctid==6 байт, то все 1000 значений должны были бы влезть в пару страниц, нет?Мое последнее предложение "иначе придется записать более 1000 дисковых страниц индексного файла" относится к иному случаю. Например, когда новые 1000 строк имеют одно значение event_time и разные значения user_id, а по таблице построен индекс (user_id, event_time). В этом случае 1000 ссылок будут записаны на разные дисковые страницы индексного файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 10:42 |
|
||
|
Можно ли генерировать последовательные UUID?
|
|||
|---|---|---|---|
|
#18+
MelkijКлассическая структура b-tree, если правильно помню, оптимально работает только со случайным заполнением данными. Возрастающая последовательность превращает дерево в простой неэффективный список. Зачем писать, если не знаешь? Первая ссылка в google про b-tree. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 10:58 |
|
||
|
Можно ли генерировать последовательные UUID?
|
|||
|---|---|---|---|
|
#18+
Локшин Марк, мне гугл выдал первой статью, на одну из которых ваша ссылка на вики и ссылается: http://algolist.manual.ru/ds/ авторМожно доказать, что при последовательном включении в дерево случайных данных получается именно среднее время выполнения операций. Однако, если входные данные, например, образуют возрастающую последовательность, то получается список и все преимущество дерева потеряно. Да, память и внимательность таки подвели, только не с той стороны, откуда ждал. Это сказано про binary tree, а b-tree - именно уже сбалансированное дерево. Надо будет перечитать алгоритмы и структуры. LeXa NalBat, то есть в менее экстремальной варианте, когда индексы и новые данные помещаются в shared buffers, стоимость вставки одной записи будет одинаковая и для случайного и для нового последовательного значения, правильно? Стоимость вставки группы записей (но ещё влезаем в память) - случайное распределение создаст больше грязных страничек и больше работы чекпойнту. Что-нибудь критичное изменится, если говорить не про два copy (один со случайными, второй с последовательными ключами), а про конкурентные транзакции? Для простоты, транзакции делают только один insert в табличку, где есть только primary key, других индексов и FK нет. На сколько понимаю, последовательные ключи будут сильнее драться за блокировки на странички индекса, но это short-term локи и заметным образом влиять не будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2016, 12:41 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39295516&tid=1997045]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 271ms |
| total: | 552ms |

| 0 / 0 |
