대학을 졸업하고 이제 필드로 뛰어들게 된 초보 개발자입니다.
SQLite3 사용중 막연한 에러에 부딪혀서 검색해 보던 중 좋은 사이트를 알게 되어 가입하게 되었습니다.
몇몇 질문을 드릴까 하는데 아시는 분은 답변해주시면 정말 감사하겠습니다.
현재 MFC로 서버/클라이언트 프로그램을 작성하고 있는데, SQLite3로 서버에서 데이터 관리를 하고 있습니다.
멀티쓰레드로 클라이언트 요청에 대해 처리를 하고 있는데 그때마다 DB에서 필요한 자료들을 가져와야 하는 상황이라
각 쓰레드가 직접 DB를 open해서 자료를 select하거나 insert하도록 구현했는데, 몇몇 동기화 문제나 공유 sqlite3 구조체가 처리가 끝나지 않았는데
닫혀버리는 문제 때문에 DB에 대한 트랜잭션을 쓰레드 하나에서 처리하도록 했습니다.
그런데 이렇게 작성하고 나니 MFC 응용프로그램이 CPU 점유율이 5초 정도마다 50%까지 치솟아서 메인 다이얼로그가 먹통이 되곤 합니다.
쓰레드의 idle 문제일거라는 분들이 많으셔서 각 워커 쓰레드에다 Sleep을 주기도 해봤지만 점유율은 계속 저대로 인데요..
sqlite3 객체를 각 쓰레드마다 두어야 할지 아니면 점유율 문제를 해결해야 할지 고민이 됩니다.
혹시 이런 경험 있으신 분들 계시면 가이드라인을 제시해 주세요~
ps. CUBRID를 한번 써보고자 했는데 이미 sqlite3로 개발 중이어서 옮겨타질 못했는데, 여기 자료가 꽤 많군요 ^^ 좋은 글 많이 보고 갑니다.
|