g5_point 질문입니다.
본문
현재 g5_point 테이블 용량이 4기가가 넘어가서 너무 무겁습니다.
혹시 g5_point내역을 현재값을 제외한 모든 내역을 삭제할 순 없을까요?
참고로 아미나를 사용중이며, 열람기능을 사용하고 있어 https://sir.kr/g5_plugin/663 플러그인 사용하면 포인트에 커다란 오차가 생겨버립니다...ㅠㅠ
답변 4
구상을 해 본 적은 있는데, 실제 실행해보지는 못했습니다.
만일의 상황 대비 기존 테이블 백업 후, 다음과 같이 진행하는 것을 추천합니다.
1. 기존 point 테이블 백업 (만일의 상황 대비)
2. 기존 point 테이블 전체 데이터 삭제
truncate table g5_point;
3. 각 회원들의 현 보유 포인트(g5_member.mb_point), point 테이블에 반영
※ 참조 쿼리
INSERT INTO `g5_point`
(`mb_id`, `po_datetime`, `po_content`, `po_point`, `po_use_point`, `po_expired`, `po_expire_date`, `po_mb_point`, `po_rel_table`, `po_rel_id`, `po_rel_action`)
select mb_id, now(), '포인트 내역 초기화', mb_point, 0, 0, '9999-12-31', mb_point, '@init', mb_id, '초기화'
from g5_member
order by mb_no asc;
삭제 하지 마시고 디비툴로 이름만 살짝 바꾸시고 필드 다시 만들어서 쓰세요 백업해야되요
포인트 테이블에 모든 행을 합하여 계산되어 회원정보의 포인트로 업데이트됩니다.
포인트 테이블의 내역을 모두 삭제하시고
회원정보를 불러와, 현재 가지고있는 포인트만큼을 다시 포인트 테이블로 insert하시면
행이 줄어들겁니다.
즉 포인트 테이블에서 아이디가 test라면
test / 100포인트
test / 300포인트
test / -200포인트
이런식으로 기록이 되는데,
회원정보에서 mb_point 에는 모든 계산된 값인 200포인트가 저장되어집니다.
따라서 모든 테이블의 행을 삭제하시고
회원정보를 루프로 반복하여 읽어들인 후
다시 point테이블에 최종 포인트값만 넣으시면됩니다.
물론 백업은 필수.
답변을 작성하시기 전에 로그인 해주세요.