FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[4650] Re:Re:Re:firebird를 php+apache에 함께 사용하려 하는데 CAS문제..
박우성 [solgari] 10820 읽음    2013-09-11 14:44
트랜잭션도 내부적으로 lock을 사용하지만, 문의주신 내용과는 별 상관이 없었군요.

파이어버드의 경우에는 Lock을 위해서  멀티버전 방식으로 동시성 제어를 한다고 합니다.
레코드 단위로 버전을 두어 동시성을 처리한다는 것인데, 자세한 내용은 다음 URL을 참고하시구요.

http://www.firebirdsql.org/en/multi-version-concurrency-control/
http://www.ibphoenix.com/resources/documents/design/doc_22

어찌되었건 간에 대부분의 데이타베이스는 동시에 자료를 Insert/Update하더라도, 정상적으로 다 처리되도록 동시성 제어를 한다는 것입니다.

문의 주신 동시에 발생하는 두가지 Insert는 정상적으로 둘 다 처리됩니다.
( 단, 키 값이 충돌 나는 경우와 같이 오류가 발생하는 경우는 제외 )



궁금이 님이 쓰신 글 :
: 답변 감사드립니다.
:
: 답변에 대해 잘 이해가 가지 않는 부분이 있어서 다시 재질문 드립니다.
:
: 트랜젝션은 작업 처리를 하다가 중간에 실패 했을 때 다시 롤백을 위한 수단으로 저는 이용하고 있는데요.
: 근데 궁금한거는 동시 접근에 대해서
: 트랜젝션이 lock의 기능이라던가 하는 명령어가 아닌데, 동시 접근에 대해서 어떻게 작용하는지 잘 모르겠습니다.
:
: A와 B가 동시에 같은 DB데이터를 변경하려고 할때 ...
: A는 원본 테이블Z에 a'라는 값을 넣으려하고
: B는 원본 테이블Z에 b'라는 값을 동시에 넣으려고 하면
:
: 원본테이블 Z에는
: 1. a'라는 값만 들어가거나
: 2. b'라는 값만 들어가거나
: 3. 혹은 DB안에서 동시라고 해도 순차로 처리를해서 a'와 b'가 들어간다거나..
: 하는 점이 궁금합니다.
:
:
: 만약 동시에 접근할때 a'나 b' 하나만 들어간다면 lock에 대한 기능이 필요할 것 같은데,
: firebird나 ibase에서 준비된 기능이 있는지..궁금합니다~~
:
:
:
:
: 박우성 님이 쓰신 글 :
: : 동시 접근과 원자성(?)을 말씀하시는 것으로 봐서는 트랜잭션을 말씀하시는 것 같네요.
: :
: : 파이어버드도 다른 DB들 처럼 트랜잭션을 당연히 지원합니다.
: :
: : PHP에서 사용하려면, ibase_trans와 ibase_commit/ibase_rollback 등의 함수를 사용하면 되겠습니다.
: :
: : 사용법은 다음 URL 참조
: :
: : http://www.php.net/manual/en/function.ibase-trans.php
: : http://www.php.net/manual/en/function.ibase-commit.php
: : http://www.php.net/manual/en/function.ibase-rollback.php
: :
: : 그리고, DB를 핸들링하려면 기본적으로 트랜잭션에 대한 내용은 반드시 공부를 하셔야 합니다.
: :
: :
: : 궁금이 님이 쓰신 글 :
: : : firebird를 php와 apahce로 사용하려고 하는데요 ...
: : :
: : : 동시에 같은 firebird 테이블에 접근하려고 할때 쓰기에 대해서 어떤식으로 처리되는지 궁금합니다.
: : :
: : :
: : : firebird에서 원자성(?)을 보존해 주지 않는다면
: : :
: : : 테이블쓸때 락을 걸고
: : :
: : : 테이블 다쓰고 락을 풀어서
: : :
: : : 다음 사람이 테이블을 쓸수 있게 해줘야 하는지....
: : :
: : :

+ -

관련 글 리스트
4646 firebird를 php+apache에 함께 사용하려 하는데 CAS문제.. 궁금이 5346 2013/09/09
4647     Re:firebird를 php+apache에 함께 사용하려 하는데 CAS문제.. 박우성 12503 2013/09/10
4648         Re:Re:firebird를 php+apache에 함께 사용하려 하는데 CAS문제.. 궁금이 4849 2013/09/11
4650             Re:Re:Re:firebird를 php+apache에 함께 사용하려 하는데 CAS문제.. 박우성 10820 2013/09/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.