DB 쓰레드 질문입니다
267
2 asked
존 별로 병렬처리를 한다고 했을 때도
DB쓰레드를 만들어야 할까요?
병렬처리를 위함이라면
각 존 쓰레드에서 db까지 처리해도 될거 같아서 질문드립니다.
Answer 1
1
존 별로 병렬처리를 한다고 했을 때도
DB쓰레드를 만들어야 할까요?
병렬처리를 위함이라면
각 존 쓰레드에서 db까지 처리해도 될거 같아서 질문드립니다.
-> Zone 쓰레드에서 DB 처리까지 바로 처리하지 않는 이유는,
DB 저장 명령어가 비동기 작업이 아니고 굉장히 오래 걸리는 작업이기 때문입니다.
특히 나중에 가서 데이터가 몇천만 단위가 되면, 저장 작업이 오래 걸릴 수 있습니다.
SaveChanges를 했을 때 비록 우리 눈엔 0.01초가 짧아 보일지 모르나
서버 입장에선 0001초가 아주 긴 시간이고, 이런 것들이 축적되면 게임 컨텐츠 진행에
렉을 유발하기 때문에 분리하는 것입니다.
두번째로 이건 기획에 따라 다르지만,
DB 처리를 병렬로 처리하면 골치 아파지는 문제가 하나 더 있는데요.
가령 DB 처리가 순차적으로 이루어져야 하는 경우가 있습니다.
ex) Player1의 골드가 100으로 바뀌고, 그 다음 50으로 바뀌고, 그 다음 0으로 바뀌어야 하는데.
이 3가지 요청을 어쩌다 병렬로 처리했더니만, 50, 0, 100 순서로 처리되어 최종 골드가 100이 된다면?
1
인디 게임 수준이라면 DB 쓰레드 1개로 가는 것이 정신건강에 좋습니다.
그러나 실제 큰 회사에서 만드는 MMO에선, 어찌됐건 DB Connection 쓰레드를 4~5개 두고
다만 위에서 얘기한대로 순서가 중요한 애들은 순서에 맞게 처리되도록
이런 저런 코드들을 추가로 넣어줘야 합니다.
마우스 이벤트 처리방법(오브젝트간 인터렉션)
0
621
1
RecvArgs_Completed에서 lock을 안하는 이유
0
516
1
Entity framework 질문드립니다.
0
574
2
json 직렬화
1
287
1
mmo 와 pvp
0
533
2
github로 프로젝트를 push, pull할 때 질문
1
529
1
Iocp 서버 관련 질문드립니다.
0
327
1
서버 관련 질문
0
395
1
DB 처리관련 질문이 있습니다
0
301
1
안녕하세요. 질문드립니다.
1
1507
2
이해한 것이 맞나 궁금합니다.
0
285
1
마이그레이션 파일이 이상합니다.
0
281
1
강의 마지막으로 질문 드립니다.
0
678
2
ItemDbId,구조 설계
0
264
1
MMO 서버 관리 질문 드립니다!
0
321
1
디비 정보 나누기
0
239
1
AccountDb 업데이트
0
306
1
콘솔창이 아니라 브라우저에서 실행
0
280
2
메모리 누수문제.
0
495
1
유니티에서 클라이언트 빌드후 실행하면 맵 로드가 안됩니다.
0
362
1
외부 네트워크에서도 접속해서 게임하기
1
338
1
유니티클라에서 패킷을 계속 보내지 않고 lockstep이나 추측항법으로 동기화를 할 수 있을까요?
0
596
1
서버 메모리와 DB 저장 관련 질문
0
368
1
JsonUtility.FromJson 관해서 질문있습니다.
0
276
1

