Мы собираемся перенести наш сайт на windows azure и столкнулись с проблемой sql-azure. Они не поддерживают свойство прироста идентификатора из-за оптимизации производительности. Следовательно, мы должны разработать свою собственную логику для поддержки существующей функции в создании последовательной идентификации.SQL-симуляция Auto increment field
Таким образом, чтобы генерировать уникальное последовательное значение, мы получаем max (значение) из поля идентификатора таблицы и увеличиваем его на 1, чтобы вставить новую запись.
Теперь мы должны управлять параллельными транзакциями, поэтому проверяем уровни изоляции. Однако ни один из уровней изоляции не блокирует таблицу, чтобы избежать считывания максимального значения при параллелизме.
Любая помощь по блокировке таблицы или комментариям об этом методе была бы очень полезной. Если некоторые из вас уже успешно справились с этой проблемой, то можете ли вы поделиться ею. Спасибо за вашу помощь.
Вы знаете, что это будет очень плохо масштабироваться. Существует причина, которая обычно применяется в rdbms. Лучшим подходом может быть использование чего-то типа guid. – steve
@steve Спасибо за предложение –
GUID, особенно сгенерированный случайным образом, очень плохо для первичного ключа, так как он приводит к тому, что таблица сильно фрагментирована. GUID также намного шире, чем необходимо для 99,9% случаев использования. –