DB 멀티쓰레드 프로그램 질문입니다...

익명 사용자의 이미지

안녕하세요 DB에 대해서 공부하면서 코딩하고 있는데 (MySQL 사용중)

일정 개수의 쓰레드를 미리 생성하고 Main과 작업큐, 리턴큐를 두개 공유하게 한다음

Insert, delete, update, select 문중 선택해 데이터를 입력한 뒤 작업큐에 push 하고 push했다는 이벤트를 발생시키면 쓰레드들의 Sleep이 풀리면서 작업큐에서 pop을 해 연결된 DB에게 쿼리를 쏴주고 리턴받아 큐에 다시 넣어줍니다 그리고 Main은 리턴큐를 검사해 결과를 출력하는 프로그램인데요

문제가

DB의 데이터는 정수가 될 수 있고 문자열이 될 수도 있으니 버퍼에 문자열로 파싱해 주고받게 했었는데

int 4바이트에 비해 문자열은 너무 크니 메모리손해가 발생한다고 생각하는데 어떻게하면

문자열이 아닌 자료형을 문자열과같이 구조체가 아닌 형태로 전달할 수 있을까요?

또, Main이 리턴큐를 검사하는동안 쓰레드들은 완료된 작업을 push하지 못하는데 단순히 Main이 또다른 큐를 가지는 방법 말고 다른 방법이 있을까요?

jick의 이미지

> int 4바이트에 비해 문자열은 너무 크니 메모리손해가 발생한다고 생각하는데

그렇게 생각하신 이유는 뭔가요?

좀 더 구체적으로 말하자면, 작업큐/리턴큐에 쌓일 수 있는 정수의 갯수는 최대 몇 개쯤을 예상하고 계십니까? 100개? 백만개? 10억개?

(발생하는 이벤트의 총 갯수가 아니라 큐에 쌓여서 처리를 기다리고 있는 데이터의 양을 말하는 겁니다.)

그 숫자가 어느 수준이냐에 따라 "정수를 문자열로 저장하는" 것이 프로그램이 돌아가느냐 뻗느냐를 결정하는 핵심 요소가 될 수도 있고, 아무 효과도 없는 데 괜히 프로그램만 복잡하게 만들어 버그를 양산하는 삽질이 될 수도 있습니다.