powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / GUID в качестве primary key
12 сообщений из 37, страница 2 из 2
GUID в качестве primary key
    #37518698
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем больше записей, тем лучше будут сжиматься GUID ключи
Разницы в 14 раз конечно нет - сравни кол-во страниц идексов.
Правда, индекс по int оказался слабее заполнен - это от того, что ты задом наперёд INT ключи вставлял.
Если бы вставлял последовательно, то заполнение было бы гораздо выше.
Но для честного сравнения с GUID нужно генерить случайные значения.
Ну а для эмуляции ПК - каверное всё же последовательно возрастающие.

На кол-во расщеплений страниц индекса влияет как распределение значений ключей (случайное для GUID против последовательного для INT), так и заполненность страниц.
Так что я бы сказал, что для ПК-GUID конкуренция за вставку в индекс должна быть гораздо ниже, чем для последовательных INT значений.
...
Рейтинг: 0 / 0
GUID в качестве primary key
    #37518744
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladя бы сказал, что для ПК-GUID конкуренция за вставку в индекс должна быть гораздо ниже, чем для последовательных INT значений.А как можно понять, что при работе 100500 коннектов на вставку некоторые из них будут томиться в ожидании именно индекса (а не генератора, скажем; при условии, что я дёргаю gen_id с шагом 1, а не "пачками") ?
В логе сервера всё равно ничего не увидишь :(

ЗЫ. Кстати, в "одной другой субд" уже давно есть (числовые) индексы реверсивного ключа - как раз для предотвращения конфликтов крайнюю индексную страницу дерева при многочисленных вставках.
...
Рейтинг: 0 / 0
GUID в качестве primary key
    #37518775
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидА как можно понять, что при работе 100500 коннектов на вставку некоторые из них будут томиться в ожидании именно индекса (а не генератора, скажем; при условии, что я дёргаю gen_id с шагом 1, а не "пачками") ? Ни как. Разве что смотреть вывод lock print для классика.

ТаблоидВ логе сервера всё равно ничего не увидишь :(А при чём тут лог сервера ?
Напомню - он существует исключительно для информации о ошибках, в основном о фатальных (и для твоих любимых сетевых )

ТаблоидЗЫ. Кстати, в "одной другой субд" уже давно есть (числовые) индексы реверсивного ключа - как раз для предотвращения конфликтов крайнюю индексную страницу дерева при многочисленных вставках. Пиши udf, если это для тебя настолько важно.

Только я тебе сразу скажу - при твоих десятках индексов на таблицу это не поможет :)
...
Рейтинг: 0 / 0
GUID в качестве primary key
    #37518847
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad(и для твоих любимых сетевых )я думаю, они тут многими горячо "любимы". Разговор про них начался больше года назад...
"Но это уже совсем другая история" (С)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
GUID в качестве primary key
    #39078357
eXandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, вопрос а тройке-четверке FB не планируется добавить GUID тип? ну чтобы он хранился как бинари (16 байт) и кастился в строку?
...
Рейтинг: 0 / 0
GUID в качестве primary key
    #39078376
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eXandr,

в тройке точно нет. Да и в четвёрке вряд ли. А нафига?
...
Рейтинг: 0 / 0
GUID в качестве primary key
    #39078472
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eXandr,

в 2.5 добавлены функции char_to_uuid, uuid_to_char, gen_uuid.
все работает с
CHAR(16) CHARACTER SET OCTETS.

см. документацию, стр 350.
http://www.ibase.ru/firebird/Firebird_2_5_Language_Reference_RUS.pdf
...
Рейтинг: 0 / 0
GUID в качестве primary key
    #39078504
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправка - gen_uuid еще в 2.1 появился.

однако, вопрос с "непоследовательностью" gen_uuid все равно остается. В MS SQL есть newsequentialid
" Можно воспользоваться для формирования идентификаторов GUID функцией NEWSEQUENTIALID, что позволяет уменьшить конфликты страниц на конечном уровне индексов. "

Иначе вставка в такой ПК раза в три медленнее (в ФБ, тест Таблоида и Ковязина).

писать feature request в трекер?
...
Рейтинг: 0 / 0
GUID в качестве primary key
    #39078524
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvоднако, вопрос с "непоследовательностью" gen_uuid все равно остается.

Лично я бы uuid-ключи генерил на клиенте, а там этот вопрос решается легко.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GUID в качестве primary key
    #39078526
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvвставка в такой ПК раза в три медленнее (в ФБ, тест Таблоида и Ковязина).

Именно сама вставка или генерация uuid по сравнению с последовательностью?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GUID в качестве primary key
    #39078551
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

вставка в таблицу с ПК bigint/uuid. Проблема известная, и есть во всех СУБД с b-tree индексами. Кроме того, ключ обычного guid-uuid плохо упаковывается, и индекс сам по себе получается еще и в 4 раза больше, чем в случае последовательных (упакованных) значений.
...
Рейтинг: 0 / 0
GUID в качестве primary key
    #39078762
fb_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvпоправка - gen_uuid еще в 2.1 появился.

однако, вопрос с "непоследовательностью" gen_uuid все равно остается. В MS SQL есть newsequentialid
" Можно воспользоваться для формирования идентификаторов GUID функцией NEWSEQUENTIALID, что позволяет уменьшить конфликты страниц на конечном уровне индексов. "

Иначе вставка в такой ПК раза в три медленнее (в ФБ, тест Таблоида и Ковязина).

писать feature request в трекер?
Однозначно писать
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / GUID в качестве primary key
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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