Использование GUID в Первичных ключах / Индексы Clusted

если вы хотите сделать отступ из командной строки, используйте:

emacs --batch  <filenames.v>  -f verilog-batch-indent
8
задан NTDLS 16 February 2010 в 19:55
поделиться

4 ответа

Если вы делаете какой-либо том, GUID очень плохи как PK, если вы не используете последовательные GUID ] по точно указанным вами причинам. Фрагментация страницы серьезная :

                 Average                    Average
                 Fragmentation  Fragment    Fragment   Page     Average 
Type             in Percent     Count       Size       Count    Space Used

id               4.35           7           16.43      115      99.89
newidguid        98.77          162         1          162      70.90 
newsequentualid  4.35           7           16.43      115      99.89

И, как это сравнение между GUID и целыми числами показывает:

Test1 вызвал огромное количество разделений страниц и имел плотность сканирования около ] 12% , когда я запустил DBCC SHOWCONTIG после завершения вставки.

8
ответ дан 5 December 2019 в 15:25
поделиться

Недостатки использования GUID в качестве первичного ключа:

  • Отсутствие значимого упорядочивания, означает, что индексирование не дает повышения производительности, как это происходит с целым числом.
  • Размер GUID 16 байт, по сравнению с 2, 4 или 8 байтами для целого числа.
  • Очень трудно запомнить людям, поэтому не годится в качестве идентификатора ссылки.

Преимущества:

  • Разрешить неразгаданные первичные ключи, которые, следовательно, могут быть менее опасными, когда отображается в строке запроса веб-страницы или в приложении.
  • Полезно в базах данных, которые не обеспечивают автоматическое приращение или тип данных идентификации.
  • Полезно, когда вам нужно объединить данные между двумя разными источниками данных на разных платформах или средах .

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

2
ответ дан 5 December 2019 в 15:25
поделиться

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

При этом я лично не большой поклонник GUID. . Я понимаю, что они могут хорошо служить в некоторых контекстах, но во многих случаях они просто «мешают» [эффективности, простоте использования, ...]

Я считаю, что следующие вопросы полезны, чтобы сузить круг вопросов при принятии решения следует ли использовать GUID или нет.

  • Будет ли PK совместно использоваться / опубликован? (т.е. будет ли он использоваться за пределами внутреннего использования в SQL, будут ли приложениям нужны эти ключи постоянно? Будет пользователи как-то видят эти ключи?
  • Можно ли использовать PK для объединения разрозненных источников данных?
  • Имеется ли в таблице первичный - возможно составной - из столбцов данных? Каков размер этого возможного этого ключа
  • Как сортируются первичные ключи? Если составной, являются ли первые несколько столбцов выборочными?
1
ответ дан 5 December 2019 в 15:25
поделиться

Использование guid (если это не последовательный GUID) в качестве кластеризованного индекса снижает производительность вставки. Поскольку физический макет таблицы выровнен в соответствии с кластеризованным индексом, использование guid, который имеет случайный порядок упорядочения, вызовет серьезную фрагментацию таблицы. Если вы хотите использовать guid в качестве индекса PK / Clustered, это должен быть последовательный guid с использованием функции newsequentialid () на сервере sql. Это гарантирует, что сгенерированные направляющие будут упорядочены последовательно, и предотвратит фрагментацию.

0
ответ дан 5 December 2019 в 15:25
поделиться
Другие вопросы по тегам:

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