inflearn logo
강의

Course

Instructor

[C# and Unity MMORPG Game Development Series] Part 9: MMO Content Implementation (DB Integration + Large-scale Architecture + Live Preparation)

DB connection completion

DB 쓰레드 질문입니다

267

saddleman801433

2 asked

0

존 별로 병렬처리를 한다고 했을 때도

DB쓰레드를 만들어야 할까요?

병렬처리를 위함이라면 

각 존 쓰레드에서 db까지 처리해도 될거 같아서 질문드립니다.

 

MMORPG

Answer 1

1

Rookiss

존 별로 병렬처리를 한다고 했을 때도
DB쓰레드를 만들어야 할까요?
병렬처리를 위함이라면 
각 존 쓰레드에서 db까지 처리해도 될거 같아서 질문드립니다.

-> Zone 쓰레드에서 DB 처리까지 바로 처리하지 않는 이유는,
DB 저장 명령어가 비동기 작업이 아니고 굉장히 오래 걸리는 작업이기 때문입니다.
특히 나중에 가서 데이터가 몇천만 단위가 되면, 저장 작업이 오래 걸릴 수 있습니다.
SaveChanges를 했을 때 비록 우리 눈엔 0.01초가 짧아 보일지 모르나
서버 입장에선 0001초가 아주 긴 시간이고, 이런 것들이 축적되면 게임 컨텐츠 진행에
렉을 유발하기 때문에 분리하는 것입니다.

두번째로 이건 기획에 따라 다르지만,
DB 처리를 병렬로 처리하면 골치 아파지는 문제가 하나 더 있는데요.

가령 DB 처리가 순차적으로 이루어져야 하는 경우가 있습니다.
ex) Player1의 골드가 100으로 바뀌고, 그 다음 50으로 바뀌고, 그 다음 0으로 바뀌어야 하는데.
이 3가지 요청을 어쩌다 병렬로 처리했더니만, 50, 0, 100 순서로 처리되어 최종 골드가 100이 된다면?

0

saddleman801433

답변 감사드립니다!!

그럼 db잡이 계속 쌓이지만 않게되면 (약1초 2초 지연후 서서히 모두 처리됨) 하나의 쓰레드로 처리 가능한 것입니까?

1

Rookiss

인디 게임 수준이라면 DB 쓰레드 1개로 가는 것이 정신건강에 좋습니다.
그러나 실제 큰 회사에서 만드는 MMO에선, 어찌됐건 DB Connection 쓰레드를 4~5개 두고
다만 위에서 얘기한대로 순서가 중요한 애들은 순서에 맞게 처리되도록
이런 저런 코드들을 추가로 넣어줘야 합니다.

0

saddleman801433

답변 정말 감사합니다!!

마우스 이벤트 처리방법(오브젝트간 인터렉션)

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