Здравствуйте, 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 :) Не одарит кто-нибудь советом (ну про "убей себя" я знаю)? В уважением Владимир

