λͺ©μ°¨
Transaction Processing
- λ°μ΄ν°μ 곡μ μ λ€μ μ¬μ©μ νΈλμμ
μ²λ¦¬
- μ¬λ¬ μ¬μ©μκ° (λμμ) λμΌν λ°μ΄ν°λ² μ΄μ€ 곡μ κ°λ₯νλλ‘ μ§μ
- λμμ μ¬μ©νλλΌλ μΌκ΄μ±(consistency)μ 보μ₯νκΈ° μν λμμ± μ μ΄ (concurrency control) κΈ°λ₯ μ 곡
νΈλμμ
μ μ μ
- λ°μ΄ν°λ² μ΄μ€μ μνλ₯Ό λ³νμν€λ νλμ λ
Όλ¦¬μ κΈ°λ₯μ μννκΈ° μν μμ
μ λ¨μ νλ‘μΈμ€ (μ: κ³μ’μ΄μ²΄, μ’μμμ½)
- μ₯μ κ° μΌμ΄λ λ λ°μ΄ν°λ₯Ό 볡ꡬνλ μμ
μ λ¨μκ° λ¨
- λμμ κ°μ λ°μ΄ν°λ₯Ό λ€λ£° λκ° μ΄ μμ
μ μλ‘ λΆλ¦¬νλ λ¨μκ° λ¨
- νλμ μμ
μ μννλ λ° νμν λ°μ΄ν°λ² μ΄μ€μ μ°μ°λ€μ λͺ¨μλμ κ² (νκΊΌλ²μ λͺ¨λ μνλμ΄μΌ ν μΌλ ¨μ μ°μ°λ€)
νΈλμμ
μ μ£Όμ μ±μ§: ACID
- Atomicity (μμμ±)
- νΈλμμ
κ³Ό κ΄λ ¨λ μμ
λ€μ μ λΆ μ μμ μΌλ‘ μ€νλκ±°λ, μμ νλλ μ€νλμ§ μμμΌ νλ€. (all or nothing)
- Consistency (μΌκ΄μ±)
- νΈλμμ
μ΄ μ±κ³΅μ μΌλ‘ μνλ νμλ, λ°μ΄ν°λ² μ΄μ€λ νμ μΌκ΄λ μνλ₯Ό μ μ§ν΄μΌ νλ€.
- Isolation (격리μ±, κ³ λ¦½μ±)
- νμ¬ μν μ€μΈ νΈλμμ
μ΄ μλ£λ λκΉμ§ νΈλμμ
μ΄ μμ±ν μ€κ° μ°μ° κ²°κ³Όμ, λ€λ₯Έ νΈλμμ
λ€μ΄ μ κ·Όν μ μμ΄μΌ νλ€.
- Durability (μ§μμ±, μμμ±)
- μ±κ³΅μ μΌλ‘ μνλ νΈλμμ
μ μμ€λμ§ μκ³ , μꡬμ μΌλ‘ λ°μλμ΄μΌ νλ€.
μμμ±μ μν μ°μ°
- Commit (μλ£)
- νΈλμμ
μ μ±κ³΅μ μΈ μ€ν
- μΌκ΄μ± μλ λ°μ΄ν°λ² μ΄μ€ μν (Consistency)
- μꡬμ μΈ κ°±μ
- κ°±μ λ λ°μ΄ν°μ μμμ±μ 보μ₯ (Durability)
- Rollback (μ·¨μ, 볡κ·)
- νΈλμμ
μ€νμ μ€ν¨
- λͺ¨μλ λ°μ΄ν°λ² μ΄μ€ μν
- μνν λͺ¨λ μ°μ° κ²°κ³Όμ UNDO
MySQLμ autocommit, commit, rollback
mysql> SHOW VARIABLES LIKE "%commit%";
+-----------------------------------------+-------------------+
| Variable_name | Value |
+-----------------------------------------+-------------------+
| autocommit | ON |
| binlog_group_commit_sync_delay | 0 |
| binlog_group_commit_sync_no_delay_count | 0 |
| binlog_order_commits | ON |
| innodb_api_bk_commiTinterval | 5 |
| innodb_commit_concurrency | 0 |
| innodb_flush_log_at_trx_commit | 1 |
| original_commit_timestamp | 36028797018963968 |
| replica_preserve_commit_order | ON |
| replication_sender_observe_commit_only | OFF |
| slave_preserve_commit_order | ON |
+-----------------------------------------+-------------------+
11 rows in set (0.06 sec)
mysql> SET autocommit = 0;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE "%commit%";
+-----------------------------------------+-------------------+
| Variable_name | Value |
+-----------------------------------------+-------------------+
| autocommit | OFF |
| binlog_group_commit_sync_delay | 0 |
| binlog_group_commit_sync_no_delay_count | 0 |
| binlog_order_commits | ON |
| innodb_api_bk_commiTinterval | 5 |
| innodb_commit_concurrency | 0 |
| innodb_flush_log_at_trx_commit | 1 |
| original_commit_timestamp | 36028797018963968 |
| replica_preserve_commit_order | ON |
| replication_sender_observe_commit_only | OFF |
| slave_preserve_commit_order | ON |
+-----------------------------------------+-------------------+
11 rows in set (0.00 sec)
mysql> CREATE TABLE customer (a INT, b CHAR (20), INDEX (a));
Query OK, 0 rows affected (0.00 sec)
mysql> -- Do a transaction with autocommit turned on.
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO customer VALUES (10, 'Heikki');
Query OK, 1 row affected (0.00 sec)
mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)
mysql> -- Do another transaction with autocommit turned off.
mysql> SET autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysq1> INSERT INTO customer VALUES (15, 'John');
Query OK, 1 row affected (0.00 sec)
mysq1> INSERT INTO customer VALUES (20, 'Paul');
Query OK, 1 row affected (0.00 sec)
mysql> DELETE FROM customer WHERE b = 'Heikki';
Query OK, 1 row affected (0.00 sec)
mysql> -- Now we undo those last 2 inserts and the delete.
mysql> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM customer;
+------+---------+
| a | b |
+------+---------+
| 10 | Heikki |
+------+---------+
1 row in set (0.00 sec)
νΈλμμ
μν
- νΈλμμ
μ μνλ λ€μ―κ°μ§ μν μ€ νλμ μνκ² λλ€.
- νλ μν
- νΈλμμ
μ΄ μνλκΈ° μμνμ¬ νμ¬ μν μ€μΈ μν
- λΆλΆ μλ£ μν
- νΈλμμ
μ λ§μ§λ§ μ°μ°μ΄ μ€νλ μ§νμ μν.
- λͺ¨λ μ°μ°μ μ²λ¦¬κ° λλ¬μ§λ§ νΈλμμ
μ΄ μνλ μ΅μ’
κ²°κ³Όλ₯Ό λ°μ΄ν°λ² μ΄μ€μ μμ§ λ°μνμ§ μμ μν
- μλ£ μν
- μ±κ³΅μ μΌλ‘ μλ£λμ΄ μ»€λ° μ°μ°μ μ€νν μν
- μ€ν¨ μν
- μ₯μ κ° λ°μνμ¬ νΈλμμ
μ μνμ΄ μ€λ¨λ μν
- μ² ν μν
- νΈλμμ
μ μννλλ° μ€ν¨νμ¬ λ‘€λ°±μ°μ°μ μ€νν μν
- νλ‘κ·Έλ¨ : νλ μ΄μμ νΈλμμ
μ ν¬ν¨
- νλ‘κ·Έλ¨μ μ±κ³΅μ μΈ μν = λͺ¨λ νΈλμμ
μ μ±κ³΅μ μΈ μλ£
νΈλμμ
μ μ
- κ³μ’ Aμμ κ³μ’ Bλ‘ 100μμ μ΄μ²΄
-
BEGIN_TRANS;
UPDATE ACCOUNT SET Balance = Balance - 100 WHERE Accnt = 'A';
IF ERROR GO TO UNDO;
UPDATE ACCOUNT SET Balance = Balance + 100 WHERE Accnt = 'B';
IF ERROR GO TO UNDO;
COMMIT TRANS;
GO TO FINISH
UNDO:
ROLLBACK TRANS;
FINISH:
RETURN;
END_TRANS;
μ€ν¨ μνμ μλ νΈλμμ
- λ°μ΄ν°λ² μ΄μ€ μνλ₯Ό νΈλμμ
μ€νμ΄ μμλκΈ° μ§μ μ μνλ‘ νμ μν€κΈ° μν΄ Rollback μ°μ° μ€ν
- κ·Έ λ€μμ μ² ν μνμ νΈλμμ
μΌλ‘ λμ΄ μ’
λ£
- μ΄λ μ·¨ν μ μλ μ‘°μΉ
- νΈλμμ
μ μ¬μμ : νλμ¨μ΄λ μμ€ν
μννΈμ¨μ΄ μ€λ₯λ‘ μΈν΄ μ² νλ νΈλμμ
μ λ€μ μλ‘μ΄ νΈλμμ
μΌλ‘ μ·¨κΈλμ΄ μ¬μμ
- νΈλμμ
μ νκΈ° : νΈλμμ
μ λ΄λΆμ μ€λ₯λ‘ μ¬μμ±μ ν΄μΌ νλ μ§ μνλ λ°μ΄ν°κ° λ°μ΄ν°λ² μ΄μ€μ μλ κ²½μ°μ μ·¨νλ μ‘°μΉ
μ₯μ
- μμ€ν
μ΄ μ ν΄μ§ λͺ
μΈλλ‘ μλνμ§ μλ μν
- μμΈ : νλμ¨μ΄ κ²°ν¨, μννΈμ¨μ΄μ λ
Όλ¦¬μ€λ₯, μ¬λμ μ€μ
- μ₯μ μ μ ν
- νΈλμμ
μ₯μ : λ
Όλ¦¬μ μ€λ₯, μ
λ ₯ λ°μ΄ν°μ λΆλ
- μμ€ν
μ₯μ : νλμ¨μ΄μ μ€λμ
- λ―Έλμ΄ μ₯μ : λμ€ν¬ ν€λ λΆκ΄΄ λλ κ³ μ₯
μ μ₯μ₯μΉμ μ₯μ
- νλ°μ± μ μ₯ μ₯μΉ
- μ₯μ κ° λ°μνλ©΄ μ μ₯λ λ°μ΄ν°κ° μμ€λ¨ (λ©μΈ λ©λͺ¨λ¦¬)
- λΉνλ°μ± μ μ₯ μ₯μΉ
- μ₯μ κ° λ°μν΄λ μ μ₯λ λ°μ΄ν°κ° μμ€λμ§ μμ.
- λ¨, λμ€ν¬ ν€λ μμ κ°μ μ μ₯ μ₯μΉ μ체μ μ΄μμ΄ λ°μνλ©΄ λ°μ΄ν°κ° μμ€λ μλ μμ
- μμ μ μ₯ μ₯μΉ
- λΉνλ°μ± μ μ₯ μ₯μΉλ₯Ό μ΄μ©ν΄ λ°μ΄ν° 볡μ¬λ³Έ μ¬λ¬ κ°λ₯Ό λ§λλ λ°©λ²μΌλ‘, μ΄λ€ μ₯μ κ° λ°μν΄λ λ°μ΄ν°κ° μμ€λμ§ μκ³ λ°μ΄ν°λ₯Ό μꡬμ μΌλ‘ μ μ₯ν μ μμ
ν볡 (recovery)
- λ°μ΄ν°λ² μ΄μ€λ₯Ό μ₯μ λ°μ μ΄μ μ μΌκ΄λ μν (consistent state)λ‘ λ³΅μμν€λ κ²
- μΌκ΄λ μν : λ°μ΄ν°λ² μ΄μ€μ μ€λ₯κ° μλ μν, λ°μ΄ν°λ² μ΄μ€μ λ΄μ©μ λͺ¨μμ΄ μλ μν
- κΈ°λ³Έμ리 : μ€λ³΅(redundancy)
ν볡μ μν μ°μ°
- λ€ν (dump)
- full backup, λ°μ΄ν°λ² μ΄μ€ μ 체λ₯Ό λ€λ₯Έ μ μ₯ μ₯μΉμ μ£ΌκΈ°μ μΌλ‘ 볡μ¬νλ λ°©λ² (archive)
- λ‘κ·Έ (log, journal)
- λ°μ΄ν°λ² μ΄μ€μμ λ³κ²½ μ°μ°μ΄ μ€νλ λλ§λ€, λ°μ΄ν°λ₯Ό λ³κ²½νκΈ° μ΄μ κ°κ³Ό λ³κ²½ν μ΄νμ κ°μ λ³λμ νμΌμ κΈ°λ‘νλ λ°©λ²
- REDO (μ¬μ€ν) : κ°μ₯ μ΅κ·Ό 볡μ λ³Έ + λ‘κ·Έ
- κ°μ₯ μ΅κ·Όμ μ μ₯ν λ°μ΄ν°λ² μ΄μ€ 볡μ¬λ³Έμ κ°μ Έμ¨ ν λ‘κ·Έλ₯Ό μ΄μ©ν΄ 볡μ¬λ³Έμ΄ λ§λ€μ΄μ§ μ΄νμ μ€νλ λͺ¨λ λ³κ²½ μ°μ°μ μ¬μ€ννμ¬ μ₯μ κ° λ°μνκΈ° μ§μ μ λ°μ΄ν°λ² μ΄μ€ μνλ‘ λ³΅κ΅¬
- μ λ°μ μΌλ‘ μμλ κ²½μ°μ μ£Όλ‘ μ¬μ©
- UNDO (μ·¨μ) : λ‘κ·Έ + λͺ¨λ λ³κ²½λ€μ μ·¨μ
- λ‘κ·Έλ₯Ό μ΄μ©ν΄ μ§κΈκΉμ§ μ€νλ λͺ¨λ λ³κ²½ μ°μ°μ μ·¨μνμ¬ νλ κ²μ μλ κ²μ²λΌ μλμ λ°μ΄ν°λ² μ΄μ€λ₯Ό 볡μνλ κ²
- λ³κ²½ μ€μ΄μκ±°λ μ΄λ―Έ λ³κ²½λ λ΄μ©λ§ μ λ’°μ±μ μμ κ²½μ°μ μ£Όλ‘ μ¬μ©
λ°μ΄ν°λ² μ΄μ€ λ‘κ·Έ : λ‘κ·Έ μμΆ
- λͺ©μ : μ μ₯μ₯μΉμ ν¨μ¨μ±, μ μν ν볡
- μ΄μ
-
- μ€ν¨ν νΈλμμ
μ λ‘κ·Έ λΆνμ
- νΈλμμ
μ΄ μ΄λ―Έ rollback λμμ
-
- μ±κ³΅ν νΈλμμ
μ κ°±μ μ λ°μ΄ν°λ λΆνμ
- REDOλ₯Ό μν΄ μλ‘μ΄ κ°λ§ νμ
-
- νλμ λ°μ΄ν° μμ΄ν
μ΄ μ¬λ¬ νΈλμμ
μ μν΄ μ¬λ¬ λ² κ°±μ λμλ€λ©΄ κ°μ₯ λ§μ§λ§ λ°μ΄ν° κ°λ§ νμ
- REDO μ μ€κ° κ³Όμ μ λ°μ΄ν° κ°μ λΆνμ
λ€μν ν볡 κΈ°λ²
(1-1) μ¦μ κ°±μ ν볡 κΈ°λ²
νΈλμμ
μν λμ€ λ°μ΄ν°λ₯Ό λ³κ²½νλ©΄ λ³κ²½ μ 보λ₯Ό λ‘κ·Έ νμΌμ μ μ₯νκ³ , νΈλμμ
μ΄ λΆλΆ μλ£λκΈ° μ μ΄λΌλ λͺ¨λ λ³κ²½ λ΄μ©μ μ¦μ λ°μ΄ν°λ² μ΄μ€μ λ°μνλ κΈ°λ²
- νΉμ§
- ν볡 μ λ‘κ·Έ νμΌμ μ°Έμ‘°νμ¬ Redoμ Undo μ°μ°μ λͺ¨λ μ€νν΄μΌ νλ€.
- νΈλμμ
μ΄ μλ£λκΈ° μ μ₯μ κ° λ°μν κ²½μ° : Undo
- λ§μΌ λ‘κ·Έμ
<Ti, Start>
λ μ½λλ§ μκ³ <Ti, Commit>
λ μ½λκ° μμΌλ©΄ Undo(Ti)
λ₯Ό μν
- νΈλμμ
μ΄ μλ£λ ν μ₯μ κ° λ°μν κ²½μ°: Redo
- λ§μΌ λ‘κ·Έμ
<Ti, Start>
λ μ½λμ <Ti, Commit>
λ μ½λκ° λͺ¨λ λ€ μμΌλ©΄ Redo(Ti)
λ₯Ό μν
- ꡬν
- νΈλμμ
νμ± μνμμ λ°μ΄ν° λ³κ²½ κ²°κ³Όλ₯Ό λ‘κ·Έμ λ°μ΄ν°λ² μ΄μ€μ λ°μ
- ν볡 μ νΈλμμ
μ€ν μ΄μ μ μνλ‘ λ³΅κ΅¬
- λ‘κ·Έ νμΌμ μ°Έμ‘°νμ¬ λ―Έμλ£λ λ³κ²½μ λν΄ Undoλ₯Ό μ°μ μ€νν ν, μλ£λ λ³κ²½μ λν΄ Redo μ€ν
- μ μ©μ μ (<T1, T2> μμΌλ‘ μ€ν)
- T1μ΄ CommitνκΈ° μ§μ μ μμ€ν
λΆκ΄΄
- T2κ° CommitνκΈ° μ§μ μ μμ€ν
λΆκ΄΄
Undo(T2)
λ₯Ό λ¨Όμ μ€ν, λ€μ Redo(T1)
μ€ν
- μΌλ°μ μΌλ‘ λͺ¨λ Undo νμ Redoλ₯Ό ν΄μΌ ν¨
- T2κ°
<T2, Commit>
λ‘κ·Έ λ μ½λ μΆλ ₯ μ§ν μμ€ν
λΆκ΄΄
Redo(T1)
, Redo(T2)
μ€ν
- Undoλ μμ, Redoλ κΈ°λ‘λ μμλλ‘ μ€ν
(1-2) μ§μ° κ°±μ ν볡 κΈ°λ²
νΈλμμ
μ΄ μνλλ λμμλ λ°μ΄ν° λ³κ²½ μ°μ°μ κ²°κ³Όλ₯Ό λ°μ΄ν°λ² μ΄μ€μ μ¦μλ°μνμ§ μκ³ λ‘κ·Έ νμΌμλ§ κΈ°λ‘ν΄λμλ€κ°, νΈλμμ
μ΄ μλ£λ νμ λ‘κ·Έμ κΈ°λ‘λ λ΄μ©μ μ΄μ©ν΄ λ°μ΄ν°λ² μ΄μ€μ ν λ²μ λ°μ
- νΉμ§
- νΈλμμ
μ΄ μνλλ λμ μ₯μ κ° λ°μν κ²½μ° λ‘κ·Έμ κΈ°λ‘λ λ΄μ©μ λ²λ¦¬κΈ°λ§ νλ©΄ λ°μ΄ν°λ² μ΄μ€κ° μλ μνλ₯Ό κ·Έλλ‘ μ μ§νκ² λλ€.
- μ§μ° κ°±μ ν볡 κΈ°λ²μμλ REDI μ°μ°λ§ μ΄μ©ν¨
- λ°μ΄ν°λ² μ΄μ€ ν볡 κ³Όμ μμ UNDOλ νμ μμ. νΈλμμ
볡ꡬ μ λ‘κ·Έ νμΌ λ΄μ©λ§ νκΈ°
- νΈλμμ
μ΄ μλ£λκΈ° μ μ₯μ κ° λ°μν κ²½μ°: λ‘κ·Έ λ΄μ©μ 무μνκ³ λ²λ¦Ό
- νΈλμμ
μ΄ μλ£λ ν μ₯μ κ° λ°μν κ²½μ°: Redo
- λΆλΆ μλ£λ λκΉμ§ λͺ¨λ Output μ°μ°μ μ§μ°
- λͺ¨λ λ°μ΄ν°λ² μ΄μ€μ λ³κ²½μ λ‘κ·Έμ λ¨Όμ κΈ°λ‘
- μμ ν μ μ₯μμ
<Ti, Commit>
λ₯Ό ν¬ν¨νλ λ‘κ·Έ λ μ½λλ₯Ό κΈ°λ‘ν νμ λ°μ΄ν°λ² μ΄μ€ κ°±μ
- μλ£ μνλ‘ κ°
<Ti, Commit>
λ λΆλΆμ μΌλ‘ κΈ°λ‘
- λ‘κ·Έ λ μ½λ : REDO μ°μ°μ λλΉ. μμ κ°λ νμμμ
<νΈλμμ
id, λ°μ΄ν° μμ΄ν
, λ³κ²½λ κ°>
- Redo μ°μ°μ idempotent μ±μ§μ κ°μ§κ³ μμ΄μΌ ν¨
- κ°μ Redoλ₯Ό μ¬λ¬λ² μ€νν κ²μ΄λ ν λ² μ€νν κ²μ΄λ κ·Έ κ²°κ³Όλ λλ±
- Redo μμ
μ€ λ€μ μ₯μ κ° μΌμ΄λ Redo μ°μ°μ λ λ€μ μ€ννλλΌλ μ²μ ν λ² μνν κ²°κ³Όμ λμΌ
Redo(Redo(Redo...(x))) = Redo(x)
- ꡬν
- νΈλμμ
λ¨μκ° μ’
λ£λ λκΉμ§ λμ€ν¬μ κΈ°λ‘νλ μΆλ ₯ μ°μ°μ μ§μ°μν€κ³ , λ°μ΄ν°λ² μ΄μ€ λ³κ²½ λ΄μμ λ‘κ·Έμ 보κ΄
- νΈλμμ
μλ£(Commit) μ λ‘κ·Έλ₯Ό μ΄μ©ν΄ μ§μ°λ μΆλ ₯ μ°μ°(Redo) μν
- νΈλμμ
μ΄ μ€ν¨ν κ²½μ° Undo μμ΄ λ‘κ·Έ λ¨μ νκΈ°
μ΄λ€ νΈλμμ
μ΄ Redo λμ΄μΌ νλκ°?
- λ‘κ·Έμ <Ti, Start> λ μ½λμ <Ti, Commit> λ μ½λκ° λͺ¨λ μλ νΈλμμ
Tiμ λν΄μλ§ μ¬μ€ν
- ν볡μ μ°¨ : μΈ κ°μ μμ΄ν μμ μ λ‘κ·Έ
- λ‘κ·Έμ Commit λ μ½λκ° μλ νΈλμμ
μ λν΄μ Redo λ€μ μ€ν
(2) κ²μ¬μμ ν볡
λ°μ΄ν°λ² μ΄μ€ νΈλμμ
λμ κ³Όμ μ μ£ΌκΈ°μ μΌλ‘ κ²μ¬μ μ κΈ°λ‘νμ¬ λ°μ΄ν°λ² μ΄μ€ μ₯μ μ λ‘κ·Έλ₯Ό κΈ°λ°μΌλ‘ ν볡νλ κΈ°λ²
- νΉμ§
- κ²μ¬μμ μ λμ
νλ©΄μ, Undoλ₯Ό λ€μ λμ
ν¨
- ν볡μμ
μ΄ μλ£λ λκΉμ§ μμ€ν
μ μλ‘μ΄ νΈλμμ
μ λ°μλ€μΌ μ μμ
- λμ
- μ₯μ λ°μ μ κ²μ¬μ μ΄μ μ μ²λ¦¬λ νΈλμμ
μ ν볡μμ μ μΈνκ³
- κ²μ¬μ μ΄νμ μ²λ¦¬λ νΈλμμ
μ ν볡 μμ
μν
- κ²μ¬μ μ΄ν, μ₯μ λ°μ μ΄μ μ commitμ΄ μλ£λ κ²½μ° Redo μν
- μ₯μ λ°μ μμ κΉμ§ commitλμ§ λͺ»ν κ²½μ° Undo μν
- Undo/Redoμ μν
- Step 1. Undo-listμ μλ λͺ¨λ νΈλμμ
λ€μ λν΄ λ‘κ·Έμ κΈ°λ‘λ μμμΌλ‘ Undo μ°μ° μν
- Step 2. κ·Έλ° λ€μ Redo-listμ μλ νΈλμμ
μ λν΄ λ‘κ·Έμ κΈ°λ‘λ μμλ‘ Redoλ₯Ό μν
- κ²μ¬μμ (Checkpoint) λ°©λ²
- λ‘κ·Έ κΈ°λ‘ μ μ§, μΌμ μκ° κ°κ²©μΌλ‘ κ²μ¬μμ (Checkpoint) μ€μ
- λ©μΈ λ©λͺ¨λ¦¬(λ‘κ·Έ λ²νΌ)μ μλ λͺ¨λ λ‘κ·Έ λ μ½λλ₯Ό μμ μ μ₯μλ‘ μΆλ ₯
- λ³κ²½λ λ°μ΄ν° λ²νΌ λΈλ‘μ μ λΆ λμ€ν¬λ‘ μΆλ ₯
- κ²μ¬ μμ νμλ‘μ¨ λ‘κ·Έ λ μ½λλ₯Ό μμ μ μ₯μμ μΆλ ₯
- μ΄ λ, Lμ νμ¬ μ€ν μ€μ μλ νΈλμμ
λ€μ 리μ€νΈ
κ²μ¬μμ (checkpoint) νλ³΅μ΄ νμν μ΄μ
μΌμ ν κ°κ²©μΌλ‘ μμ±λ κ²μ¬μμ μ μ₯μ κ° λ°μνμ λ, λΆνμν λΆνλ₯Ό μ€μ΄κ² λ¨μΌλ‘μ¨ ν볡 μ²λ¦¬ μ μ°¨μ μκ°μ μ μ½ν΄ μ€λ€.
μμ€ν
μλ¬κ° λ¬μ λ ν볡κ΄λ¦¬μκ° μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λ‘κ·Έ μ 체λ₯Ό λΆμν΄μΌ λλλ° μκ°μ΄ λ§μ΄ μμλκ³ λΆνμν REDO μ°μ°μ λ°λ³΅νλ λ¬Έμ κ° λ°μνλ―λ‘ κ²μ¬μμ νλ³΅μ΄ νμνλ€.
(3) λ―Έλμ΄ ν볡 κΈ°λ²
- ꡬν
- λ‘κ·Έ μ°μ κΈ°λ‘ κ·μ½ (write-ahead log protocol)
- λ‘κ·Έλ₯Ό λμ€ν¬μ μ¨μΌμ§λ§ 컀λ°ν μ μλ€.
References
- Fundamentals of Database Systems 7th Edition by Ramez Elmasri, Shamkant B. Navathe.
- https://overcome-the-limits.tistory.com/528
- https://itwiki.kr/w/%EB%A1%9C%EA%B7%B8%EA%B8%B0%EB%B0%98%ED%9A%8C%EB%B3%B5_%EA%B8%B0%EB%B2%95
- https://m.blog.naver.com/wook2124/222108776229
- https://itwiki.kr/w/%EA%B2%80%EC%82%AC%EC%A0%90%ED%9A%8C%EB%B3%B5%EA%B8%B0%EB%B2%95
- https://www.studocu.com/ko/document/dankook-university/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B4%80%EB%A6%AC/%EA%B2%BD%EC%98%81%ED%95%99%EA%B3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B0%9C%EB%A1%A0-%EA%B8%B0%EB%A7%90%EA%B3%A0%EC%82%AC-%EB%8C%80%EB%B9%84-%EC%9E%90%EB%A3%8C-%EA%B5%90%EC%9E%AC-%EB%B0%8F-%EC%88%98%EC%97%85-%EB%82%B4%EC%9A%A9-%ED%95%84%EA%B8%B0-%EB%85%B8%ED%8A%B8/17316211
- https://m.blog.naver.com/paradice29/50184565199