Двусторонняя репликация SQL-сервера и первичный ключ с автоинкрементом - PullRequest
1 голос
/ 11 декабря 2011

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

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

Это правильно?Как я могу предотвратить чрезмерную фрагментацию таблицы, если сервер A всегда используется гораздо чаще, чем сервер B?

Могу ли я использовать заполнение индекса для дополнения моего индекса PK, чтобы убедиться, что таблица не фрагментируется, нопросто занимает больше места на диске?Какой процент я должен использовать?50%

Ответы [ 2 ]

4 голосов
/ 12 декабря 2011

Это можно сделать в SQL Server, используя автоматическое управление диапазонами идентификаторов, в котором вы указываете размеры диапазонов для издателя и подписчиков, а репликация автоматически управляет назначением новых диапазонов, когда они исчерпаны.

Посмотрите на Репликация столбцов идентификации .

1 голос
/ 11 декабря 2011

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

В этом случае это не самый лучший способ сделать это, потому что это требует ручного вмешательства.Вы, вероятно, не знаете, что в SQL Server есть автоматическое управление диапазоном идентификаторов для публикации транзакций (все это действительно можно сделать автоматически).

Вот несколько хороших статей для начала:

Удивительно, но документация по этой теме на самом деле очень полезна и полна - вот почему об этом не так уж много других источников.

...