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

C++빌더 Q&A
C++Builder Programming Q&A
[58332] Re:Re:MySQL, TSQLConnection 질문
locke [syiware] 1237 읽음    2009-09-02 13:08
결국 mysql이 문제라는 건가요? 해결책은 없을까요?

civilian 님이 쓰신 글 :
: MySQL이 Thread-Safe 하지 않아서 발생하는 문제입니다.
:
: locke 님이 쓰신 글 :
: : db서버는 리눅스에서 mysql을 쓰구요. (버전은 모르겠음)
: :
: : 소켓서버(windows환경)는 클라이언트의 요청에 따라 mysql서버에 쿼리를 처리하여 결과값을 클라이언트에게 돌려주는 기능을 합니다.
: :
: : c++빌더 6상에서 TSQLConnection을 사용하여 db에 접속하여 쿼리를 가져오는데요.
: :
: : 동시접속 테스트를 하느라 동시에 100~500개의 커넥션을 소켓서버에 일괄로 연결해서
: :
: : 테스트를 하고있는데 -이전에도 비슷한 글을 올렸습니다만-
: :
: : 문제가 이거거든요. 서버쪽에 TSQLQuery::Open() 명령어를 통해서 어떤 쿼리를 동작중일때
: :
: : 다른 클라이언트 커넥션 스레드에서 쿼리를 동시에 서버로 날리면 db쪽에서 에러가 납니다. 결과적으로는 Access Violation이 나오는데
: :
: : 혹시나 싶어서 TCriticalSection을 사용하여 하나의 쿼리작업이 끝날때까지 다른 스레드가 대기하도록 처리하면
: :
: : 아무 에러가 없습니다. 물론 서버에 접속한 클라이언트 커넥션은 한 SQLConnection에 물려서 db를 처리하구요.
: :
: : TSQLQuery는 각 커넥션이 소켓에 들어오면 쿼리를 할 때만 동적으로 그때그때 생성해서 SQLConnection에 작업을 수행하므로 각각의 스레드가 sqlquery의 공유위반으로 access violation이 걸릴 이유는 없습니다.
: :
: : 혹시나 싶어서 SQLConnection을 복수개의 커넥션 풀(10개 이상의 db커넥션을 미리 만들어놓음)을 만들어서 분배해줘도 동일한 오류가 납니다. CriticalSection을 쓰면 오류는 안나는데..이렇게 되면 복수개의 커넥션 풀을 만들어도 한 쿼리가 끝날때까지 다른 애들은 기다려야되니까 DB Connection 풀링의 의미가 없어집니다.
: :
: : 이게 mysql이라 그런건지.. 아니면 c++빌더의 sqlconnection의 성능결함인지를 모르겠어요.
: :
: : 예전에 oracle이나 mssql을 쓸때는 이런 문제가 없었거든요.
: :
: : 혹시 mysql이나 tsqlconnection을 즐겨 쓰시는 분중에 해답을 알고계신 분 계시면 좀 설명좀 해주세요.
: :
: : c빌더상에서 mysql을 접속하는 db컴포넌트를 바꿔야 되는건지..아니면 db자체를 mysql에서 oracle이나 mssql로 바꿔야되는지요..
: :
: : -locke

+ -

관련 글 리스트
58329 MySQL, TSQLConnection 질문 locke 1822 2009/09/02
58330     Re:MySQL, TSQLConnection 질문 civilian 1353 2009/09/02
58723         Re:Re:MySQL, TSQLConnection 질문 locke 1121 2009/10/07
58724             Re:Re:Re:MySQL, TSQLConnection 질문 civilian 1307 2009/10/07
58332         Re:Re:MySQL, TSQLConnection 질문 locke 1237 2009/09/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.