Здравствуйте, Nikolay Ponomarenko

 > IK> Как повлияет на производительность замена первичного ключа типа 
BIGINT
 > IK> на GUID? Стоит ли вообще это делать?
 >
 > Станет немного медленнее - распухнет бд, индексы, больше чтений, больше
 > памяти.

 > Нельзя будет использовать такое свойство автоинкрементируемого ПК как
 > монотонное возрастание, что в общем неправильно, но иногда удобно :)
 >

Вот пребываю в муках как раз по такому же поводу... Только не с GUID, а,
все-таки с bigint. Ход мысли по простейшей ветке:

Каждой базе-точке выделяем PID. Баз-точек заведомо не больше, скажем,
чем 1000, значит значения  0<PID<1000. Тогда ID можно генерить как
"ГенераторТаблицы *1000 + PID". Тогда получаем общий непересекающийся ID
через все точки для одной таблицы.

Кстати, сделаем СуперБуперГенератор один на все таблицы, и чем тогда это
отличается от GUID, кроме как компактностью? хотя зачем оно надо...

Альтернативный вариант: на каждой записи свой собственный человеческий
ID, плюс поле ID_EXTERN ( если запись создана в этой базе-точке, то =
ID, если принята из другой базы-точки, то =ID той базы, откуда принято).
Ну, опять же, третье поле PID надо,  которое идентификатор базы-точки.
Итого три поля: одно - нормальный автоинкрементный ключ, вторые два в
паре являют собой то же самое, что в варианте 1 - уникальный ключ по
всем базам-точкам.

Кажется, что вариант 2 слегка сложнее в реализации и слегка путаннее в
логике, хотя, как преподнесешь это юзерам -  зависит от клиентского
приложения уже. Вариант 1 в этом смысле куда проще: есть число 123001 -
сразу ясно, что эта запись создана в пункте 1 с помощью значения
генератора 123. И заведомо известно, что нигде эта запись не повторится,
можно вливать в любую из точек безбоязненно.

Выглядит, вроде, приятнее вариант 1 (полей меньше, а с ними и индексов,
до юзеров доводить логику проще). Одно мучает: в варианте 1 новые записи
создаются как-бы "вперемежку", не последовательно, а втыкаются друг
между другом. Не создаст это проблем в скорости поиска записей по
первичным ключам? Типа дефрагментации первичного ключа, что ли? Или это
у меня гонки все из класса десктопных таблиц?

Короче: есть подозрение, что абсолютно незнакомый мне термин "свойство
монотонного возрастания" как раз про эти проблемы с вариантом 1 :)

Не одарит кто-нибудь советом (ну про "убей себя" я знаю)?

В уважением
Владимир

Ответить