- HOME
- [종료]구루비 DB 스터디
- 2012년 하반기 - 오라클 성능 트러블슈팅의 기초 스터디
- 락은 무엇인가?
목차
1. 락은 무엇인가?
1. 락은 무엇인가?
- 락(lock)은 공유 자원에 대한 동시 액세스를 조절하기 위한 메커니즘
- 오라클은 테이블의 로우에 락을 걸기도 하지만, 다양한 자원에 대한 동시 액세스를 제공하기 위해 다른 여러 수준에서 락을 사용
- DBMS 제품마다 락 구현 방법은 다양함
1) MS-SQL
- MS-SQL은 과거에는 페이지 수준의 락킹만 제공함(현재에는 로우 수준의 락킹도 된다고 함)
*이로 인해 다수의 사용자가 동일한 테이블에 UPDATE 시(INSERT 한 후 DELETE) 동일한 페지이일 경우, 락킹 이슈에 인해 작업이 지연됨
- INFORMIX는 로우 수준의 락킹을 지원하나, 락을 획득하고 해제하는 데 시간이 걸리고, 메모리 측면에서도 치뤄야 할 대가가 큼.
- 또한 데이터베이스를 시작하기 전에 시스템에서 최대로 사용할 수 있는 락의 개수를 계산해야 함.
- 만약 가용한 락의 최대 개수를 초과하면, 대부분의 테이블은 페이지 수준의 락으로 생성되며, 이로 인해 이슈가 발생됨.
3) ORACLE
- 오라클은 로우 수준의 락킹을 지원하며, 타 DBMS와 다른 락킹 방식을 사용함.
- 오라클을 통해 다음의 사항들을 알 수 있음.
- 트랜잭션은 데이터베이스에 관한 모든 것이며, '좋은 것'임
- 적절한 순간이 올 때까지 커밋을 미루어야 함. 시스템의 부하를 피하기 위해서 급하게 커밋을 해서는 안됨.
대용량 트랜잭션을 오래 수행한다고 해서 시스템에 부하를 주지는 않기 때문. - 필요하다면 데이터에 대한 락을 보유해야 하며, 락은 사용할 툴이지 피해야 할 것이고, 부족한 자원도 아님.
- 오라클에서는 로우 수준의 락으로 인한 오버헤드가 없음. 1개든 1,000,000개의 락을 가지든 사용되는 자원의 수는 같음.
- '시스템에 더 낫다'는 이유로 결고 락을 에스컬레이션(로우 락 대산 테이블을 사용하는 것) 해서는 안됨.
- 동시성과 일관성은 동시에 달성되어 바르면서도 정확한 결과를 얻을 수 있음.
문서에 대하여
- 최초작성자 : ~xsoft
- 최초작성일 : 2012년 11월 03일
- 이 문서는 오라클클럽 오라클 성능 트러블슈팅 스터디 모임에서 작성하였습니다.
- {*}이 문서의 내용은 (주)비투엔컨설팅에서 번역한 'Expert Oracle Database'를 참고하였습니다.*
- HOME
- [종료]구루비 DB 스터디
- 2012년 하반기 - 오라클 성능 트러블슈팅의 기초 스터디
- 락은 무엇인가?