Загрузка базы данных
После создания вашей базы данных и таблиц базы данных вы можете переходить к загрузке ваших данных в эту базу. Имеется несколько методов загрузки данных в базу данных; выбираемый вами метод зависит от типа источника ваших данных, от вида обработки, которая будет выполняться с данными, и от того, куда будут загружаться данные. В этой главе мы рассмотрим следующие методы загрузки в базу данных:
- Использование программы Bulk Copy Program (BCP). BCP – это внешняя программа, поставляемая вместе с Microsoft SQL Server 2000 для загрузки файлов данных в базу данных. BCP можно также использовать для копирования данных из какой-либо таблицы SQL Server в файл данных.
- Использование оператора BULK INSERT. Оператор Transact-SQL (T-SQL) BULK INSERT позволяет вам копировать большие объемы данных из файла данных в таблицу SQL Server в рамках системы SQL Server. Поскольку этот оператор является оператором SQL (выполняется из ISQL, OSQL или анализатора запросов Query Analyzer), то весь процесс выполняется как поток SQL Server. Этот оператор нельзя использовать для копирования данных из SQL Server в файл данных.
- Использование служб преобразования данных Data Transformation Services (DTS). DTS – это набор инструментальных средств, поставляемых вместе с SQL Server, которые намного упрощают задачу копирования данных в SQL Server и из SQL Server. В набор DTS включен мастер для импорта данных и мастер для экспорта данных.
Каждый из этих методов обладает различными возможностями и характеристиками. Вы обязательно найдете хотя бы один метод, отвечающий вашим требованиям.
Для вас могут оказаться полезными следующие дополнительные операции:
- Оператор SELECT...INTO. Этот оператор используется для копирования данных из одной таблицы в другую.
- Переходные таблицы.Переходные таблицы – это временные таблицы, которые обычно используются для преобразования данных внутри базы данных. Вы можете использовать эти таблицы, чтобы облегчить процесс загрузки и модифицировать данные во время загрузки.
Производительность операций загрузки
В этом разделе мы рассмотрим три параметра конфигурирования, которые обычно используются для повышения производительности операций загрузки. Два из этих трех параметров влияют на журнальное протоколирование во время операций массового копирования и третий параметр влияет на блокировку. Массовое копирование – это операция, при которой данные копируются большими порциями; копирование данных большими порциями является наиболее эффективным способом для воспроизведения данных.
Параметры журнального протоколирования
SQL Server использует достаточно сложный механизм протоколирования, чтобы исключить потери данных в случае отказа системы. Журнальное протоколирование имеет важное значение для целостности данных в системе, но оно может существенно увеличивать нагрузку на систему. Вы можете снижать эту нагрузку за счет уменьшения количества протоколируемых данных во время массовых загрузок.
По умолчанию все операции вставки в базу данных полностью протоколируются, что позволяет выполнить восстановление и откат транзакций в случае отказа системы. Отключая полное протоколирование массового копирования (которое выполняется с помощью программы BCP, оператора BULK INSERT или оператора SELECT...INTO ), вы можете снизить количество протоколируемых данных, но при этом будут поддерживаться только операции отката. Это повысит производительность резервного копирования, но потребует повторного запуска всего процесса загрузки в базу данных в случае отказа системы, поскольку не будет выполняться журнальное протоколирование, которое обычно используется для восстановления базы данных. Этот вариант относится к переходным таблицам, только если вы загружаете эти таблицы с помощью описанных выше методов массового копирования.
Полное протоколирование этих операций массового копирования отключается при выполнении всех следующих условий:
- Для параметра базы данных SELECT INTO/BULKCOPY задано значение TRUE. Вот синтаксис этой команды с использованием хранимой процедуры sp_dboption:
exec sp_dboption имя_базы_данных, "select into/bulkcopy", TRUE
- Вы можете также конфигурировать этот параметр с помощью Enterprise Manager. (О Enterprise Manager см. "Работа со службами Microsoft SQL Server Services" .)
- Таблица, в которую загружаются данные, не реплицируется. (О репликации см. "Репликация в Microsoft SQL Server: обзор типов репликации и репликация моментальных снимков" , "Репликация транзакций" и "Создание и использование умолчаний, ограничений и правил" .)
- Задана подсказка TABLOCK. (Более подробную информацию по этой подсказке см. далее в разделе "Необязательные параметры".) Если для таблицы, в которую загружаются данные, определены индексы, то SQL Server не требует от вас указания подсказки TABLOCK.
Еще один параметр базы данных – trunc. log on chkpt – отключает сохранение журнальных записей, когда для этого параметра задано значение TRUE. В этом случае происходит усечение журнала транзакций каждый раз, как встречается контрольная точка. Это повышает производительность массового копирования, но означает, что вы не получите ни повторного выполнения, ни отката в случае отказа системы.