Переключение на последовательный (расческа) гуиды - что относительно существующих данных?

У нас есть база данных с 500 + таблицы, в которых почти все таблицы имеют кластеризованный PK, который имеет гуид типа данных (uniqueidentifier).

Мы находимся в процессе тестирования переключателя от "нормальных" "случайных" гуидов, сгенерированных через.NETs Гуид. NewGuid () метод к последовательным гуидам, сгенерированным через NHibernate guid.comb алгоритм. Это, кажется, работает хорошо, но что относительно клиентов, которые уже имеют миллионы строк со "случайными" значениями первичного ключа?

  • Они извлекут выгоду из того, что новые идентификаторы, сгенерированные с этого времени, будут последовательны?
  • Что-нибудь могло быть сделано к их существующим данным?

Заранее спасибо за любые указатели на этом.

6
задан Community 23 May 2017 в 12:26
поделиться

2 ответа

Это зависит от того, сгруппированы ли таблицы по первичному индексу или по другому индексу. Например, если вы создаете большое количество новых записей в таблице с идентификатором GUID PK и датой создания, обычно имеет смысл выполнить кластеризацию по дате создания, чтобы оптимизировать операцию вставки.

С другой стороны, в зависимости от выполняемых запросов, кластер по GUID может быть лучше, и в этом случае использование последовательных GUID может помочь с производительностью вставки. Я бы сказал, что невозможно дать окончательный ответ на ваш вопрос без глубоких знаний об использовании.

0
ответ дан 18 December 2019 в 04:49
поделиться

Вы могли бы это сделать, но я не уверен, что вам захочется. Я не вижу каких-либо преимуществ в использовании последовательных руководств, на самом деле использование руководств не рекомендуется в качестве первичного ключа, если нет причин, связанных с распределением / репликацией. Вы используете кластерный индекс?

Однако, если вы продолжите, я рекомендую сначала загрузить таблицу со значениями из вашего алгоритма.

У вас будут проблемы с внешними ключами. Вам нужно будет связать старый и новый направляющие в упомянутой таблице, отбросить внешние ключи, выполнить транзакционное обновление, а затем повторно применить внешние ключи.

Я не думаю, что это того стоит, если только вы не отказались от руководств в целом, чтобы сказать систему, основанную на целых числах.

0
ответ дан 18 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: