이 기사에서는 데이터베이스 초기화 프로세스 중에 관리자가 자주 직면하는 실질적인 문제, 즉 대용량 데이터를 데이터베이스 시스템으로 가져오는 방법을 소개합니다. 데이터베이스 초기화 과정에서 관리자가 직면해야 하는 실질적인 문제는 대용량 데이터를 데이터베이스 시스템으로 어떻게 가져오는가 하는 것입니다. 데이터베이스 관리자가 사용할 수 있도록 일부 대용량 데이터 가져오기 및 내보내기 도구가 SQL Server 데이터베이스에 제공됩니다. 예를 들어 관리자는 bcp 유틸리티 도구를 사용하여 대용량 데이터를 내보내고 대용량 데이터를 가져오고 서식이 지정된 파일을 생성할 수 있습니다. 예를 들어 대량 삽입 문을 사용하면 대용량 데이터를 데이터 파일에서 데이터베이스 테이블이나 분할되지 않은 뷰 등으로 직접 가져올 수 있습니다.
이러한 유틸리티는 SQL Server 데이터베이스에 제공되지만. 그러나 관리자는 실제 업무에서 이러한 작업에 여전히 주의가 필요합니다. 특히, 대용량 데이터를 가져오고 내보내는 과정에서는 다음과 같은 측면에 주의해야 합니다.
1. 대용량 데이터를 가져오고 내보내려면 시스템에서 제공하는 도구를 사용해 보십시오.
위의 저자가 언급한 여러 실용적인 도구에는 공통된 기능이 있습니다. 즉, 가져오기 프로세스 중에 대용량 데이터에 대해 특정 최적화를 수행한다는 것입니다. 예를 들어 일부 데이터의 형식을 표준화하고 가져오기 및 내보내기 시간을 절약하는 등의 작업을 수행합니다. 그러나 이러한 도구를 사용할 경우 일반 데이터 가져오기 및 내보내기 도구와 한 가지 차이점이 있습니다. 즉, 대용량 가져오기 작업에서는 흔히 텍스트 파일이라고도 하는 쉼표로 구분된 파일의 데이터 가져오기를 지원하지 않습니다. 관리자는 현재 다른 도구를 사용하여 대용량 데이터를 파일 형식으로 가져올 수도 있지만 일반적으로 권장하지 않습니다. 다른 도구는 가져오기 프로세스 중에 최적화 기능을 지원하지 않기 때문입니다. 이러한 이유로 저자는 ACCESS 및 기타 중간 도구와 같은 다른 도구를 사용하여 먼저 텍스트 파일의 데이터를 일반 테이블 형식으로 변환한 다음 위 도구를 사용하여 시스템으로 가져올 것을 권장합니다. 이로 인해 작업 부하가 증가하지만 대용량 데이터의 품질을 보장할 수 있습니다. 이러한 이유로 실제 작업에서 사용자가 이런 종류의 문제에 직면하면 시스템에서 제공하는 도구를 사용하여 대용량 데이터를 가져오고 내보낼 것을 강력히 권장합니다.
또한, 대용량 데이터의 표준화를 향상시키기 위해 포맷된 파일을 사용하는 것도 좋은 선택입니다. 위에서 언급한 여러 대용량 가져오기 및 내보내기 도구는 특수 형식 파일의 사용을 지원하여 원본 데이터 파일의 각 필드 형식 정보를 저장합니다. 형식 파일에는 해당 데이터베이스 테이블에 대한 정보도 포함될 수 있습니다. 형식 파일을 사용하면 데이터베이스 인스턴스에서 데이터를 대량으로 내보내고 데이터베이스 인스턴스로 데이터를 가져오는 데 필요한 모든 형식 지정 정보를 제공할 수 있습니다. 일반인의 관점에서 보면 형식 파일은 가져오는 동안 데이터 파일의 데이터 형식을 해석하고 내보내는 동안 데이터 파일의 데이터 형식을 지정하는 유연한 방법을 제공합니다. 이러한 유연성 덕분에 데이터를 해석하기 위해 특수 코드를 작성하거나 데이터베이스 또는 외부 애플리케이션의 특별한 요구 사항을 충족하기 위해 데이터 형식을 다시 지정할 필요가 없습니다. 포맷된 파일을 유연하게 사용하면, 추후 추가적인 포맷 조정 없이 사용자가 대용량 데이터를 필요한 포맷으로 직접 내보내거나 가져올 수 있습니다.
2. 적절한 데이터베이스 로그 작업 모드를 선택합니다.
모두가 알고 있듯이 데이터베이스에서 사용자가 변경한 모든 내용은 관련 로그에 기록됩니다. 대량의 데이터를 가져오고 내보내는 경우에도 예외는 아닙니다. 하지만 대용량 데이터는 상대적으로 용량이 크기 때문에 상대적으로 큰 트랜잭션 로그 기능을 차지하게 됩니다. 이러한 이유로 저자는 사용자가 대용량 데이터를 가져오기 전에 적합한 데이터베이스 로그 작업 모드를 선택하는 것이 가장 좋습니다. 저자의 접근 방식은 사용자가 대용량 데이터를 가져와야 하는 경우 대용량 로그 복구 모드를 선택하는 것이 가장 좋다는 것입니다. 가져오기 작업이 완료될 때까지 기다린 후 원래 모드로 돌아갑니다.
이는 주로 대용량 로그 모드에서 대용량 데이터 가져오기 작업에 대한 지원이 상대적으로 좋기 때문입니다. 다른 로그 복구 모델(예: 전체 복구 모델)과 비교하여 대량 로그 복구 모델은 대량 작업만 최소한으로 기록합니다. 이러한 이유로 대용량 로그 작업 복구 모델은 하드웨어 오류로부터 대용량 작업을 보호하고 더 나은 성능을 제공하며 최소한의 로그 공간을 차지합니다. 따라서 대량 로그 복구를 사용하면 대량 로그 복구가 로그 줄을 삽입하지 않기 때문에 트랜잭션 로그의 공간이 부족해지는 것을 방지하는 데 도움이 됩니다. 이 대량 로그 작업 모드는 전체 복구 모델을 사용하는 데이터베이스에 매우 적합합니다. 대량 로그 복구 모델은 인덱스가 없는 테이블에서 대량 작업을 수행할 때 유용합니다.
그러나 대용량 로그 작업 모드에도 특정 위험이 있습니다. 대량 로그와 같은 복구 모델은 이러한 대량 복사 작업에 대한 데이터 손실 위험을 증가시킵니다. 대량 로그 운영 모드에서는 데이터베이스 시스템이 각 트랜잭션에 대한 변경 사항을 하나씩 캡처하는 것을 방지하기 때문입니다. 로그 백업에 대량 로그 작업이 포함된 경우 해당 로그 백업의 특정 시점으로 복원할 수 없으며 전체 로그 백업만 복원할 수 있습니다. 또한 대량 로그 복구 모델에서 로그 백업에 대량 작업이 포함되는 경우 로그 백업에는 대량 작업으로 변경된 로그 레코드와 데이터 페이지가 포함됩니다. 이는 대량 로깅 작업의 결과를 캡처하는 데 중요합니다. 병합된 데이터 영역으로 인해 로그 백업이 매우 커질 수 있습니다. 또한 로그를 백업하려면 대량의 로그 트랜잭션이 포함된 데이터 파일에 액세스해야 합니다. 영향을 받는 데이터베이스 파일에 액세스할 수 없으면 트랜잭션 로그가 백업되지 않으며 이 로그에 커밋된 모든 작업이 손실됩니다. 따라서 대용량 로그 백업 모드는 안전한 로그 모드가 아닙니다.
3. 먼저 테이블의 인덱스를 일시적으로 삭제해야 하는지 고려하세요.
인덱스는 특수 파일이며 데이터베이스에서의 역할은 매우 중요합니다. 간단히 말해서, 데이터베이스를 책에 비유한다면 색인은 책의 목차와 같습니다. 인덱스에는 데이터 테이블의 모든 레코드에 대한 참조 포인터가 포함되어 있습니다. 인덱스가 데이터베이스 성능을 향상시킬 수 있다는 것은 의심의 여지가 없습니다. 그러나 색인 생성이 모든 경우에 긍정적인 영향을 미칠 수는 없습니다. 특별한 경우에는 대용량 데이터 가져오기 등 일부 작업의 성능이 저하될 수 있습니다.
인덱스는 데이터 검색 작업 속도를 높일 수 있지만 데이터 수정 작업 속도를 느리게 만들 수 있습니다. 데이터 레코드가 수정되거나 삽입될 때마다 인덱스를 새로 고쳐야 하기 때문입니다. 즉, 100만 개의 레코드가 삽입되면 인덱스를 100만 번 새로 고쳐야 합니다. 대용량 데이터를 가져올 경우 인덱스가 데이터베이스 리소스를 많이 소모하여 데이터베이스 성능이 저하되는 것을 알 수 있습니다. 대상 테이블에 인덱스가 있으면 데이터베이스로 대용량 데이터를 가져오는 속도에 영향을 미칠 뿐만 아니라 다른 사용자의 데이터베이스에 대한 일반적인 액세스 성능도 저하됩니다.
이런 이유로 저자는 가져올 테이블에 데이터가 많지 않다면 먼저 인덱스를 삭제해 대용량 데이터 가져오기 성능을 향상시키는 것이 가장 좋다고 제안한다. 가져온 후 인덱싱을 다시 활성화합니다. 그러나 테이블에 이미 가져와야 할 데이터가 많고, 가져와야 하는 데이터가 기존 데이터와 유사하거나 적을 수 있는 경우에는 인덱스를 삭제할 필요가 없습니다. 이때 인덱스를 삭제하면 반대 효과가 발생합니다. 데이터베이스 시스템이 인덱스를 다시 작성하는 데 걸리는 시간이 대량 가져오기 작업 중에 절약된 시간보다 길 수 있기 때문입니다. 이때 관리자는 대상 테이블의 인덱스를 삭제함으로써 얻는 이득보다 잃는 것이 더 많다.
4. 데이터 가져오기 후 즉시 데이터베이스 백업 수행
데이터베이스 개체를 구축하는 것과 마찬가지로 대용량 데이터를 데이터베이스 시스템으로 가져온 후 관리자는 적시에 기존 데이터베이스를 백업해야 합니다. 시스템 대용량 가져오기 도구의 시기적절한 도움으로 인해 이 데이터 가져오기 작업은 여전히 매우 지루하고 시간이 많이 걸립니다. 이러한 이유로 대용량 데이터를 데이터베이스 시스템으로 성공적으로 가져온 후 관리자는 적시에 데이터베이스를 백업해야 합니다. 저자가 여기에서 모든 사람에게 상기시키고 싶은 것은 작업 로그 모드에 따라 백업 방법이 다른 경우가 많다는 것입니다.
대용량 데이터를 가져온 후 관리자는 데이터베이스를 백업해야 합니다. 저자는 이때 관리자가 단순 로그 복구 모델을 채택한다면 대량 가져오기 작업이 완료된 후 즉시 전체 백업이나 차등 백업을 수행해야 한다고 제안한다(시간이 허락한다면 전체 백업을 수행하는 것이 가장 좋다). . 그리고 당시 데이터베이스 관리자가 대용량 로그 복구 모델이나 전체 복구 모델을 채택하는 경우, 시간이 많지 않거나 전체 백업이 당시 사용자의 접속에 영향을 미칠까 걱정된다면 로그 백업만 수행하면 된다. 충분합니다. 데이터베이스 서버가 프로덕션 서버가 되지 않은 경우(즉, 아직 이를 사용하는 사용자가 없는 경우) 데이터베이스 전체 백업을 수행하는 것이 더 안전합니다.
5. 일반적인 실수
대용량 데이터를 가져오는 동안 가장 흔히 발생하는 두 가지 오류가 있습니다.
첫째, 제공된 파일의 형식이 올바르지 않습니다. 위에서 언급한 것처럼 일반적으로 데이터베이스에서 제공하는 대량 가져오기 도구는 텍스트 파일을 지원하지 않습니다. 관리자는 이 목적을 위해 사전 변환을 수행해야 합니다. 둘째, 숨겨진 문자가 문제를 일으킬 수 있다는 점에 유의하세요. 많은 소프트웨어 및 텍스트 편집기에는 숨겨진 문자가 표시됩니다. 이러한 숨겨진 문자는 일반적으로 데이터 파일의 끝에 있습니다. 대량 가져오기 작업 중에 데이터 파일의 숨겨진 문자로 인해 예기치 않은 null 문자 오류 등 예측할 수 없는 문제가 발생할 수 있습니다. 이 실수는 피하기 쉽습니다. 데이터베이스 관리자가 데이터를 가져오기 전에 모든 숨겨진 문자를 찾아서 제거하는 한. 실제로 이러한 문제는 대용량 데이터를 가져올 때뿐만 아니라, 적은 양의 데이터를 가져올 때도 발생하게 됩니다.