데이터 저장 질문

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 : 5.4.3
  • 프로젝트명 : 푸른달
  • 테이블명 : PlayerInfo , Inventory , SkillInfo

안녕하세요. 처리하는 데이터가 많다보니, 저장을 할때마다 프레임드랍이 생기는 상태입니다. 이전에 출시한 게임 역시 이러한 문제 때문에 스트레스가 있었는데요. 혹시 좋은 방법이 없을까요? 현재 저장 방식은 업데이트를 사용하지 않고, Insert 함수를 이용해 저장을 해왔습니다.

이번에 업데이트 함수로 변화되는 변수만 저장을 하고 있기는 한데, Update 함수를 사용하려면 해당 테이블의 Indate 값을 불러와야 해서 아래와 같은 형태로 사용하게 됩니다.

BackendReturnObject bro = Backend.GameData.GetMyData("PlayerInfo", new Where(), 1);
		var inDate = bro.Rows()[0]["inDate"]["S"].ToString();

		Param param = new Param();
		param.Add("skillpaper", GameManager.Instance.PlayerCS.Skillpaper.GetDecrypted());

		Backend.GameData.Update("PlayerInfo", inDate, param);

질문은 두 가지입니다.

(1). GetMyData 함수와 Update 함수 두 가지를 사용하더라도 이와 같은 방법으로 저장하는 것이 Insert 함수로 유저 데이터를 저장하는 것보다는 부담이 덜한지? (프레임 드랍)

(2). 추천할만한 방식이 존재하는지?

초보 개발자라 아직 부족한 면이 많습니다. 혹시나 더 좋은 방법이 있는지 질문 드립니다.

안녕하세요 개발자님,

동기 방식의 경우, 호출한 후에 응답까지 모든 프로세스가 멈추기 때문에 멈춤현상 등이 발생한 것 처럼 보여지게 됩니다.
해당 함수들을 SendQueue 형식으로 바꾸어 사용하는 것을 추천드립니다.

SendQueue.Enqueue(Backend.GameData.GetMyData, "tableName", new Where(), bro =>
{
  //이하 로직
}

Insert로 저장할 경우 Update와 크게 속도 차이는 발생하지 않지만 데이터가 새로 생성되기에 이후, 읽기 시에 양이 많아져 요금 혹은 시간이 증가할 수 있습니다.
만약 해당 테이블에 데이터가 존재한다면 Update를 이용하는 것을 추천드립니다

감사합니다. 세이브 방식 전체 변경했습니다.