안규 공부방

MS-SQL > Transaction & Lock

등록일 : 2017-07-03 19:38 조회수 : 92,966

안녕하세요.
오늘만에 새로운 내용을 올리는거 같아, 오늘 기분이 좋네여 ^^;
 
제가 쓰는 이런 내용을 보는이는 많이 없지만, 그래두 어차피, 제가 나중에 다시 참고하는 자료라
생각하고 열심히 쓰고 있답니다... 홍홍
 
제가 건망증이 심해서 공부하고 사용했던 내용이라두, 금방 잊어버리곤 하거든요....
 
이번에는 트랜잭션과 락이라는 개념을 적어볼까 합니다.
 
  9.1.1 트랜잭션과 락의 개념
 
  SQL 서버에서의 트랜잭션은 어떤 커넥션에서 데이터를 읽거나 수정할때 해당 작업이 모두 정상적으로 처리되었는지,
  또는 조금이라도 오류가 났을때 모두가 작업 실행 이전의 상태로 되돌려 주는지 이러한 것들을 해결하는것이라
  이해하시면 될듯 합니다.
  클라이언트 입장에서는 Transact-SQL 쿼리의 처리 완결 단위로 볼수 있으며,
  서버 입장에서는 락 처리와 오류가 발생했을 때 데이타 복구의 단위로 볼수가 있습니다.
 
  실무에서 데이타베이스를 가지고 작업을 할때는 대부분 하나의 DBMS에 여러명의 사용자가 동시에 연결해서 사용하게
  됩니다. 그리구, 이렇게 작업을 하게 되면 여러명이 동일한 데이터베이스 내의 데이타를 거의 동시에 수정을
  하기도 합니다.
 
  이때 DB에서는 정확하고 일관성 있게 저장되거나, 수정되어져야 합니다.
  만약 시스템에 갑자기 H/W,S/W적인 오류가 나더라두 안전하게 데이터가 복구되어야 하며, 이때에도 물론 데이터의
  일관성이 유지되어야 합니다.
 
  동시성(Concurrency)은 하나의 데이터베이스를 여러명이 동시에 사용할수 있도록 해 주는 개념이며,
  항상 데이타가 정확하게 저장되도록 유지시켜 주는 개념이 일관성(Consistency)이라고 합니다. 이 두가지는 DB에서
  가장 필요한 개념이며, 이것들은 서로 반대적인 성격이 있습니다.
 
  9.1.2 트랜잭션(Transaction)
  간단한 예를 들어보도록 하져..
 
  우리가 어떤 테이블에 데이터가 백만 건이 들어 있다고 가정합니다.
  사용자가 퀴리를 보내서 그중에서 오십만건을 다른값으로 수정하도록 했습니다.
  이때 DBMS에서 데이터를 삼십만건 정도 수정처리한후에 갑자기 전원이 나가버렸어여...
 
  나중에 다시 전원이 들어 왔을때, 수정된 삼십만건 정도의 데이터와 아직 수정안된 나머지 데이터를 어떻게
  해야 할까여???
 
  (-.-);
 
  여러분은 그럼 아마, 몇일은 이 데이타들 때문에 밤샘을 해야 할지도 모릅니다... 미칠 노력이겠져. 누구한테
  하소연할수도 없구,,,,
 
  그럼, 도데체 어떻게 처리하면 이런 문제를 해결할수 있을까여?
 
  이럴때에는 트랜잭션 처리를 해주면 됩니다.  DBMS에서 트랜잭션이라는 것은 , insert,update,delete등의 명령어를
  사용할때처럼 데이터에 수정이 가해지는 작업을 할때나, DDL(Data Definition Language)을 사용할때처럼 데이터의
  저의 자체가 변하는 작업등을 할때 엔진 내부에서 데이터를 처리하는 기본 단위입니다.
 
  SQL 서버에서 처리하는 모든 트랜잭션은 실제 데이터가 수정되어 하드 디스크에 저장되기 전에 먼저
  트랜잭션 로그라는 데이터영역에 기록됩니다.
 
  이것은 트랜잭션 처리도중에 오류가 발생해서 실제 데이터가 모두 하드디스크에 저장되지 않았더라두 트랜잭션
  로그 데이터를 이용해서 데이터가 일관성 있게 복구 가능하게 해 준답니다.. ^^;
 
  여기에서 중요한거 트랜잭션 로그 입니다.... 쿄쿄쿄 아시겠쪄?
 
  9.1.3 락(Lock)
  또하나의 예를 들어 보지여.
 
  은행 계좌에서 500 원이 있습니다. A,B 두사람이 400원을 출금하려고 합니다.
  만약 A,B두사람이 도시에 잔고조회를 해서 500원을 읽은후, 400원을 출금하려고 한다면 은행 디비는 어떻게 처리를
  해 줘야 할까여?
  그리구 또하나, 많은 레코드가 있는 테이블에서 각종 통계 데이타를 추출한다고 가정할때, 그 중간에 다른 사용자가
  데이터를 추가하거나, 수정,삭제하려고 한다면 어떻게 일관성을 보장받을수 있을까여?
 
  어렵나여?
 
  이럴때 사용하는게 락입니다.
  트랜잭션을 처리하면서 처리되는 해당 데이터 영역에 대해서는 락처리를 하면 됩니다.
  락은 동일한 데이터를 여러명의 사용자가 동시에 사용하려고 할때 그것을 막아주는 방법으로 데이터의 일관성을 보장
  받을수 있게 합니다.

오늘은 트랜잭션과 락의 개념을 봤구여. 이제 하나 하나씩 사용법을 간단히 알아보도록합지여.
오늘 지루하셨져??

감기 조심하세여...
 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.