Какое лучшее решение для работы с архивным огромным количеством записей в SQL Server 2008? - PullRequest
3 голосов
/ 20 августа 2011

Я занимаюсь разработкой проекта сбора электронных транзакций, который не подключен к .NET.Это означает, что я получу несколько текстовых файлов, содержащих транзакции за предыдущий день.В общей сложности он содержит около 2 000 000 строк в день.

Я хочу добиться высокой производительности при поиске по транзакциям за последний месяц (максимум 3 секунды), но я хочу иметь возможность поиска по более старым транзакциям (максимум30 секунд).Поиск в архиве основан на CardNumber, TransactionNumber и TransactionDate.Я имею в виду сценарий поиска в архиве статический, и мы не хотим искать в других столбцах или получать какие-либо отчеты.

Я думаю о стратегии архивирования.

Есть некоторыеопции:

  1. Настройка и оптимизация индексов на главной таблице.

  2. Разделение главной таблицы.

  3. Перенос старых транзакций в другую базу данных, каждую ночь.

  4. Перемещение старых транзакций в текстовый файл, каждый час (TextFile, XmlSerialization, BinarySerialization), а затем поиск в памяти.

  5. Использование других баз данных NON-RDBMS с открытым исходным кодом (например, движка Lucene в текстовом поиске).

Прежде всего, я хочу знать, какая стратегия лучшесоответствует одному для этого сценария?

Кроме того, сколько записей поддерживается известными механизмами баз данных (такими как SQL Server 2008, Oracle, Sqlite, MySql, ...)?Когда мы должны думать о разбиении таблицы?

1 Ответ

3 голосов
/ 20 августа 2011

Я определенно думаю, что разделение будет работать лучше всего, возможно, ежемесячные разделы. Вы можете отключить старые разделы (переместить их в отдельные файловые группы с течением времени и пометить их как доступные только для чтения), но при этом они по-прежнему будут доступны для запросов. Число строк в 2 мм в день не так уж велико, но если вы собираете это в одном разделе навсегда, некоторые задачи / запросы в конечном итоге не будут масштабироваться. Вы должны быть очень внимательны к тому, как настроить кластерный индекс, некластеризованные индексы и схему / функцию разделения. Если вы еще не знакомы с секционированием, я настоятельно рекомендую некоторое время составить бюджет, чтобы ознакомиться с ним и стать экспертом с ним в своих средах тестирования / разработки / промежуточного хранения, прежде чем приступить к работе на производстве. Это, вероятно, хорошая отправная точка, как и любая , но не бойтесь искать в блогах практические и реальные советы, помимо официальной документации.

...