Update 에러 문의

문의를 남기실 경우 다음 항목을 작성해 주시면 빠른 답변 처리에 도움이 됩니다.

  • 프로젝트명 : 라이즈
  • 뒤끝SDK 버전 : 5.4.5
  • 에러 코드 :

안녕하세요 저번 문의에서도 말씀드렸듯이 평소엔 로컬에 저장하다가 유저가 원할 때 트랜잭션으로 서버에 저장하는 방법을 사용중인데요

Invalid UpdateExpression: Expression size has exceeded the maximum allowed size;

해당 에러가 발생하고 있는데 어떻게 해결해야 할까요?

들어가는 데이터는 10개의 트랜잭션 1개의 트랜잭션 당 적으면 10개 컬럼 많으면 100개 컬럼까지도 있습니다
총 데이터를 따지면 1~500개의 컬럼이라고 판단됩니다

에러가 날 때 저장되는 컬럼의 갯수입니다

트랜잭션 8

캐릭터 테이블 컬럼 : 44
인벤토리 테이블 컬럼 : 68
스킬 테이블 컬럼 : 6
펫 테이블 컬럼 : 183
몬스터조사 테이블 컬럼 : 5
업적 테이블 컬럼 : 31
상점 테이블 컬럼 : 28
장비 수집 테이블 컬럼 : 8

183개짜리 펫 테이블 안에 데이터를 최대한 합쳐서 70개 정도로 줄이니까 저장이 되긴 됩니다 개수 제한이 있는걸까요?

안녕하세요 개발자님
트랜젝션에 들어가는 총 데이터의 양에 제한이 있습니다.
한번에 처리할 수 있는 데이터의 양은 4메가로 이보다 큰 데이터는 처리가 되지 않습니다.
혹시 한번에 보내시는 데이터의 양이 4메가가 넘으셨는지 확인 해주시면 감사하겠습니다

게임에 데이터가 많은데 그럼 트랜잭션을 이용하지 않는게 나을까요?

한번 요청 보내실때 변경되는 컬럼의 종류가 위에 말씀하시는 만큼인가요?
테이블에 컬럼들이 모두 변경이 되는지? 아니면 특정 컬럼만 변경되는데 데이터를 전부 보내시는지?
1개의 컬럼의 크기가 어느정도 되시는지 알 수있을까요?
변경되는 컬럼의 값만 보내시는데 해당 데이터의 크기가 발생하신다면 트랜젝션 처리가 같이 진행되어야 하는 것들끼리 묶어서 나눠 보내시는게 좋을것같습니다

평소에는 로컬 저장을 하고 유저가 저장 버튼을 누를 때 저장이 진행되기에 변경되는 컬럼은 따로 체크하지 않고 모든 데이터를 보내고 있습니다 1개 컬럼의 크기는 키 포함 하면 20바이트 큰 데이터는 인벤토리 데이터가 유동적이긴 한데 크면 50kb까지도 나오지 않을까 싶습니다 단순 글자수로 계산해보면 4Mb는 넘기 쉽지 않을 것 같은데 컬럼 갯수의 제한은 없는게 맞는거죠?

안녕하세요 개발자님

확인해본 결과, 트랜잭션으로 보내시는 데이터는 4MB 미만으로 확인이 되오나 컬럼의 갯수가 많아 발생하는 것으로 추정이 됩니다.

트랜잭션, 일반 업데이트 모두 수정 가능한 컬럼의 최대 갯수는 합해서 300개입니다.
(기본적인 수정값을 제외하면 290개까지 가능)
최대 컬럼 개수에 대한 설명이 개발자문서에 없던 점, 사전에 안내해드리지 못한점 죄송합니다.

트랜잭션을 나누시거나 수정되는 컬럼의 갯수를 줄이는 작업을 해주시면 에러가 발생하지 않을테니 참고해주시면 감사하겠습니다.

네 답변 감사드립니다!