๊ด€๋ฆฌ ๋ฉ”๋‰ด

Unfazedโ—๏ธ๐ŸŽฏ

1.2 Serializability ์ง๋ ฌ ๊ฐ€๋Šฅ ๋ณธ๋ฌธ

Database (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)

1.2 Serializability ์ง๋ ฌ ๊ฐ€๋Šฅ

9taetae9 2024. 3. 12. 16:17
728x90

Correct Execution

What are correct criteria of concurrent executed transactions???
Two widely-accepted criteria
Conflict serializable
View serializable
Note, serial execution of transactions is always correct (why???)

 

์˜ฌ๋ฐ”๋ฅธ ์‹คํ–‰

๋‹ค์ˆ˜๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ๋•Œ ์˜ฌ๋ฐ”๋ฅธ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰์€ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๊ฒฐ์ •ํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ํŠธ๋žœ์žญ์…˜์€ ๋‹ค์ˆ˜ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌ์„ฑ์ด ๋˜๋ฉฐ, ๋‹ค์ˆ˜๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ˆ˜ํ–‰์ด ๋˜๋ฉด ํƒ€ ํŠธ๋žœ์žญ์…˜์— ์†ํ•œ ์—ฐ์‚ฐ๊ณผ ์„œ๋กœ ํ˜ผํ•ฉ๋˜์–ด ์ˆ˜ํ–‰์ด ๋  ๊ฒƒ์ด๋ฉฐ, ์˜ฌ๋ฐ”๋ฅธ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ •์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์ฐธ๊ณ ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ง๋ ฌ ๋ฐฉ๋ฒ•์€ ํ•ญ์ƒ ์˜ฌ๋ฐ”๋ฅด๋ฉฐ(correct), ์ด๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์ผ์น˜์„ฑ ์„ฑ์งˆ๋กœ ์ธํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•ญ์ƒ ์ผ์น˜ํ•˜๋Š” ์ƒํƒœ๋กœ ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง๋ ฌ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰์€ ํ˜„์‹ค์ ์œผ๋กœ๋Š” ์šด์˜์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋‹ค๋งŒ ์˜ฌ๋ฐ”๋ฅธ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰์˜ ํŒ๋‹จ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

 

Nonserializable Execution

There are three cases in which nonserializable execution causes problems, concurrency anomalies

 

ํŠธ๋žœ์žญ์…˜์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ˜„์ƒ์€ ์˜ค์†์ฝ๊ธฐ, ๊ฐฑ์‹  ์†์‹ค, ๋ฐ˜๋ณต๋ถˆ๊ฐ€ ์ฝ๊ธฐ๋กœ 3๊ฐ€์ง€์ด๋‹ค.

1) dirty read (์˜ค์† ์ฝ๊ธฐ)
- T2 has seen dirty data
T1 T2
WRITE(A)






ROLLBACK


READ(A)
A = A + 50
WRITE(A)

์˜ค์†์ฝ๊ธฐ๋Š” ์™„๋ฃŒ๋˜์ง€ ์•Š๋Š” ๊ฐ’(uncommitted value, dirty value)์„ ์ฝ๋Š” ์—ฐ์‚ฐ์„ ๋งํ•œ๋‹ค. ์ƒ๊ธฐ์—์„œ T2๊ฐ€ ์ฝ๋Š” ๊ฐ’์€ ์•„์ง ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ๊ฐ’์ด๋ฉฐ, ๋งŒ์•ฝ T1์ด ์ฒ ํšŒ๋ฅผ ํ•˜๋ฉด T2 ์—ฐ์‚ฐ ๋˜ํ•œ ์ฒ ํšŒํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

2) lost update (๊ฐฑ์‹  ์†์‹ค) 

- effect(i.e. update) of T2 is lost 

T1 T2
READ(A)
A = A + 50






WRITE(A)




READ(A)
A = A + 50
WRITE(A)

 ๊ฐฑ์‹  ์†์‹ค์€ T2๊ฐ€ ์“ด ๊ฐ’์„ T1์ด ๋ฎ์–ด์“ฐ๋Š” ํ˜„์ƒ์ด๋ฉฐ, ์ด ๊ฒฝ์šฐ T2์˜ ํšจ๊ณผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

 

3) unrepeatable read (๋ฐ˜๋ณต๋ถˆ๊ฐ€ ์ฝ๊ธฐ)

T1 T2
READ(A)
A = A + 50






WRITE(A)




READ(A)
A = A + 50
WRITE(A)

๋ฐ˜๋ณต๋ถˆ๊ฐ€ ์ฝ๊ธฐ๋Š” T1์ด ์ฒ˜์Œ์— ์ฝ๋Š” A ๊ฐ’๊ณผ ํ›„์— ์ฝ์€ A ๊ฐ’์— ์ฐจ์ด๊ฐ€ ์žˆ๊ฒŒ ๋˜์–ด, T1 ๊ด€์ ์—์„œ๋Š” A ๊ฐ’์„ ์ฝ์„ ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์ด ๋‚˜์˜ค๋Š” ํ˜„์ƒ์ด๋‹ค.

 

๋™์‹œ์„ฑ ์ œ์–ด๋Š” ์„ธ ๊ฐ€์ง€ ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•œ๋‹ค.  ๋ฐ”๋ฅด์ง€ ๋ชปํ•œ ์‹คํ–‰์œผ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ˜„์ƒ์€ ์˜ค์ง ์ด ์„ธ ๊ฐ€์ง€ ํ˜„์ƒ๋ฟ์ด๋ฉฐ, ์•ž์œผ๋กœ ์ „๊ฐœ๋˜๋Š” ๋™์‹œ์„ฑ ์ œ์–ด๋Š” ์„ธ ๊ฐ€์ง€ ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์ด๋ก ์ด๋‹ค.

 

 

Serializability

Basic assumption

- each transaction preserves database consistency

A(possibly concurrent) schedule is serializable if it is equivalent to a serial schedule. Two different notions:

1) conflict serializability

2) view serializability

Simplified view of transactions

- ignore operations other than read and write instructions

- assume that transactions may perform arbitrary computations on data between reads and writes

- then, a simplified schedule consitsts of only reads and writes

์ง๋ ฌ๊ฐ€๋Šฅ

์Šค์ผ€์ค„์ด ์ง๋ ฌ์ˆ˜ํ–‰ ์Šค์ผ€์ค„ ๊ฒฐ๊ณผ์™€ ๋™์ผํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ์ง๋ ฌ๊ฐ€๋Šฅ(serializable) ์Šค์ผ€์ค„์ด๋ผ๊ณ  ํ•œ๋‹ค. ์Šค์ผ€์ค„์— ๊ด€๋ จ๋˜๋Š” ํŠธ๋žœ์žญ์…˜์˜ ๊ฐœ์ˆ˜๊ฐ€ n๊ฐœ์ด๋ฉด ๊ฐ€๋Šฅํ•œ ์ง๋ ฌ ์Šค์ผ€์ค„์€ n๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์„ ๋‚˜์—ดํ•˜๋Š” ๊ฐœ์ˆ˜์™€ ๋™์ผํ•˜๋ฏ€๋กœ ์ด n!์ด๋‹ค. ์ง๋ ฌ ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์€ n!์˜ ์ง๋ ฌ ์Šค์ผ€์ค„ ์ค‘์—์„œ ์ ์–ด๋„ ํ•˜๋‚˜์˜ ์ง๋ ฌ ์Šค์ผ€์ค„๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

์Šค์ผ€์ค„ ๊ฒฐ๊ณผ์˜ ๋™์ผํ•จ์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹์€ ์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„๊ณผ ๋ทฐ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์ด ์žˆ๋‹ค.

 

Conflicting Instructions (์ถฉ๋Œ ์—ฐ์‚ฐ)

Instruction Ii and Ij of transtions Ti and Tj respectivelty, conflict if and only if there exists some item Q accessed by both Ii and Ij and at least one of these instructions is write(Q)

li = read(Q),   lj = read(Q)  Don’t conflict
l
i = read(Q),   lj = write(Q)  They conflict
l
i = write(Q),   lj = read(Q)  They conflict
l
i = write(Q),   lj = write(Q)  They conflict
Intuitively, a conflict between Ii and Ij forces a (logical)temporal order between them
- if Ii and Ij are consecutive in a schedule and they do not conflict, their results would remain the same even if they had been interchanged in the schedule.

 

์ถฉ๋Œ ์—ฐ์‚ฐ 

๋™์ผํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋‘ ๊ฐœ ์—ฐ์‚ฐ ์ค‘์—์„œ ์ตœ์†Œํ•œ ํ•œ ๊ฐœ ์—ฐ์‚ฐ์ด ์“ฐ๊ธฐ ์—ฐ์‚ฐ์ด๋ฉด, ๋‘ ์—ฐ์‚ฐ์€ ์ถฉ๋Œํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

์ถฉ๋Œ ์—ฐ์‚ฐ์€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ๋งŒ์„ ๊ณ ๋ คํ•œ๋‹ค. ๋™์ผํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์€ ์ „ํ˜€ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š”๋‹ค.

์Šค์ผ€์ค„์—์„œ ์ถฉ๋Œ์—ฐ์‚ฐ์€ ์—ฐ๊ด€๋˜๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์ง๋ ฌ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ๋น„์ถฉ๋Œ์—ฐ์‚ฐ์€ ๋‘ ์—ฐ์‚ฐ์˜ ์ˆœ์„œ๋ฅผ ์Šค์ผ€์ค„์—์„œ ๋ฐ”๊พธ์–ด๋„ ์—ฐ์‚ฐํšจ๊ณผ๊ฐ€ ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜ค๋‚˜, ์ถฉ๋Œ ์—ฐ์‚ฐ์€ ์—ฐ์‚ฐ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๋ฉด ๋‹ค๋ฅธ ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค.

 

Conflict Serializable Schedule

If a schedule S can be transformed into a schedule S' by a series of swaps of non-conflicting instructions, we say that S and S' are conflict equivalent.

We say that a schedule S is conflict serializable if it is conflict equivalent to a serial schedule.

์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„

์Šค์ผ€์ค„์—์„œ ๋น„์ถฉ๋Œ ์—ฐ์‚ฐ์€ ์„œ๋กœ ๋ฐ”๊พธ์–ด๋„ ์—ฐ์‚ฐํšจ๊ณผ๊ฐ€ ๋™์ผํ•˜๋‹ค. ์Šค์ผ€์ค„์—์„œ ๋น„์ถฉ๋Œ ์—ฐ์‚ฐ์„ ์„œ๋กœ ๋ฐ”๊พธ์–ด ์ง๋ ฌ์Šค์ผ€์ค„์ด ๋œ๋‹ค๋ฉด, ์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์ด๋ผ ํ•œ๋‹ค.

 

Conflict Serializable Example 1

Schedule 5 can be transformed into Schedule 6, a serial schedule where T2 follows T1, by series of swaps of non-conflicting instructions

-Therefore schedule 5 is conflict serializable.

T1 T2
Read(A)
Write(A)




Read(B)
Write(B)




Read(A)
Write(A)




Read(B)
Write(B)

Schedule 5 (conflict serializable, ์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„) 

T1 T2
Read(A)
Write(A)
Read(B)
Write(B)








Read(A)
Write(A)
Read(B)
Write(B)

Schedule 6 (์ง๋ ฌ ์Šค์ผ€์ค„) 

์Šค์ผ€์ค„ 5์—์„œ T2์˜ write(A)๋Š” T1์˜ read(B), write(B)์™€ ๋น„์ถฉ๋Œ ํ•˜๋ฏ€๋กœ ์„œ๋กœ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ T2์˜ read(A) ๋˜ํ•œ T1์˜ read(B), write(B)์™€ ๋น„์ถฉ๋Œ ํ•˜๋ฏ€๋กœ ์„œ๋กœ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ์„œ๋กœ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋ฉด ๊ฒฐ๊ณผ์ ์œผ๋กœ ์Šค์ผ€์ค„ 6์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋ฉฐ, ์Šค์ผ€์ค„ 6์€ ์ง๋ ฌ ์Šค์ผ€์ค„์ด๋‹ค. ์ด ๊ฒฝ์šฐ ์Šค์ผ€์ค„ 5๋Š” ์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์ด๋‹ค.

 

Example of a schedule that is not conflict serializable

T3 T4
Read(Q)


Write(Q)


Write(Q)
We are unable to swap instructions to obtain either serial schedule <T3, T4> or <T4, T3>
์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ ์˜ˆ์ œ 2

์ƒ๊ธฐ ์Šค์ผ€์ค„์€ ๋น„์ถฉ๋Œ ์—ฐ์‚ฐ ์ƒํ˜ธ ๊ตํ™˜์ด ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์€ ์•„๋‹ˆ๋‹ค.

Consistency๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. (์ถฉ๋Œ์ง๋ ฌ ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์ด ์•„๋‹ˆ๋ผ๊ณ  consistentํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋งํ•  ์ˆœ ์—†์Œ)

 

View Serializability Definition

Let S and S´ be two schedules with the same set of transactions.  S and S´ are view equivalent if the following three conditions are met for each data item Q
If in schedule S, transaction Ti reads the initial value of Q, then in schedule S’ also transaction Ti must read the initial value of Q
If in schedule S transaction Ti executes read(Q), and that value was produced by transaction Tj  (if any), then in schedule S’ also transaction Ti must read the value of Q that was produced by the same write(Q) operation of transaction Tj
The transaction (if any) that performs the final write(Q) operation in schedule S must also perform the final write(Q) operation in schedule S’
View equivalence is also based purely on reads and writes alone

 

๋ทฐ ์ง๋ ฌ๊ฐ€๋Šฅ ์ •์˜

์Šค์ผ€์ค„ S์— ์†ํ•œ ๊ฐ ํŠธ๋žœ์žญ์…˜์˜ ์ฝ๊ธฐ ์—ฐ์‚ฐ์— ๋Œ€ํ•˜์—ฌ S' ์Šค์ผ€์ค„์—์„œ ๋™์ผํ•œ ๊ฐ’์„ ์ฝ๊ณ , ์Šค์ผ€์ค„ S์˜ ๋งˆ์ง€๋ง‰ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์ด S' ์Šค์ผ€์ค„์˜ ๋งˆ์ง€๋ง‰ ์“ฐ๊ธฐ ์—ฐ์‚ฐ๊ณผ ๋™์ผํ•˜๋ฉด, ์Šค์ผ€์ค„ S'๋Š” ๋ทฐ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

View Serializability Example

Below is a schedule which is view-serializable but not conflict serializable
T5 T6 T7
Read(Q)


Write(Q)


Write(Q)






Write(Q)

Schedule 8

What serial schedule is the above equivalent to?
view equivalent to <T5, T6, T7>
Every view serializable schedule that is not conflict serializable has blind writes (writing data without prior reading)

์Šค์ผ€์ค„ 8์€ ์ถฉ๋Œ์—ฐ์‚ฐ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ๋น„์ถฉ๋Œ ์—ฐ์‚ฐ ์œ„์น˜ ๋ฐ”๊ฟˆ์— ์˜ํ•˜์—ฌ ์ง๋ ฌ ์Šค์ผ€์ค„๋กœ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•œ ์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์€ ์•„๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์Šค์ผ€์ค„ 8์€ ์ง๋ ฌ์Šค์ผ€์ค„ <T5, T6, T7>์™€ ํšจ๊ณผ๊ฐ€ ๋™์ผํ•œ ๋ทฐ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์ด๋‹ค. T5 ์ฝ๊ธฐ ์—ฐ์‚ฐ์—์„œ ๋ณด๋Š” ๋ฐ์ดํ„ฐ Q๋Š” ์ง๋ ฌ ์Šค์ผ€์ค„ <T5, T6, T7>์˜ T5 ์ฝ๊ธฐ ์—ฐ์‚ฐ์ด ๋ณด๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’๊ณผ ๋™์ผํ•˜๋ฉฐ, ์Šค์ผ€์ค„ 8์˜ ๋ฐ์ดํ„ฐ Q์— ๋Œ€ํ•œ ๋งˆ์ง€๋ง‰ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์€ T7์˜ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์ธ๋ฐ <T5, T6, T7>์˜ T7 ์“ฐ๊ธฐ ์—ฐ์‚ฐ๊ณผ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์€ ๋ทฐ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์€ blind write๋ฅผ ํฌํ•จํ•œ๋‹ค. 

 

Conflict Serializability vs. View Serializability

A schedule S is view serializable if it is view equivalent to a serial schedule
Every conflict serializable schedule is also view serializable

 

 

์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„ ⊂ ๋ทฐ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„

ํ˜„์‹ค์ ์œผ๋กœ๋Š” DBMS ์‹œ์Šคํ…œ์€ ์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ์„ฑ ์Šค์ผ€์ค„๊ณผ ๋ทฐ ์ง๋ ฌ๊ฐ€๋Šฅ์„ฑ ์Šค์ผ€์ค„์˜ ์ผ๋ถ€๋ถ„๋งŒ์„ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค.

 

Other Notions of Serializability

 

The schedule below produces same outcome as the serial schedule <T1, T2>,  yet is not conflict equivalent or view equivalent to it

T1 T2
Read(A)
A := A – 50
Write(A)






Read(B)
B := B+50
Write(B)






Read(B)
B := B – 10
Write(B)






Read(A)
A := A + 10
Write(A)
- Not conflict serializable
- Not view serializable
- But the same as <T1, T2>
- Commutable operators only !!!
Determining such equivalence requires analysis of operations other than read and write

๋‹ค๋ฅธ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„

ํ•ด๋‹น๋‹น ์Šค์ผ€์ค„์€ ์ถฉ๋Œ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์ด ์•„๋‹ˆ๋‹ค(ํŠธ๋žœ์žญ์…˜ ์ค‘๊ฐ„์— ๋‚˜์˜ค๋Š” ๋ฐ์ดํ„ฐ B์— ๋Œ€ํ•œ ์—ฐ์‚ฐ๋“ค์„ swapํ•  ์ˆ˜ ์—†์Œ).  ๋ทฐ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์„ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘ ๊ฐœ ํŠธ๋žœ์žญ์…˜์˜ ๋ชจ๋“  ์ง๋ ฌ ์Šค์ผ€์ค„(์ฆ‰, <T1, T2>, <T2, T1>)๊ณผ ๋ทฐ ๋™๋“ฑ์„ฑ(view equivalence) ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์—ฌ์•ผ ํ•œ๋‹ค. <T1, T2> ์ง๋ ฌ ์Šค์ผ€์ค„๊ณผ ๋น„๊ตํ•˜๋ฉด ๋ฐ์ดํ„ฐ B์— ๋Œ€ํ•œ ์ตœ์ข… ์“ฐ๊ธฐ๊ฐ€ ์ฃผ์–ด์ง„ ์Šค์ผ€์ค„์—์„œ๋Š” T1์ด๋ฉฐ, <T1, T2> ์—์„œ๋Š” T2๊ฐ€ ๋˜์–ด ๋ทฐ ๋™๋“ฑ์„ฑ์ด ์„ฑ๋ฆฝ๋˜์ง€ ์•Š๋Š”๋‹ค.  ์œ ์‚ฌํ•œ ์ด์œ ๋กœ ์ฃผ์–ด์ง„ ์Šค์ผ€์ค„์€ <T2, T1> ์ง๋ ฌ ์Šค์ผ€์ค„๊ณผ ๋ทฐ ๋™๋“ฑ์„ฑ์ด ์„ฑ๋ฆฝ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ฃผ์–ด์ง„ ์Šค์ผ€์ค„์€ ๋ทฐ ์ง๋ ฌ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•ด๋‹น ์Šค์ผ€์ค„์€ ์ง๋ ฌ ์Šค์ผ€์ค„ <T1, T2>์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ธ๋‹ค. ํ•ด๋‹น ์Šค์ผ€์ค„์€ ํŠธ๋žœ์žญ์…˜์˜ ๋ชจ๋“  ์—ฐ์‚ฐ์ด ๋”ํ•˜๊ธฐ, ๋นผ๊ธฐ์ด๋ฉฐ, ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์€ ์ƒํ˜ธ ๊ตํ™˜(commutable)์ด ๋œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์–ด, ์ง๋ ฌ ์Šค์ผ€์ค„ <T1, T2>์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ธ๋‹ค.  ๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ํŠธ๋žœ์žญ์…˜์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์„ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉด, ์ƒ๊ธฐ์™€ ๊ฐ™์€ ๋ถ„์„์„ ํ†ตํ•˜์—ฌ ์ข€ ๋” ๋งŽ์€ ์ง๋ ฌ๊ฐ€๋Šฅ ์Šค์ผ€์ค„์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์ด๋Š” ํ˜„์‹ค์ ์œผ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์‹ค์ œ ์ƒํ™ฉ์—์„œ๋Š” ์‚ฌ์šฉ์ž ํŠธ๋žœ์žญ์…˜๋‚ด์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฐ์‚ฐ์ด ์‚ฌ์ „์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์— ์•Œ๋ ค์งˆ ์ˆ˜ ์—†๋‹ค.

 

728x90