전통문화대전망 - 전통 미덕 - 데이터베이스 원칙 및 적용 질문

데이터베이스 원칙 및 적용 질문

1.B 2.C 3.B 4.C 5.D 6.C 7.C 8.D 9.C 10.A

11.A 12.A 13.A -- 잘 모름 14.B 15.C 16.A 17.B 18.A 19.D 20.C

1. 트랜잭션의 개념과 트랜잭션의 네 가지 특징을 설명하세요.

답변:

트랜잭션은 사용자가 정의한 일련의 데이터베이스 작업입니다. 이러한 작업은 수행되거나 수행되지 않습니다.

트랜잭션에는 원자성, 일관성, 격리성, 내구성이라는 네 가지 특성이 있습니다. 이 네 가지 속성을 ACID 속성이라고도 합니다.

원자성: 트랜잭션은 데이터베이스의 논리적 작업 단위이며 트랜잭션에 포함된 모든 작업은 완료되거나 전혀 수행되지 않습니다.

일관성: 트랜잭션 실행의 결과는 데이터베이스를 한 일관성 상태에서 다른 일관성 상태로 변경하는 것이어야 합니다.

격리성: 트랜잭션 실행은 다른 트랜잭션의 방해를 받을 수 없습니다. 즉, 트랜잭션 내에서 사용되는 작업과 데이터는 다른 동시 트랜잭션과 격리되며, 동시에 실행되는 트랜잭션은 서로 간섭할 수 없습니다.

지속성: 지속성(영구성이라고도 함)은 트랜잭션이 제출되면 데이터베이스의 데이터 변경 사항이 영구적이어야 함을 의미합니다. 후속 작업이나 실패는 실행 결과에 영향을 주어서는 안됩니다.

2. 비정상적인 트랜잭션 종료가 데이터베이스 데이터의 정확성에 영향을 미치는 이유는 무엇입니까? 예를 들어 설명해주세요.

답변:

트랜잭션 실행의 결과는 데이터베이스를 한 일관성 상태에서 다른 일관성 상태로 변경하는 것이어야 합니다. 데이터베이스 시스템 작동 중에 장애가 발생하면 일부 트랜잭션이 완료되기 전에 강제로 중단됩니다. 이러한 완료되지 않은 트랜잭션으로 인해 데이터베이스에 적용된 일부 수정 사항은 이때 데이터베이스에 기록됩니다. 잘못된 상태입니다. 즉, 잘못된 상태입니다.

예를 들어, 공장의 재고 관리 시스템에서 수량 Q의 특정 부품을 창고 1에서 창고 2로 이동하여 보관해야 합니다.

그런 다음 Q1=Q1-Q, Q2=Q2+Q라는 두 가지 작업을 포함하는 트랜잭션 T를 정의할 수 있습니다. T가 비정상적으로 종료되었을 때 첫 번째 작업만 수행하면 데이터베이스가 일관성이 없는 상태가 되어 아무 이유 없이 인벤토리가 Q만큼 줄어들게 됩니다.

3. 데이터베이스에 복구 하위 시스템이 있는 이유는 무엇입니까? 그 기능은 무엇입니까?

답변:

하드웨어 오류, 소프트웨어 오류, 운영자 오류 및 악의적인 손상은 컴퓨터 시스템에서 불가피하기 때문에 이러한 오류로 인해 비정상적인 운영 트랜잭션이 발생할 수 있으며 데이터의 정확성에 영향을 미칩니다. 심각한 경우에는 데이터베이스를 파괴하여 데이터베이스에 있는 데이터의 전부 또는 일부가 손실되므로 복구 하위 시스템이 필요합니다.

복구 하위 시스템의 기능은 데이터베이스를 오류 상태에서 알려진 올바른 상태(일관된 상태 또는 전체 상태라고도 함)로 복원하는 것입니다.

4. 데이터베이스 운영 중에 발생할 수 있는 오류 유형은 무엇입니까? 정상적인 트랜잭션 실행에 영향을 미치는 오류는 무엇입니까? 데이터베이스 데이터를 손상시키는 오류는 무엇입니까?

답변: 데이터베이스 시스템에서는 다양한 오류가 발생할 수 있으며 이는 대략 다음 범주로 나눌 수 있습니다.

(1) 트랜잭션 내 오류

(2) 시스템 오류,

(3) 미디어 오류,

(4) 컴퓨터 바이러스.

트랜잭션 실패, 시스템 오류 및 미디어 오류는 정상적인 트랜잭션 실행에 영향을 미치며, 컴퓨터 바이러스는 데이터를 파괴합니다.

데이터베이스 데이터.

5. 데이터베이스 복구를 위한 기본 기술은 무엇입니까?

답변:

데이터 덤프 및 로그인 로그 파일은 데이터베이스 복구를 위한 기본 기술입니다.

시스템 운영 중 장애가 발생한 경우, 덤프된 데이터베이스 백업 복사본과 로그 파일을 이용하여 데이터베이스를 장애 발생 전의 일정한 일관성 상태로 복원할 수 있다.

6. 데이터베이스 덤프의 의미는 무엇입니까? 다양한 데이터 덤프 방법을 비교해 보세요.

답변:

데이터 덤프는 데이터베이스 복구에 사용되는 기본 기술입니다. 소위 덤프는 DBA가 정기적으로 데이터베이스를 테이프나 다른 디스크에 복사하여 저장하는 프로세스입니다. 데이터베이스가 손상되면 백업 복사본을 다시 로드하여 데이터베이스를 덤프된 상태로 복원할 수 있습니다.

정적 덤프: 시스템에서 실행 중인 트랜잭션이 없을 때 수행되는 덤프 작업입니다. 정적 덤핑은 간단하지만 진행 중인 사용자 트랜잭션이 끝날 때까지 기다려야 진행됩니다. 마찬가지로, 새 트랜잭션은 실행되기 전에 덤프가 완료될 때까지 기다려야 합니다. 분명히 이는 데이터베이스의 가용성을 감소시킵니다.

동적 덤프: 덤프 중에 데이터베이스에 액세스하거나 수정할 수 있음을 의미합니다. 동적 덤프는 정적 덤프의 단점을 극복할 수 있으며 실행 중인 사용자 트랜잭션이 끝날 때까지 기다릴 필요가 없으며 새 트랜잭션 실행에 영향을 주지 않습니다. 그러나 덤프가 끝난 후 백업 복사본에 있는 데이터는 정확하고 유효하다고 보장되지 않습니다.

덤프 중에 실행되는 트랜잭션으로 인해 일부 데이터가 수정되었을 수 있으므로 백업 복사본의 데이터는 데이터베이스의 일관된 버전이 아닙니다.

이를 위해서는 덤프 중 데이터베이스의 각 트랜잭션에 대한 수정 활동을 등록하고 로그 파일을 생성해야 합니다. 이러한 방식으로 백업 복사본과 로그 파일을 통해 특정 순간에 데이터베이스의 올바른 상태를 얻을 수 있습니다.

덤프도 대용량 덤프와 증분 덤프의 두 가지 방법으로 나눌 수 있습니다.

대량 덤프는 매번 전체 데이터베이스를 덤프하는 것을 의미합니다. 증분 덤프는 이전 덤프 이후 업데이트된 데이터만 덤프하는 것을 의미합니다. 복구 관점에서 보면 일반적으로 대량 덤프에서 얻은 백업 복사본을 사용하는 것이 더 간단합니다. 그러나 데이터베이스가 크고 트랜잭션이 매우 자주 처리되는 경우 증분 덤프 방법이 더 실용적이고 효과적입니다.

7. 로그 파일이란 무엇입니까? 로그 파일을 설정하는 이유는 무엇입니까?

답변:

(1) 로그 파일은 데이터베이스에 대한 트랜잭션 업데이트 작업을 기록하는 데 사용되는 파일입니다.

(2) 로그 파일을 설정하는 목적은 트랜잭션 오류 복구를 수행하고, 시스템 오류 복구를 수행하고, 미디어 오류 복구 시 백업 복사본을 지원하는 것입니다.

8. 로그 파일을 등록할 때 로그 파일을 먼저 쓰고 데이터베이스를 작성해야 하는 이유는 무엇입니까?

답변:

데이터 수정 사항을 데이터베이스에 쓰는 것과 수정 사항을 나타내는 로그 레코드를 로그 파일에 쓰는 것은 두 가지 다른 작업입니다. 이 두 작업 사이에 오류가 발생했을 수 있습니다. 즉, 두 쓰기 작업 중 하나만 완료되었습니다.

데이터베이스 수정 사항을 먼저 작성하고 실행 중인 레코드에 수정 사항이 등록되지 않은 경우 나중에 수정 사항을 복원할 수 없습니다. 로그를 먼저 작성하고 데이터베이스를 수정하지 않으면 복구 중에 UNDO 작업을 한 번만 더 수행하게 되며 이는 데이터베이스의 정확성에 영향을 주지 않습니다. 따라서 먼저 로그 파일을 작성해야 합니다. 즉, 먼저 로그 파일에 로그 레코드를 작성한 다음 수정 사항을 데이터베이스에 작성해야 합니다.

9. 다양한 결함에 대해 복구 전략과 방법을 제공하려고 노력하십시오. (즉, 트랜잭션 실패 복구 방법? 시스템 오류 복구? 미디어 오류 복구?)

답변:

트랜잭션 실패 복구:

트랜잭션 실패 복구는 DBMS에 의해 자동으로 수행되며 사용자에게 투명합니다.

DBMS가 수행하는 복구 단계는 다음과 같습니다.

(1) 업데이트 작업을 찾기 위해 파일 로그를 역방향(즉, 로그 파일의 끝부터 스캔)으로 스캔합니다. 거래의.

(2) 트랜잭션 업데이트 작업의 역작업을 수행합니다. 즉, 로그 레코드의 "업데이트 전 값"이 데이터베이스에 기록됩니다.

(3) 계속해서 로그 파일을 역순으로 스캔하고 동일한 처리를 수행합니다.

(4) 이 과정은 트랜잭션의 시작 표시를 읽어 트랜잭션 실패 복구가 완료될 때까지 계속됩니다.

답변:

시스템 오류 복구:

시스템 오류로 인해 데이터베이스가 일관성 없는 상태가 될 수 있습니다.

첫째, 완료되지 않은 트랜잭션 데이터베이스 업데이트가 데이터베이스에 기록되었을 수 있습니다.

둘째, 커밋된 트랜잭션의 데이터베이스 업데이트가 여전히 버퍼에 남아 있어 데이터베이스에 기록할 시간이 없었을 수 있습니다.

따라서 복구 작업은 장애가 발생했을 때 완료되지 않은 트랜잭션을 실행 취소(UNDO)하고 완료된 트랜잭션을 다시 실행(REDO)하는 것입니다.

시스템 복구 단계는 다음과 같습니다.

(1) 로그 파일을 앞으로 스캔하여 실패 이전에 제출된 트랜잭션 큐(REDO 큐)와 완료되지 않은 트랜잭션 큐를 찾습니다. (UNDO 대기열).

(2) 실행 취소 대기열의 각 트랜잭션에 대해 UNDO 처리를 수행합니다.

UNDO 처리 방법은 로그 파일을 역으로 스캔하여 각 UNDO 트랜잭션의 업데이트 작업의 역순 작업을 수행하는 것, 즉 "업데이트 전 값"(Before Image)을 로그에 쓰는 것입니다. 데이터베이스에 기록합니다.

(3) Redo Queue의 각 트랜잭션에 대해 REDO 처리를 수행합니다.

REDO 처리 방법은 로그 파일을 정방향으로 스캔한 후 REDO 트랜잭션마다 로그 파일 등록 작업을 다시 실행하는 것입니다. 즉, 로그 기록의 "업데이트된 값"(After Image)이 데이터베이스에 기록됩니다.

*분석:

(1)단계에서 REDO 큐와 UNDO 큐를 어떻게 알 수 있나요? 이것에 대해 생각해 보십시오.

알고리즘은 아래와 같습니다:

1) 두 개의 트랜잭션 대기열을 설정합니다:

· UNDO-LIST: 실행 취소 작업을 수행해야 하는 트랜잭션 모음입니다.

p>

· REDO-LIST: 다시 실행 작업을 수행해야 하는 트랜잭션 모음입니다.

두 트랜잭션 대기열은 처음에는 비어 있습니다.

2) 로그 파일 헤더부터 시작하여 로그 파일을 앞으로 스캔

· 새로 시작된 트랜잭션 Ti(Begin Transaction 발생)가 있는 경우 Ti를 임시로 UNDO-LIST에 넣습니다. 큐;

· 제출된 트랜잭션(트랜잭션 종료) Tj가 있는 경우 Tj를 UNDO-LIST 큐에서 REDO-LIST 큐로 이동합니다.

로그 파일

p>

답변:

미디어 오류 복구:

미디어 오류는 가장 심각한 종류의 오류입니다.

복구 방법은 데이터베이스를 다시 로드한 후 완료된 트랜잭션을 다시 실행하는 것입니다. 구체적인 프로세스는 다음과 같습니다.

(1) DBA는 데이터베이스의 최신 백업 복사본(장애 발생 시점에 가장 가까운 덤프 복사본)을 로드하여 데이터베이스를 장애 발생 당시의 일관성 상태로 복원합니다. 덤프.

(2) DBA는 덤프가 끝나면 로그 파일의 복사본을 로드합니다.

(3) DBA는 시스템 복구 명령을 시작하고 DBMS는 복구 기능을 완료합니다. 즉, 완료된 거래를 다시 실행하는 것입니다.

*분석

1) 정적 덤프가 사용된다고 가정하므로 (1) 단계는 데이터베이스 백업 복사본을 로드하기에 충분합니다.

2) 정적 및 동적 덤프를 사용하는 경우 (1) 단계에서 데이터베이스의 백업 복사본을 로드하는 것만으로는 충분하지 않습니다. 또한 시작 부분에서 로그 파일의 복사본을 로드해야 합니다. 처리 후 얻을 수 있는 덤프입니다. 데이터베이스 백업 복사본을 수정하세요.

3) (2) 단계에서 완료된 트랜잭션을 다시 실행하는 알고리즘은 다음과 같습니다.

a. 로그 파일을 스캔하여 오류가 발생하기 전에 커밋된 트랜잭션의 식별자를 찾습니다. , 다시 실행 대기열에 기록합니다.

b. 로그 파일을 다시 스캔하고 다시 실행 대기열의 모든 트랜잭션을 다시 실행합니다. 즉, 로그 레코드의 "업데이트된 값"이 데이터베이스에 기록됩니다.

10. 체크포인트를 활용한 복구 기술의 장점은 무엇인가요?

답변:

데이터베이스 복구를 위해 로그 기술을 사용할 때 복구 하위 시스템은 로그를 검색하여 REDO가 필요한 트랜잭션과 UNDO가 필요한 트랜잭션을 결정해야 합니다. 일반적으로 모든 로깅을 확인해야 합니다. 여기에는 두 가지 문제가 있습니다.

첫째, 전체 로그를 검색하는 데 시간이 많이 걸립니다.

둘째, REDO에서 처리해야 하는 많은 트랜잭션이 실제로 업데이트 작업 결과를 데이터베이스에 기록했으며 복구 하위 시스템에서 이러한 작업을 다시 수행해야 하므로 많은 시간이 낭비됩니다.

체크포인트 기술은 이러한 문제를 해결하기 위해 설계되었습니다.

11. 체크포인트 방법을 사용하여 복구하는 단계를 설명하세요.

정답:

① 재시작 파일에서 로그 파일에 기록된 마지막 체크포인트의 주소를 찾고, 이 주소를 이용하여 로그 파일에서 마지막 체크포인트 기록을 찾는다.

② 체크포인트 레코드로부터 체크포인트가 성립된 시점에 실행되고 있던 모든 트랜잭션의 ACTIVE-LIST를 얻는다.

여기에 두 개의 트랜잭션 대기열이 설정됩니다.

· UNDO-LIST: 실행 취소 작업을 수행해야 하는 트랜잭션 모음

· REDO-LIST: 필요; 다시 실행 작업을 수행하기 위해 트랜잭션 수집;

일시적으로 ACTIVE-LIST를 UNDO-LIST 대기열에 넣고 REDO 대기열은 일시적으로 비어 있습니다.

③ 체크포인트부터 로그 파일을 스캔합니다.

· 새로 시작된 트랜잭션 Ti가 있는 경우 Ti를 임시로 UNDO-LIST 대기열에 넣습니다.

· 제출된 트랜잭션 Tj가 있으면 Tj를 UNDO-LIST 대기열에서 REDO-LIST 대기열로 로그 파일 끝까지 이동합니다.

④ UNDO의 각 트랜잭션에 대해 UNDO 작업을 수행합니다. -LIST, UNDO-LIST의 각 트랜잭션에 대해 REDO 작업을 수행합니다. -LIST의 각 트랜잭션은 REDO 작업을 수행합니다.

12. 데이터베이스 미러링이란 무엇입니까? 그것은 무엇을 위해 사용됩니까?

답변:

데이터베이스 미러링은 DBA의 요구 사항에 따라 전체 데이터베이스 또는 일부 주요 데이터를 다른 디스크에 자동으로 복사합니다. 메인 데이터베이스가 업데이트될 때마다 DBMS는 업데이트된 데이터를 자동으로 복사합니다. 즉, DBMS는 미러 데이터와 메인 데이터의 일관성을 자동으로 보장합니다.

데이터베이스 미러링의 용도는 다음과 같습니다.

첫째, 데이터베이스 복구에 사용됩니다. 미디어 장애가 발생하면 미러 디스크를 계속 사용할 수 있으며 동시에 DBMS는 시스템을 종료하고 데이터베이스 복사본을 다시 설치하지 않고도 자동으로 미러 디스크 데이터를 사용하여 데이터베이스를 복원합니다.

두 번째는 데이터베이스의 가용성을 높이는 것입니다. 장애가 없는 경우, 사용자가 특정 데이터를 배타적 잠금으로 수정하면 다른 사용자는 사용자가 잠금을 해제할 때까지 기다리지 않고 미러 데이터베이스의 데이터를 읽을 수 있습니다.