В этой статье будет рассмотрена практическая проблема, с которой администраторы часто сталкиваются в процессе инициализации базы данных: как импортировать большие объемы данных в систему базы данных. В процессе инициализации базы данных администраторам приходится решать практическую проблему: как импортировать большие объемы данных в систему базы данных. В базе данных SQL Server предусмотрены некоторые инструменты импорта и экспорта данных большой емкости, которые могут использовать администраторы базы данных. Например, администраторы могут использовать утилиту bcp для экспорта данных в больших объемах, импорта данных в больших объемах и создания форматированных файлов. Например, операторы массовой вставки можно использовать для импорта данных большой емкости непосредственно из файлов данных в таблицы базы данных или несекционированные представления и т. д.
Хотя эти утилиты предусмотрены в базе данных SQL Server. Однако администраторам по-прежнему следует с осторожностью относиться к этой работе в реальной работе. В частности, в процессе импорта и экспорта данных большого объема необходимо обратить внимание на следующие аспекты.
1. Попробуйте использовать инструменты, предоставляемые системой, для импорта и экспорта данных большого объема.
Несколько практических инструментов, упомянутых автором выше, имеют общую особенность: они выполняют определенные оптимизации данных большой емкости в процессе импорта. Например, это позволит стандартизировать формат некоторых данных, сэкономить время на импорте и экспорте и т. д. Однако при использовании этих инструментов есть одно отличие от других обычных инструментов импорта и экспорта данных: операции импорта большой емкости не поддерживают импорт данных в файлы, разделенные запятыми, которые часто называют текстовыми файлами. Хотя в настоящее время администратор также может использовать другие инструменты для импорта данных большого объема в формате файла, я обычно не рекомендую это делать. Потому что другие инструменты не поддерживают функцию оптимизации в процессе импорта. По этой причине автор рекомендует использовать другие инструменты, такие как ACCESS и другие промежуточные инструменты, чтобы сначала преобразовать данные текстового файла в обычный табличный вид, а затем использовать вышеуказанные инструменты для импорта их в систему. Хотя это увеличит рабочую нагрузку, это может обеспечить качество данных большого объема. По этой причине в моей реальной работе, если пользователи сталкиваются с такого рода проблемами, я настоятельно рекомендую им использовать инструменты, предоставляемые системой, для импорта и экспорта данных большого объема.
Кроме того, использование форматированных файлов для улучшения стандартизации данных большого объема также является хорошим выбором. Некоторые из упомянутых выше инструментов импорта и экспорта большой емкости поддерживают использование файлов специализированного формата для хранения информации о формате каждого поля в исходном файле данных. Файл формата также может содержать информацию о соответствующей таблице базы данных. Файлы форматирования можно использовать для предоставления всей информации о форматировании, необходимой для массового экспорта данных и массового импорта данных в экземпляр базы данных. С точки зрения непрофессионала, файл формата обеспечивает гибкий способ интерпретации формата данных в файле данных во время импорта и форматирования данных в файле данных во время экспорта. Такая гибкость устраняет необходимость написания специального кода для интерпретации данных или переформатирования данных в соответствии с особыми потребностями базы данных или внешнего приложения. Если форматированные файлы используются гибко, пользователи могут напрямую экспортировать или импортировать данные большого объема в требуемом формате без необходимости впоследствии вносить дополнительные настройки формата.
2. Выберите подходящий режим работы журнала базы данных.
Как всем известно, любые изменения, вносимые пользователями в базу данных, будут фиксироваться в соответствующих журналах. Импорт и экспорт больших объемов данных не является исключением. Однако, поскольку данные большой емкости относительно велики, они будут занимать относительно большую функцию журнала транзакций. По этой причине автор рекомендует пользователям перед импортом данных большого объема выбрать подходящий режим работы журнала базы данных. Подход автора заключается в том, что если пользователю необходимо импортировать данные большого объема, лучше всего выбрать режим восстановления журнала большого объема. Подождите, пока работа импорта завершится, а затем вернитесь в исходный режим.
Это происходит главным образом потому, что в режиме журнала большой емкости поддержка импорта данных большой емкости относительно хороша. По сравнению с другими моделями восстановления с журналированием (например, моделью полного восстановления), модель восстановления с неполным протоколированием записывает лишь минимально объемные операции. По этой причине модель восстановления операций журнала большой емкости защищает операции большого объема от аппаратных сбоев, обеспечивает более высокую производительность и занимает минимальное пространство журнала. Таким образом, использование восстановления с неполным протоколированием помогает предотвратить нехватку места в журналах транзакций, поскольку восстановление с неполным протоколированием не вставляет строки журнала. Этот режим работы с массовым журналом очень подходит для баз данных, использующих модель полного восстановления. Модель восстановления с неполным протоколированием полезна при выполнении массовых операций с таблицами без индексов.
Однако режим работы с журналами большой емкости также имеет определенные риски. Такая модель восстановления, как массовый журнал, увеличивает риск потери данных при таких операциях массового копирования. Потому что режим работы с неполным протоколированием не позволит системе базы данных фиксировать изменения, внесенные в каждую транзакцию один за другим. Если резервная копия журнала содержит массовые операции с журналом, вы не можете восстановить резервную копию журнала на определенный момент времени, а можете восстановить только всю резервную копию журнала; Также в модели восстановления с неполным протоколированием, если резервная копия журнала охватывает какие-либо массовые операции, резервная копия журнала будет содержать записи журнала и страницы данных, измененные в результате массовых операций. Это имеет решающее значение для сбора результатов операций массовой регистрации. Объединенные области данных могут сделать резервные копии журналов очень большими. Кроме того, резервное копирование журналов требует доступа к файлам данных, содержащим большие объемы транзакций журналов. Если какие-либо затронутые файлы базы данных недоступны, резервная копия журнала транзакций не будет создана, и все операции, зафиксированные в этом журнале, будут потеряны. Таким образом, режим резервного копирования журналов большой емкости не является безопасным режимом журналов.
3. Подумайте, нужно ли вам сначала временно удалить индекс таблицы.
Индекс — это специальный файл, и его роль в базе данных очень важна. Проще говоря, если базу данных сравнивать с книгой, то индекс подобен оглавлению книги. Индекс содержит указатели на все записи в таблице данных. Нет сомнений в том, что индексы могут повысить производительность базы данных. Но индексация не может иметь положительный эффект во всех случаях. В некоторых особых случаях это приведет к снижению производительности некоторых операций, например импорта данных большого объема.
Индекс может ускорить операции извлечения данных, но может замедлить операции по изменению данных. Поскольку каждый раз, когда запись данных изменяется или вставляется, индекс должен обновляться. Другими словами, если вставлен миллион записей, индекс необходимо обновить миллион раз. Видно, что при импорте данных большого объема индекс будет потреблять много ресурсов базы данных, что снижает производительность базы данных. Если в целевой таблице есть индексы, это не только повлияет на скорость импорта больших объемов данных в базу данных, но и снизит производительность обычного доступа других пользователей к базе данных.
По этой причине автор предлагает, чтобы, если в импортируемой таблице не так много данных, лучше сначала удалить индекс, чтобы повысить производительность импорта данных большой емкости. Повторно включите индексирование после импорта. Однако если в таблице уже много данных, которые необходимо импортировать, и данные, которые необходимо импортировать, могут быть аналогичны существующим данным или меньше их, то удалять индекс нет необходимости. Удаление индекса в это время будет иметь противоположный эффект. Потому что время, необходимое системе базы данных для восстановления индексов, может быть больше, чем время, сэкономленное во время операции массового импорта. В этот раз администратор потеряет больше, чем выиграет, удалив индекс целевой таблицы.
4. Выполните резервное копирование базы данных сразу после импорта данных.
Как и при создании объектов базы данных, после импорта данных большого объема в систему базы данных администраторы должны своевременно создавать резервные копии существующей базы данных. Из-за своевременной помощи системных инструментов импорта большой емкости эта работа по импорту данных по-прежнему остается очень утомительной и трудоемкой. По этой причине после успешного импорта данных большого объема в систему базы данных администратор должен своевременно создавать резервные копии базы данных. Автор хочет напомнить всем, что методы резервного копирования часто различаются в разных режимах журнала операций.
После импорта данных большого объема администраторам необходимо создать резервную копию базы данных. Автор предлагает, чтобы, если администратор в это время примет простую модель восстановления журнала, он должен выполнить полное резервное копирование или дифференциальное резервное копирование сразу после завершения операции массового импорта (если позволяет время, лучше всего выполнить полное резервное копирование). . И если администратор базы данных в это время примет модель восстановления журнала большой емкости или модель полного восстановления, если у него мало времени или он обеспокоен тем, что полное резервное копирование повлияет на доступ пользователя в это время, тогда следует выполнять только резервное копирование журнала. достаточно. Если сервер базы данных не стал рабочим сервером (т. е. его по-прежнему не используют пользователи), безопаснее выполнить полное резервное копирование базы данных.
5. Распространенные ошибки
Вероятно, при импорте данных большого объема возникают две наиболее распространенные ошибки.
Во-первых, формат предоставленного файла неправильный. Как упоминалось выше, обычно инструмент массового импорта, предоставляемый базой данных, не поддерживает текстовые файлы. Для этой цели администраторам необходимо выполнить предварительные преобразования. Во-вторых, имейте в виду, что скрытые символы могут вызвать проблемы. Многие программы и текстовые редакторы отображают скрытые символы. Эти скрытые символы обычно располагаются в конце файла данных. Во время операций массового импорта скрытые символы в файлах данных могут вызвать непредсказуемые проблемы, такие как неожиданные ошибки нулевых символов и т. д. Эту ошибку легко избежать. При условии, что администратор базы данных ищет и удаляет все скрытые символы перед импортом данных. Фактически, с этой проблемой можно столкнуться не только при импорте данных большого объема, но и при импорте небольших объемов данных.