Какова цель последовательного уникального идентификатора в PK MS SQL? - PullRequest
2 голосов
/ 08 октября 2008

Я знаю, что первичные ключи, основанные на Guids, не имеют наилучшей производительности (из-за фрагментации), но они глобально уникальны и допускают сценарии репликации.

С другой стороны, интегральные идентификаторы имеют более высокую производительность за счет масштабируемости.

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

Что мне здесь не хватает?

Ответы [ 2 ]

6 голосов
/ 08 октября 2008

То, что обычно называют последовательными направляющими в SQL Server 2005 (генерируется NEWSEQUENTIALID ()), является попыткой преодолеть проблемы с обычными направляющими.

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

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

http://msdn.microsoft.com/en-us/library/ms189786.aspx

1 голос
/ 06 января 2009

Использование последовательных направляющих гарантирует, что вы всегда используете значение, превышающее последнее значение. Для индексированного поля это важно. Вместо случайной вставки по всему спектру, вы всегда вставляете в конце последней «страницы» данных, что приводит к резкому сокращению разбиений страницы, особенно в случае, когда ваш столбец uniqueidentifier также является вашим кластеризованным индексом.

...