IT’s Portfolio

[Lecture] DataBase - Day 10 볞묞

Development Study

[Lecture] DataBase - Day 10

f1r3_r41n 2023. 6. 5. 23:42
728x90
반응형

🖥 DataBase - Day 10

👉🏻 [Chapter 10] 회복곌 병행 제얎

[01] 튞랜잭션

  • 1.1 튞랜잭션의 개념
    • 튞랜잭션(transaction) : 작업 하나륌 수행하는 데 필요한 데읎터베읎슀의 연산듀을 몚아놓은 것
      • 녌늬적읞 작업의 닚위
      • 작업 수행에 필요한 SQL 묞듀의 몚임
        • insert, delete, update 묞의 싀행 ꎀ늬
      • 장애가 발생했을 때 데읎터륌 복구하는 작업읎나 병행 제얎 작업을 위한 쀑요한 닚위
      • 데읎터베읎슀의 묎결성곌 음ꎀ성을 볎장하렀멎 작업을 수행하는 데 필요한 연산듀을 하나의 튞랜잭션윌로 제대로 정의하고 ꎀ늬핎알 핹
  • 1.2 튞랜잭션의 특성(ACID 특성)
    • 원자성(atomicity)
      • 튞랜잭션을 구성하는 연산듀읎 몚두 정상적윌로 싀행되거나 하나도 싀행되지 ì•Šì•„ì•Œ 한닀는 all-or-nothing 방식을 의믞
      • 튞랜잭션을 수행하닀가 장애가 발생하여 작업을 완료하지 못했닀멎, 지ꞈ까지 싀행한 연산 처늬륌 몚두 췚소하고 데읎터베읎슀륌 튞랜잭션 작업 전의 상태로 되돌렀 튞랜잭션의 원자성을 볎장핎알 핹
      • 원자성을 볎장하렀멎 장애가 발생했을 때 데읎터베읎슀의 원래 상태로 복구하는 회복 Ʞ능 필요
      • 원자성은 DBMS의 Ʞ능 쀑 회복 Ʞ능에 대응핚
    • 음ꎀ성(consistency)
      • 튞랜잭션읎 성공적윌로 수행된 후에도 데읎터베읎슀가 음ꎀ된 상태륌 유지핎알 핚을 의믞
      • 음ꎀ성은 DBMS의 Ʞ능 쀑 병행 제얎 Ʞ능에 대응핚
    • 격늬성(isolation) = 고늜성
      • 수행 쀑읞 튞랜잭션읎 완료될 때까지 튞랜잭션읎 생성한 쀑간 연산 결곌에 닀륞 튞랜잭션듀읎 접귌할 수 없음을 의믞
      • 격늬성의 볎장을 위핎서는 튞랜잭션듀읎 동시에 수행되는 것처럌 느끌멎서도 순서대로 하나씩 수행되는 것처럌 정확하고 음ꎀ된 결곌륌 얻을 수 있도록 제얎하는 Ʞ능 필요
      • 격늬성은 DBMS의 Ʞ능 쀑 병행 제얎 Ʞ능에 대응핚
    • 지속성(durability) = 영속성
      • 튞랜잭션읎 성공적윌로 완료된 후 데읎터베읎슀에 반영한 수행 결곌는 ì–Žë– í•œ 겜우에도 손싀되지 않고 영구적읎얎알 핚을 의믞
      • 지속성을 볎장하렀멎 시슀템에 장애가 발생했을 때 데읎터베읎슀륌 원래 상태로 복구하는 회복 Ʞ능 필요
      • 지속성은 DBMS의 Ʞ능 쀑 회복 Ʞ능에 대응핚
  • 1.3 튞랜잭션의 연산
    • commit 연산
      • 튞랜잭션읎 성공적윌로 수행되었음을 ì„ ì–ž(작업 완료)
      • commit 연산읎 싀행된 후에알 튞랜잭션의 수행 결곌가 데읎터베읎슀에 반영되얎 데읎터베읎슀가 음ꎀ된 상태륌 지속적윌로 유지하게 됚
    • rollback 연산
      • 튞랜잭션을 수행하는 데 싀팚했음을 ì„ ì–ž(작업 췚소)
      • rollback 연산읎 싀행되멎 튞랜잭션읎 지ꞈ까지 싀행한 연산의 결곌가 췚소되고 튞랜잭션읎 수행되Ʞ 전의 상태로 돌아감
  • 1.4 튞랜잭션의 상태
    • 활동 상태(active)
      • 튞랜잭션읎 수행되Ʞ 시작하여 현재 수행 쀑읞 상태
    • 부분 완료 상태(partially committed)
      • 튞랜잭션의 마지막 연산읎 싀행된 직후의 상태
    • 완료 상태(committed)
      • 튞랜잭션읎 성공적윌로 완료되얎 commit 연산을 싀행한 상태
      • 튞랜잭션읎 완료 상태가 되멎 튞랜잭션읎 수행한 최종 결곌륌 데읎터베읎슀에 반영하고, 데읎터베읎슀가 새로욎 음ꎀ된 상태가 되멎서 튞랜잭션읎 종료됚
    • 싪팚 상태(failed)
      • 장애가 발생하여 튞랜잭션의 수행읎 쀑닚된 상태
    • 철회 상태(aborted)
      • 튞랜잭션을 수행하는 데 싀팚하여 rollback 연산을 싀행한 상태
      • 지ꞈ까지 싀행한 튞랜잭션의 연산을 몚두 췚소하고 튞랜잭션읎 수행되Ʞ 전의 데읎터베읎슀 상태로 되돌늬멎서 튞랜잭션읎 종료됚
      • 철회 상태로 종료된 튞랜잭션은 상황에 따띌 닀시 수행되거나 폐Ʞ됚

[02] 장애와 회복

  • 2.1 장애의 유형
    • 장애(failure) : 시슀템읎 제대로 동작하지 않는 상태
      • 튞랜잭션 장애 : 튞랜잭션 수행 쀑 였류가 발생하여 정상적윌로 수행을 계속할 수 없는 상태
        • 튞랜잭션의 녌늬적 였류
        • 잘못된 데읎터 입력
        • 시슀템 자원의 곌닀 사용 요구
        • 처늬 대상 데읎터의 부재
      • 시슀템 장애 : 하드웚얎의 결핚윌로 정상적윌로 수행을 계속할 수 없는 상태
        • 하드웚얎 읎상윌로 메읞 메몚늬에 저장된 정볎가 손싀되거나 교착 상태가 발생한 겜우
      • 믞디얎 장애 : 디슀크 장치의 결핚윌로 디슀크에 저장된 데읎터베읎슀의 음부 혹은 전첎가 손상된 상태
        • 디슀크 헀드의 손상읎나 고장
  • 2.2 데읎터베읎슀의 저장 연산
    • 저장 장치의 종류
      • 휘발성(volatile) 저장 장치 = 소멞성 : 장애가 발생하멎 저장된 데읎터가 손싀됚
        • 메읞 메몚늬
      • 비휘발성(nonvolatile) 저장 장치 = 비소멞성 : 장애가 발생핎도 저장된 데읎터가 손싀되지 않음(저장 장치 자첎에 읎상읎 발생하멎 데읎터가 손싀될 수 있음)
        • 디슀크
        • 자Ʞ 테읎프
        • CD/DVD
      • 안정(stable) 저장 장치 : 비휘발성 저장 장치륌 읎용핎 데읎터 복사볞 여러 개륌 만드는 방법윌로, ì–Žë–€ 장애가 발생핎도 데읎터가 손싀되지 않고 데읎터륌 영구적윌로 저장할 수 있음
    • 디슀크와 메읞 메몚늬 간의 데읎터 읎동의 필요성
      • 음반적윌로 데읎터베읎슀는 비휘발성 저장 장치읞 디슀크에 상죌핚
      • 튞랜잭션읎 데읎터베읎슀의 데읎터륌 처늬하렀멎 데읎터륌 디슀크에서 메읞 메몚늬로 가젞와 읎륌 처늬한 후 ê·ž 결곌륌 닀시 디슀크로 볎낎는 작업읎 필요핚
    • 디슀크와 메읞 메몚늬 간의 데읎터 읎동
      • 랔록(block) 닚위 수행
        • 디슀크에 있는 랔록을 디슀크 랔록
        • 메읞 메몚늬에 있는 랔록을 버퍌 랔록
      • input 연산
        • input(X) : 디슀크 랔록에 저장되얎 있는 데읎터 X륌 메읞 메몚늬 버퍌 랔록윌로 읎동시킀는 연산
      • output 연산
        • output(X) : 메읞 메몚늬 버퍌 랔록에 있는 데읎터 X륌 디슀크 랔록윌로 읎동시킀는 연산
    • 메읞 메몚늬의 버퍌 랔록곌 프로귞랚 변수 간의 데읎터 읎동
      • 응용 프로귞랚에서 튞랜잭션의 수행을 지시하멎 메읞 메몚늬 버퍌 랔록에 있는 데읎터륌 프로귞랚의 변수로 가젞였고, 데읎터 처늬 결곌륌 저장한 변수 값을 메읞 메몚늬 버퍌 랔록윌로 옮Ʞ는 작업읎 추가로 필요핚
      • read 연산
        • read(X) : 메읞 메몚늬 버퍌 랔록에 저장되얎 있는 데읎터 X륌 프로귞랚의 변수로 읜얎였는 연산
      • write 연산
        • write(X) : 프로귞랚의 변수 값을 메읞 메몚늬 버퍌 랔록에 있는 데읎터 X에 Ʞ록하는 연산
  • 2.3 회복 Ʞ법
    • 회복(recovery) : 데읎터베읎슀에 장애가 발생했을 때 장애가 발생하Ʞ 전의 몚순읎 없고 음ꎀ된 상태로 복구시킀는 것
      • 회복 ꎀ늬자(recovery manager)
        • 장애 발생을 탐지하고, 장애가 탐지되멎 데읎터 베읎슀 복구 Ʞ능을 제공
      • 튞랜잭션의 특성을 볎장하고, 데읎터베읎슀륌 음ꎀ된 상태로 유지하Ʞ 위핎 필수적읞 Ʞ능
    • 회복을 위한 연산
      • 데읎터베읎슀 회복의 핵심 원늬는 데읎터 쀑복
        • 덀프(dump) : 데읎터베읎슀 전첎륌 닀륞 저장 장치에 죌Ʞ적윌로 복사하는 방법
        • 로귞(log) : 데읎터베읎슀에서 변겜 연산읎 싀행될 때마닀 데읎터륌 변겜하Ʞ 읎전 값곌 변겜한 읎후의 값을 별도의 파음에 Ʞ록하는 방법
      • redo(재싀행) 연산
        • 가장 최귌에 저장한 데읎터베읎슀 복사볞을 가젞옚 후 로귞륌 읎용핎 복사볞읎 만듀얎진 읎후에 싀행된 몚든 변겜 연산을 재싀행하여 장애가 발생하Ʞ 직전의 데읎터베읎슀 상태로 복구(전반적윌로 손상된 겜우에 죌로 사용)
      • undo(췚소) 연산
        • 로귞륌 읎용핎 지ꞈ까지 싀행된 몚든 변겜 연산을 췚소하여 데읎터베읎슀륌 원래의 상태로 복구(변겜 쀑읎었거나 읎믞 변겜된 낎용만 신뢰성을 잃은 겜우에 죌로 사용)
    • 로귞 파음
      • 데읎터베읎슀에 대한 변겜 연산곌 ꎀ렚하여, 데읎터륌 변겜하Ʞ 읎전의 값곌 변겜한 읎후의 값을 Ʞ록한 것
        • 레윔드 닚위로 튞랜잭션의 수행곌 핚께 Ʞ록
      • 로귞 레윔드의 종류
        • $<T_i$ , start $>$ : 튞랜잭션 $T_i$가 수행을 시작했음을 Ʞ록
        • $<T_i, X$, old_value, new_value $>$ : 튞랜잭션 $T_i$가 데읎터 $X$륌 읎전 값에서 새로욎 값윌로 변겜하는 연산을 싀행했음을 Ʞ록
        • $<T_i$ , commit $>$ : 튞랜잭션 $T_i$가 성공적윌로 완료되었음을 Ʞ록
        • $<T_i$ , abort $>$ : 튞랜잭션 $T_i$가 철회되었음을 Ʞ록
    • 데읎터베읎슀 회복 Ʞ법
      • 로귞 회복 Ʞ법
        • 슉시 갱신(immediate update) 회복 Ʞ법
          • 튞랜잭션 수행 쀑에 데읎터륌 변겜한 연산의 결곌륌 데읎터베읎슀에 슉시 반영
          • 장애 발생에 대비하Ʞ 위핎 데읎터 변겜에 대한 낎용을 로귞 파음에도 Ʞ록
            • 데읎터 변겜 연산읎 싀행되었을 때 로귞 파음에 로귞 레윔드륌 뚌저 Ʞ록한 후 데읎터베읎슀에 변겜 연산을 반영
          • 장애 발생 시점에 따띌 redo 나 undo 연산을 싀행하여 데읎터베읎슀 복구
          • undo 연산 싀행
            • 튞랜잭션읎 완료되Ʞ 전에 장애가 발생한 겜우
          • redo 연산 싀행
            • 튞랜잭션읎 완료된 후에 장애가 발생한 겜우
        • 지연 갱신(deferred update) 회복 Ʞ법
          • 튞랜잭션읎 수행되는 동안에는 데읎터 변겜 연산의 결곌륌 데읎터베읎슀에 슉시 반영하지 않고 로귞 파음에만 Ʞ록핎두었닀가, 튞랜잭션읎 부분 완료된 후에 로귞에 Ʞ록된 낎용을 읎용핎 데읎터베읎슀에 한 번에 반영
          • 튞랜잭션읎 수행되는 동안 장애가 발생할 겜우 로귞에 Ʞ록된 낎용을 버늬Ʞ만 하멎 데읎터베읎슀가 원래 상태륌 귞대로 유지하게 됚
          • undo 연산은 필요 없고 redo 연산만 필요핚
          • 로귞 레윔드에 변겜 읎전 값을 Ʞ록할 필요 없음
            • $<T_i, X$, new_value $>$
          • 로귞 낎용을 묎시하고 버늌
            • 튞랜잭션읎 완료되Ʞ 전에 장애가 발생한 겜우
          • redo 연산 싀행
            • 튞랜잭션읎 완료된 후에 장애가 발생한 겜우
      • 검사 시점 회복 Ʞ법
        • 로귞 Ʞ록을 읎용하되, 음정 시간 간격윌로 검사 시점(checkpoint) 을 만듩
          • 검사 시점읎 되멎 메읞 메몚늬에 있는 몚든 로귞 레윔드륌 안정 저장 장치에 있는 로귞 파음에 Ʞ록하고, 튞랜잭션의 데읎터 변겜 낎용을 데읎터베읎슀에 반영
          • 검사 시점을 표시하는 <checkpoint L> 형식의 로귞 레윔드륌 로귞 파음에 Ʞ록
            • <checkpoint L> 에서 L은 현재 싀행되고 있는 튞랜잭션의 늬슀튞륌 의믞
        • 장애 발생 시 로귞 파음에서 가장 최귌의 <checkpoint L> 로귞 레윔드륌 ì°Ÿì•„ ê·ž 읎후의 로귞 Ʞ록에만 회복 작업을 수행
          • 회복 작업은 슉시 갱신 회복 Ʞ법읎나 지연 갱신 회복 Ʞ법을 읎용핎 수행
        • 회복 작업의 범위가 검사 시점윌로 정핎지므로 불필요한 회복 작업을 수행하지 않아 데읎터베읎슀 회복 시간읎 닚축됚
      • 믞디얎 회복 Ʞ법
        • 디슀크에 발생할 수 있는 장애에 대비한 회복 Ʞ법
        • 덀프(dump) 읎용
          • 전첎 데읎터베읎슀의 낎용을 음정 죌Ʞ마닀 닀륞 안전한 저장 장치에 복사
        • 디슀크 장애가 발생하멎 가장 최귌에 복사핎둔 덀프륌 읎용핎 장애 발생 읎전의 음ꎀ된 데읎터베읎슀 상태로 복구 후 필요에 따띌 로귞의 낎용을 토대로 redo 연산 싀행

[03] 병행 제얎

  • 3.1 병행 수행곌 병행 제얎
    • 병행 수행(concurrency)
      • 여러 사용자가 데읎터베읎슀륌 동시에 공유할 수 있도록 여러 개의 튞랜잭션읎 동시에 수행
      • 여러 튞랜잭션읎 찚례로 번갈아 수행되는 읞터늬빙(interleaving) 방식윌로 진행됚
    • 병행 제얎(concurrency control) or 동시성 제얎
      • 병행 수행 시 같은 데읎터에 접귌하여 연산을 싀행핎도 묞제가 발생하지 않고 정확한 수행 결곌륌 얻을 수 있도록 튞랜잭션의 수행을 제얎하는 것
  • 3.2 병행 수행의 묞제
    • 갱신 분싀(lost update)
      • 하나의 튞랜잭션읎 수행한 데읎터 변겜 연산의 결곌륌 닀륞 튞랜잭션읎 덮얎썚 변겜 연산읎 묎횚화되는 것
      • 여러 튞랜잭션읎 동시에 수행되더띌도 갱신 분싀 묞제가 발생하지 않고 순찚적윌로 수행한 것곌 같은 결곌 값을 얻을 수 있얎알 정확한 병행 수행읎띌 할 수 있음
    • 몚순성(inconsistency)
      • 하나의 튞랜잭션읎 여러 개의 데읎터 변겜 연산을 싀행할 때 음ꎀ성 없는 상태의 데읎터베읎슀에서 데읎터륌 가젞와 연산을 싀행핚윌로썚 몚순된 결곌가 발생하는 것
      • 여러 튞랜잭션읎 동시에 수행되더띌도 몚순성의 묞제가 발생하지 않고 순찚적윌로 수행한 것곌 같은 결곌 값을 얻을 수 있얎알 정확한 병행 수행읎띌 할 수 있음
    • 연쇄 복귀(cascading rollback)
      • 튞랜잭션읎 완료되Ʞ 전에 장애가 발생하여 rollback 연산을 수행하멎, 읎 튞랜잭션읎 장애 발생 전에 변겜한 데읎터륌 가젞가 변겜 연산을 싀행한 또 닀륞 튞랜잭션에도 rollback 연산을 연쇄적윌로 싀행핎알 한닀는 것
      • 여러 튞랜잭션읎 동시에 수행되더띌도 연쇄 복귀의 묞제가 발생하지 않고 순찚적윌로 수행한 것곌 같은 결곌 값을 얻을 수 있얎알 정확한 병행 수행읎띌 할 수 있음
  • 3.3 튞랜잭션 슀쌀쀄
    • 튞랜잭션에 포핚되얎 있는 연산듀을 수행하는 순서
    • 직렬 슀쌀쀄(serial schedule)
      • 읞터늬빙 방식을 읎용하지 않고 튞랜잭션별로 연산듀을 순찚적윌로 싀행시킀는 것
      • 특징
        • 튞랜잭션읎 직렬 슀쌀쀄에 따띌 수행되멎, 몚든 튞랜잭션읎 완료될 때까지 닀륞 튞랜잭션의 방핎륌 받지 않고 독늜적윌로 수행되므로 항상 몚순읎 없는 정확한 결곌륌 얻음
        • 닀양한 직렬 슀쌀쀄읎 만듀얎질 수 있고, 직렬 슀쌀쀄마닀 데읎터베읎슀에 반영되는 최종 결곌가 달띌질 수 있지만 직렬 슀쌀쀄의 결곌는 몚두 정확핚
        • 각 튞랜잭션을 독늜적윌로 수행하Ʞ 때묞에 튞랜잭션듀읎 동시에 수행되는 병행 수행읎띌고 할 수 없음
    • 비직렬 슀쌀쀄(nonserial schedule)
      • 읞터늬빙 방식을 읎용하여 튞랜잭션을 병행핎서 수행시킀는 것
      • 특징
        • 튞랜잭션읎 돌아가멎서 연산듀을 싀행하Ʞ 때묞에 하나의 튞랜잭션읎 완료되Ʞ 전에 닀륞 튞랜잭션의 연산읎 싀행될 수 있음
        • 비직렬 슀쌀쀄에 따띌 여러 튞랜잭션을 병행 수행하멎 갱신 분싀, 몚순성, 연쇄 복귀 등의 묞제가 발생할 수 있얎 최종 수행 결곌의 정확성을 볎장할 수 없음
        • 닀양한 비직렬 슀쌀쀄읎 만듀얎질 수 있고, ê·ž 쀑 잘못된 결곌륌 생성하는 비직렬 슀쌀쀄도 있음
    • 직렬 가능 슀쌀쀄(serializable schedule)
      • 직렬 슀쌀쀄에 따띌 수행한 것곌 같읎 정확한 결곌륌 생성하는 비직렬 슀쌀쀄
      • 특징
        • 읞터늬빙 방식을 읎용하여 여러 튞랜잭션을 병행 수행하멎서도 정확한 결곌륌 얻을 수 있음
        • 직렬 가능 슀쌀쀄을 읎용핎 튞랜잭션을 병행 수행핎알 하지만 직렬 가능 슀쌀쀄읞지 여부륌 판당하는 음은 쉜지 않음
          • 직렬 가능성을 볎장하는 병행 제얎 Ʞ법을 사용하는 것읎 음반적임
  • 3.4 병행 제얎 Ʞ법
    • 병행 수행하멎서도 정확한 결곌륌 얻을 수 있는 직렬 가능성을 볎장받Ʞ 위한 Ʞ법
    • Ʞ볞 원늬
      • 몚든 튞랜잭션읎 따륎멎 직렬 가능성읎 볎장되는 나늄의 규앜을 정의하고, 튞랜잭션듀읎 읎 규앜을 따륎도록 하는 것
    • 로킹(locking) Ʞ법
      • 한 튞랜잭션읎 뚌저 접귌한 데읎터에 대한 연산을 몚두 마칠 때까지, 핎당 데읎터에 닀륞 튞랜잭션읎 접귌하지 못하도록 상혞 배제(mutual exclusion) 하여 직렬 가능성을 볎장하는 것
      • 병행 수행되는 튞랜잭션듀읎 같은 데읎터에 동시에 접귌하지 못하도록 lock 곌 unlock 연산을 읎용핎 제얎
        • lock : 튞랜잭션읎 사용할 데읎터에 대한 독점권을 가지Ʞ 위핎 사용
        • unlock : 튞랜잭션읎 데읎터에 대한 독점권을 반납하Ʞ 위핎 사용
      • Ʞ볞 로킹 규앜
        • 데읎터에 접귌하는 연산을 싀행하렀멎 뚌저 핎당 데읎터에 lock 연산을 싀행하여 독점권을 획득핎알 핹
          • read 또는 write 연산을 싀행하Ʞ 전에 반드시 lock 연산 싀행
        • 닀륞 튞랜잭션읎 읎믞 lock 연산을 싀행한 데읎터에는 닀시 lock 연산읎 싀행될 수 없음
        • 독점권을 획득한 데읎터에 대한 몚든 연산을 수행하고 나멎 unlock 연산을 싀행핎서 독점권을 반납핎알 핹
      • 로킹 닚위
        • lock 연산을 싀행하는 대상 데읎터의 크Ʞ
        • 전첎 데읎터베읎슀부터 작게는 데읎터베읎슀륌 구성하는 속성, 늎레읎션읎나 튜플까지도 가능핚
        • 로킹 닚위가 컀질수록 병행성은 낮아지지만 제얎가 쉬움
        • 로킹 닚위가 작아질수록 제얎가 얎렵지만 병행성은 높아짐
      • Ʞ볞 로킹 규앜의 횚윚성을 높읎Ʞ 위한 방법 : 같은 데읎터에 튞랜잭션듀읎 동시에 read 연산을 싀행하는 것을 허용
        • lock 연산의 두 가지 종류
          • 공용(shared) lock : 데읎터에 대한 사용권을 여러 튞랜잭션읎 핚께 가질 수 있음
            • 튞랜잭션읎 데읎터에 대핮 공용 lock 연산을 싀행하멎, 핎당 데읎터에 read 연산을 싀행할 수 있지만 write 연산은 싀행 불가
            • 핎당 데읎터에 닀륞 튞랜잭션도 공용 lock 연산을 동시에 싀행 가능
          • 전용(exclusive) lock : 전용 lock 연산을 싀행한 튞랜잭션만 핎당 데읎터에 대한 독점권을 가질 수 있음
            • 튞랜잭션읎 데읎터에 전용 lock 연산을 싀행하멎 핎당 데읎터에 read 연산곌 write 연산을 몚두 싀행 가능
            • 핎당 데읎터에 닀륞 튞랜잭션은 공용읎든 전용읎든 ì–Žë–€ lock 연산도 싀행 불가
          • lock 연산의 양늜성
            • 서로 닀륞 튞랜잭션읎 같은 데읎터에 공용 lock 연산을 동시에 싀행 가능
            • 닀륞 튞랜잭션읎 전용 lock 연산을 싀행한 데읎터에는 공용 lock, 전용 lock 몚두 싀행 불가
    • 2닚계 로킹 규앜(2PLP; 2 Phase Locking Protocol)
      • Ʞ볞 로킹 규앜의 묞제륌 핎결하고 튞랜잭션의 직렬 가능성을 볎장하Ʞ 위핎 lock 곌 unlock 연산의 수행 시점에 대한 새로욎 규앜을 추가한 것
      • 방법
        • 튞랜잭션읎 lock 곌 unlock 연산을 확장 닚계와 축소 닚계로 나누얎 싀행
          • 확장 닚계 : 튞랜잭션읎 lock 연산만 싀행할 수 있고, unlock 연산은 싀행할 수 없는 닚계
          • 축소 닚계 : 튞랜잭션읎 unlock 연산만 싀행할 수 있고, lock 연산은 싀행할 수 없는 닚계
        • 튞랜잭션읎 처음 수행되멎 확장 닚계로 듀얎가 lock 연산만 싀행 가능
        • unlock 연산을 싀행하멎 축소 닚계로 듀얎가 unlock 연산만 싀행 가능
        • 튞랜잭션은 첫 번짞 unlock 연산 싀행 전에 필요한 몚든 lock 연산을 싀행핎알 핹
      • 2닚계 로킹 규앜을 적용하멎 튞랜잭션 슀쌀쀄의 직렬 가능성을 볎장할 수 있지만 교착 상태(deadlock) 가 발생할 수 있음
        • 교착 상태(deadlock)
          • 튞랜잭션듀읎 상대가 독점하고 있는 데읎터에 unlock 연산읎 싀행되Ʞ륌 서로 Ʞ닀늬멎서 수행을 쀑닚하고 있는 상태
          • 교착 상태가 발생하지 않도록 예방하거나, 발생 시 빚늬 탐지하여 필요한 조치륌 ì·ší•Žì•Œ 핹
728x90
반응형

'Development Study' 칎테고늬의 닀륞 Ꞁ

[Lecture] DataBase - Day 11  (0) 2023.06.12
[Lecture] Data Communication - Finals Summary  (0) 2023.06.11
[Lecture] Data Communication - Day 12  (0) 2023.06.01
[Lecture] Data Communication - Day 11  (0) 2023.06.01
[Lecture] Data Communication - Day 9~10  (0) 2023.05.28
Comments