У меня проблема с производительностью ETL-процесса. У меня есть таблица с 4+ миллиардов строк в нем. Структура:
id
bigint identity (1,1)
raw_url
varchar (2000) не равно нулю
md5hash
char (32) не нуль
job_control_number
int not null
Кластерный уникальный индекс по идентификатору и некластерный уникальный индекс по md5hash
SQL Server 2008 Enterprise
Сжатие на уровне страницы включено
Мы должны хранить необработанные URL-адреса из журналов нашего веб-сервера в качестве измерения. Поскольку необработанная строка> 900 символов, мы не можем поместить уникальный индекс в этот столбец. Мы используем хеш-функцию md5 для создания уникальной 32-символьной строки для целей индексации. Мы не можем разрешить дублирование строк raw_url в таблице.
Проблема в низкой производительности. Конечно, md5hash по своей природе случайен, поэтому фрагментация индекса достигает 50%, что приводит к неэффективному вводу-выводу.
Ищите советы о том, как структурировать это, чтобы обеспечить лучшую производительность вставки и поиска, а также меньшую фрагментацию индекса.