me2day

여기 보면 MySQL이 Transaction Isolation을 지원하지만 MVC(Multi Version Concurrency)는 지원 안 한다고 되어 있는데 이게 뭔 말인가요? 이 둘이 하나는 지원하고 하나는 지원 안 할 수도 있는 건가요? 09.05.20 16:40

미투 0

29 개의 댓글이 있습니다.

RedBaron RedBaron

innodb와 Falcon을 Storage Engine 으로 사용할 때 지원 됩니다.

09.05.20 16:54
fupfin gEEkInsIdE

예. 그런건 아는데 Transaction은 지원하면서 MVC를 지원안한다는 말이 뭔가 이해가 안되서요. MVC를 지원 안하고도 Transaction을 지원할 수 있는 건가봐요? -_- Isolation level 1, 2 정도만 지원하는 건가요?

09.05.20 17:45
RedBaron RedBaron

Transaction자체를 innodb와 Falcon 에서만 지원하지요. ^^

09.05.20 17:56
fupfin gEEkInsIdE

예. 그건 저도 아는….;;;

09.05.20 18:08
맹수 맹수

http://dev.mysql.com/doc/refman/5.0/en/innodb-multi-versioning.html innodb는 mvcc 지원합니당.

09.05.20 18:25
오리왕 오리대마왕

ㄴ 그럼 저 표는 뭐지용? 구라? @_@

09.05.20 18:27
맹수 맹수

fulltext search가 YES인거 보면 MyISM인거 같은데요.

09.05.20 18:29
아시모프 아시모프

인터넷을 뒤져보니 트랜젝션격리와 MVCC는 조금 다른 개념인것같네요. 여기 에 나온 글을 잠깐 번역해보면

09.05.20 18:32
아시모프 아시모프

다시 생각해보니 gEEkInsIdE님말처럼 격리레벨 몇이라고 말하지않고 격리레벨은 지원하면서 MVCC는 안된다니 오해를 불러있으킬수 있겠네요.

09.05.20 18:59
fupfin gEEkInsIdE

아시모프 : Transactoin Isolation Level이 총 4개인데 0은 지원 안하는 것으로 봐야하고 1,2,3중 하나인데 지금 문서의 MVCC가 Read Committed에 해당한다면 Level 1을 의미하는 것이거든요?

09.05.20 19:05
fupfin gEEkInsIdE

아! 무슨 말인지 이해하겠네요. Transacton(MVCC)를 지원하지만 Transaction Isolation Level을 조정하는 능력은 없다는 말 같네요. 사용DB 중에도 Transaction Isolation Level을 Full로 지원 안하는 경우가 있으니까요. postgresql도 Isolation 2는 지원 안하고… 제가 오해를 했네요.

09.05.20 19:07
잉여훗쇼 잉여훗쇼

제가 볼때 트랜잭션과 MVCC는 전혀 다른 개념 같은데요?

09.05.20 19:19
fupfin gEEkInsIdE

잉여훗쇼 : 어떻게 다르다고 생각하시나요?

09.05.20 19:19
praxis praxis

mvcc 는 read/write 의 concurrent access 를 위한 구현 방법이고요, ibm 의 DB2 는 mvcc 를 사용하지 않고 record lock 을 사용했습니다. record lock : mvcc = lock : transactional memory 정도로 생각하면 적당하지 않을까요?

09.05.20 19:54
잉여훗쇼 잉여훗쇼

MVCC는 행 버전 관리 정도로 보면 되는듯 하네요…….

09.05.20 20:18
아시모프 아시모프

praxis // mvcc자체도 여러가지 방법으로 구현될수 있다고 이야기하던데, 그건 다른이야기인가요? 즉 mvcc가 transaction isolation의 read commited 를 준수하는 구현방법이라는것이죠. concurrent access자체는 transaction isolation의 개념에 들어가잇는것이 아닐까요?

09.05.20 20:19
오리왕 오리대마왕

Understanding PSQL's MVCC:"http://eric.themoritzfamily.com/2008/06/18/understanding-psqls-mvcc/"

09.05.20 20:25
아시모프 아시모프

하지만 맥락적으로 mvcc을 구현방법이라고 여긴다면 , transaction isolation을 지원하지만 mvcc(read commited)를 지원하지 않는다는 말은 이해가 가는군요.

09.05.20 20:25
오리왕 오리대마왕

ㄴ 첫줄: PostgresSQL implements something called MVCC. Which alleviates the need for a Read-Lock in many cases ==> transaction isolation 구현을 위한 기법 중 하나라고 읽히네요

09.05.20 20:25
오리왕 오리대마왕

ㄴ 즉, transaction isolation 은 되는데 MVCC가 안된다는 말은 transaction isolation 을 read-lock 등의 방법으로 구현했다는 것이 아닐까요

09.05.20 20:26
잉여훗쇼 잉여훗쇼

ㄴㄴ저 말은 Read-Lock 감소를 위해서 나왔다는 소리 아닌가요?

09.05.20 20:32
오리왕 오리대마왕

ㄴㄴㄴ 네, 그렇게 해석되지요. PostgresSQL 은 MVCC 라는 녀석을 구현함으로써 Read-Lock 이 필요한 많은 상황에서 Read-lock 없이 뭔가를 할 수 있게 해 주었다 라고 이해를 했습니다

09.05.20 20:36
오리왕 오리대마왕

ㄴㄴㄴ 즉, 거꾸로보자면 MVCC 라는 녀석을 구현하지 않았다면 그런 상황들에 대해 read-lock 으로 처리를 했다고 이해를 하였고

09.05.20 20:37
오리왕 오리대마왕

ㄴㄴㄴ "read-lock이 필요한 그러한 상황들" 이 저 글의 문맥으로는 transaction isolation 에 대한 구현이 필요한 상황이라고 이해를 했습니다.

09.05.20 20:37
오리왕 오리대마왕

ㄴㄴㄴ 따라서 transaction isolation 을 MVCC 없이 read-lock 으로 구현을 할 수 있구나~ 하고 유추를 하였고,MySQL 이 그 경우인가보다 생각했습니다. (진짠지 아닌진 모르겠지만)

09.05.20 20:38
fupfin gEEkInsIdE

예. 그렇네요. 생각해보니 예전 sybase도 lock으로 transation을 구현한 방법과 mvc로 구현한 방법을 선택할 수 있었던 것 같습니다.

09.05.20 20:52
잉여훗쇼 잉여훗쇼

전통적인 의미로 read committed가 수정되었지만 커밋되지 않은 '행' 자체를 차단한다고 보는거면 mysql이 트랜잭션 격리를 지원하면서도 mvcc를 지원하지 않을 수도 있다고 보이네요….

09.05.20 20:52
fupfin gEEkInsIdE

lock으로 구현했을 때 동시성에 문제가 있었지요. 그런데 lock으로 처리하면 repeatable read가 불가능하겠네요.

09.05.20 20:54
오리왕 오리대마왕

ㄴ 그렇겠죠? read 자체가 lock 걸려서 대기상태일테니까요?

09.05.20 20:55