СОЮЗ ВЫБОР, распараллеливание и ИДЕНТИЧНОСТЬ - PullRequest
0 голосов
/ 16 января 2019

Существует четыре идентичных промежуточных стола:

CREATE TABLE s_table_1
(
      id INT IDENTITY(1, 4) NOT NULL PRIMARY KEY CLUSTERED
    , some_data NVARCHAR(100)
);

CREATE TABLE s_table_2
(
      id INT IDENTITY(2, 4) NOT NULL PRIMARY KEY CLUSTERED
    , some_data NVARCHAR(100)
);

CREATE TABLE s_table_3
(
      id INT IDENTITY(3, 4) NOT NULL PRIMARY KEY CLUSTERED
    , some_data NVARCHAR(100)
);

CREATE TABLE s_table_4
(
      id INT IDENTITY(4, 4) NOT NULL PRIMARY KEY CLUSTERED
    , some_data NVARCHAR(100)
);

Впоследствии они используются в представлении:

CREATE VIEW s_table AS
              SELECT * FROM dbo.s_table_1
    UNION ALL SELECT * FROM dbo.s_table_2
    UNION ALL SELECT * FROM dbo.s_table_3
    UNION ALL SELECT * FROM dbo.s_table_4;

Обоснование этой структуры заключается в том, чтобы иметь возможность распределять данные в четырех параллельных потоках, чтобы использовать многоядерный процессор на сервере (данные поступают из большого плоского текстового файла с локального диска; чтение этого файла значительно гораздо быстрее записи строк в целевую таблицу; разделение на четыре потока дает мне в 3 раза более быстрый ETL, и мне нужно, чтобы это было быстро)

Мне нужно, чтобы значения идентификаторов были уникальными для всех четырех промежуточных таблиц - поэтому я создал их как IDENTITY (N, 4), где N равно 1, 2, 3 или 4 соответственно.

Является ли эта установка "рискованной" с точки зрения уникальности? Я имею в виду, есть ли вероятность того, что один из этих четырех столбцов IDENTITY столкнется с другим?

Любые советы приветствуются.

SQL Server 2012

1 Ответ

0 голосов
/ 28 января 2019

В SQL Server 2012 вы можете использовать последовательности вместо идентификатора для таких сценариев. Смотрите здесь

Однако SQL Server использует все ядра, если вы не используете maxdop. Повышение производительности будет иметь место, если вы будете хранить таблицы в разных файловых группах на разных дисках для повышения производительности чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...