Я работаю в компании по обработке налогов, используя SQL Server 2016. Мы обрабатываем миллионы налоговых деклараций и настраиваем параллельную, многопоточную, параллельную систему обработки.
Для хранилища событий записи с параллельной обработкой, какой должен быть кластеризованный индекс? на UniqueIdentifier Guid или (кластеризованный индекс на Identity (1,1) с Ncx на guid Uniqueidentifier)? Или без кластеризованного индекса (используйте кучу)?
Вы обычно рекомендуете секционировать таблицу хранилища событий записи?
Когда мы обновляем нашу модель чтения для запросов, должны ли мы по-прежнему использовать параллельную обработку для обновления модели чтения? Или надо проводить однопотоковое обновление?
Кроме того, опять же, каким должен быть кластерный индекс в модели чтения-события, UniqueIdentifierGuid или (кластеризованный индекс в Identity (1,1) с Ncx в guid Uniqueidentifier)?
должны ли мы разбивать таблицу модели чтения или любые другие методы?
Существует общее правило, согласно которому индексы по uniqueidentifierguid являются плохим кластеризованным индексом, вызывают массивную фрагментацию страниц, медленную запись ввода-вывода и большой объем дискового пространства. https://blogs.msdn.microsoft.com/sqlserverfaq/2010/05/27/guid-vs-int-debate/
Однако индексы по целочисленным столбцам identity(1,1) вызывают конфликт защелки, последняя страница вставляет «горячие точки» при параллельной обработке. http://www.sqlpassion.at/archive/2014/04/15/an-ever-increasing-clustered-key-value-doesnt-scale/