본문 바로가기

Java/JSP

오라클, MS-SQL, MY-SQL의 특징과 차이점

핵심적인 엔진의 차이를 말하라면...

오라클의 경우 완벽한 Row-level Locking (행단위 잠금)을 지원하지만 타 DBMS는 그렇지 않습니다.

즉, 내가 update emp set sal=30000 where ename = '홍길동' 을 실행했더니 다른 행도 같이 잠금이 걸리느냐 그렇지 않느냐의 차이입니다.

위처럼 '홍길동'을 업데이트했는데 같은 블록이나 페이지에 있었다는 이유로 '강감찬'도 같이 Lock이 걸린다면동시성제어에 병목이 더 심하게 발생하게 됩니다.

잠금에 기능에 차이가 있습니다.

MySQL은 기본적인 MyISAM Type 핸들러의 경우 table level locking입니다. 위와 같이 업데이트를 한다면 전체 테이블에 잠금이 걸려서 그 순간에는 다른 Update, delete, insert 작동을 할 수가 없습니다. DML 위주의 작업이라면 심각한 성능 저하를 경험할 수도 있습니다.

잘못은 한 놈이 했는데 단체 기합을 받아야하는 꼴입니다. 오라클은 잘못한 놈만 벌줍니다.

또 하나 오라클은Multi-version read-consistent concurrency model 을 지원합니다. 즉, 읽기는 쓰기에 의해서 차단되지 않으면서 데이터에 대해서 여러개의 버전을 유지하면서 일관성을 지원할 수 있다는 이야기입니다.

은행 뱅킹 시스템이라고 가정합시다.

계좌 잔액을 모두 구하는 SQL이 있다고 한다면.... 하나의 계좌 테이블에서 수백수천만건의 레코드가 있을 것이고 이를 수행하는 도중에도 계좌에 대한 예금 인출, 이체 트랜잭션이 발생할겁니다. 이 때 어떻게 일관성을 유지시키느냐. 오라클의 경우 잔액을 조회하는 시점의 데이터로 고정되어 결과가 완벽하게 도출됩니다. 잔액 조회 SQL을 Run 하고 있는 도중에 누군가가 계좌에서 인출하거나 이체하더라도 그것이 잔액 조회 SQL의 결과에영향을주지 않습니다.

만약 타 DBMS라면 이러한 일관성을 제공하기 위해 해당 레코드를 읽는 동안에는 이체나 인출을 하지 못하도록 Lock을 걸어놔야 오라클 같은 일관성 모델을 제공할 수 있을겁니다.

즉, 오라클을 제외한 타 DBMS는 Select의 경우 의도하지 않았는데도 불구하고Lock을 걸어 버릴 수 있습니다.

이게 가장 큰 차이점이고 핵심적입니다. 오늘날 오라클이 아직도 건재한 이유가 이 차이에 기인합니다.


출처 :http://forclack.egloos.com/505550

“SW 영향력 지금보다 훨씬 더 커진다”…SW개발자 격려한 NHN
이는 전통의 SW업체인 IBM, 오라클 등이 장악하고 있는 기업시장(B2B)보다 일반사용자가 접하는 페이스북, 트위터, 아마존 등을 통한 SW 시장이 더욱 커질 것이란 설명이다. 김 학장은 “(기업시장에서 입찰을 통한 SW 가치...

貿協, 한-러 비즈니스 다이얼로그 개최
한국 측에서는 강남세브란스병원이 디지털건강검진 센터 설립을 위한 전략과 국제진료소 현황을 설명하고, 예송이비인후과, 오라클메디컬 그룹 등이 의료관광 투자유치 활동을 벌인다. 한편, 한국풍력협회와...

무협, 한-러 비즈니스 다이얼로그 개최
한국 측에서는 강남세브란스병원이 디지털건강검진 센터 설립을 위한 전략을 설명하고, 예송이비인후과·오라클메디컬 그룹 등이 의료관광 투자유치 활동을 벌인다. 아울러 한국풍력협회와 러시아풍력협회 간의 협력을...