버그 해결을 위한 모든 질문을 던져
0 votes
430 views
최근 c++로 포트폴리오용으로 게임서버를 제작중입니다

MySQL로 유저의 데이터를 관리하려고하는데

그냥 구조체를 바이너리 파일로 써도 되지않을까하는 생각이 들었는데

MySQL이 속도적으로 더 빠를까요?

MySQL이 갖는 이점이 무엇인지 궁금합니다..
asked (12 point)
수정됨 , 430 views
가격이 싼거 아닌가요. 오픈 소스이고 오라클이 관리해주고, 성능도 괜찮고요.

원래 무료였는데 지금은 유료인거 같던뎅..

 

일단 중요한 성능면에선, MSSQL과 MySQL이 차이가 눈에 띄게 나는것은 못 느꼈고요.

제 경우엔 비슷하다고 느껴졌습니다.

 

다만 MySQL은 프로시저를 사용하면  좀 더 느려진다고, 쓰지말라고 해서 이게 별로 더라고요.

프로시저로 관리하면서 프로시저 내에서 트랜잭션도 사용하고 하면 편리할 것 같은데..

 

그러나, 이런 문제는 RDBMS 샤딩이나 클러스터화로 다 해결되는 걸로 보입니다.

어차피 대규모 서비스 하려면 MSSQL로 샤딩, 클러스터화를 신경 안쓸 수 는 없을 거고요.

 

MySQL 괜찮은 DB입니다. 실제 서비스에서도 많이 사용하고, 더군다나 포트폴리오로 이용하실 시,

성능으로 문제 되시진 않으실 겁니다. 포트폴리오 용도라면 프로시저 편하게 사용하셔도 된다고 생각

합니다. 서비스 중인 서버 중에서도 프로시저 사용하는 서버도 있지 않을까 싶네요.

 

이상 짧막한 지식 공유드렸습니다.
답변 감사합니다!

3 answers

+2 votes
우수 답변
유저 데이터를 바이너리로 저장하고 로드 한 후 디시리얼라이즈 하는게 더 빠를겁니다. 이렇게 서비스하는 회사도 이미 있고요.

다만, 이렇게 하는경우 게임 오픈하고 나서 데이터 분석을 하거나 간단한 조회가 필요한 경우에도 상당히 번거롭게 됩니다. 그래서 범용적이고 데이터 조회가 편한 Mysql같은 RDBMS를 쓰는것이죠.
answered (38 point)
선택됨
답변 감사합니다
바이너리 파일을 사용할 경우 다수의 서버 인스턴스에서 파일에 접근하려는 경우 골치아플거에요... RDBMS 를 사용하면 편해지죠.
RDBMS를 검색하고
RDBMS와 NoSQL의 차이를 알았습니다
유저의 데이터 관리에는 무엇이 더 효율적인가요?
정답은 없습니다. 현재 게임의 구조와 특징 및 각종 상황에 따라 적재적소한 방식을 찾아야죠. 다만, 지금 무엇이 좋은지 잘 모르겠다면 rdbms를 보다 먼저 공부하고 익숙해지시는걸 추천드립니다.
+1 vote
RDBMS와 IO 입니다.
answered (142 point)
0 votes
대충 유저 스트럭쳐가 2048byte라고 치고 거기서 tinyint 필드 하나만 변경되었다치면 바이너리는 2048byte update , sql은 1byte죠
answered (97 point)
이미 아실수도 있지만, 일반적으로 트랜잭셔널 rdmbs는 버퍼 관리자의 상황에 따라 트랜잭션 처리를 복구할 수 있는 undo로그와 redo 로그등을 추가로 남기게 됩니다.

따라서, 1byte보다 많은 양의 쓰기 오퍼레이션이 발생합니다.

그리고 그 로그를 쓰는데도 상당히 많은 시간이 소요되고 sql 파싱등에 소모하는 자원도 존재하기 때문에 단순히 sql과 바이너리의 업데이트된 자료크기만을 비교하는 것은 부족하다고 생각합니다.

다만, sql의 장점을 버리고 바이너리를 사용하는 것에 찬성하는 것은 아닙니다.
바이너리를 사용해도 로그는 남겨야 하므로 큰 의미 없는거 같습니다.  쉽게 2개의 차이를 설명한겁니다.

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

242 질문
373 answers
379 댓글
475 users