그누보드5 g5uniqid 테이블 데이터 자동 정리 및 관리 방법
페이지 정보

본문
그누보드 및 영카트 운영 시 장바구니와 주문 과정에서 g5_uniqid 테이블에 무분별하게 쌓이는 데이터를 자동으로 정리하여 데이터베이스 용량을 최적화하고 성능 저하를 예방하는 방법을 알아봅니다.
g5_uniqid 테이블 데이터 누적 원인과 문제점
그누보드 영카트 쇼핑몰을 운영하는 과정에서 장바구니와 주문하기 등의 단계를 거칠 때 생성되는 데이터가 자동으로 삭제되지 않고 g5_uniqid 테이블에 계속 쌓이게 됩니다.
이로 인해 발생하는 주요 문제는 다음과 같습니다.
- 데이터베이스 용량 비대화: 불필요한 데이터가 지속해서 누적되면서 DB 용량이 불필요하게 커집니다.
- 성능 저하: 테이블 용량 증가로 인해 DB 조회 성능이 저하될 수 있습니다.
그누보드5 g5_uniqid 테이블 자동 정리 스크립트 적용 방법
그누보드 운영 시 장바구니와 주문 과정 등에서 생성된 데이터가 g5_uniqid 테이블에 누적되는 문제를 방지하기 위해, extend 폴더를 활용하여 매일 한 번씩 조건에 따라 오래된 데이터를 자동으로 정리하도록 설정할 수 있습니다.
1. 적용 전 백업
데이터베이스와 파일 수정 작업을 진행하기 전에는 반드시 웹서버 파일과 데이터베이스를 백업해야 합니다. 문제가 발생했을 때 원상 복구할 수 있는 안전장치를 마련한 뒤 적용을 진행하세요.
2. 스크립트 파일 생성 및 업로드
그누보드 설치 경로 내 extend 폴더에 uniqid_cleanup.extend.php 파일을 생성한 뒤 아래의 코드를 업로드합니다.
<?php
if (!defined('_GNUBOARD_')) exit;
define('UNIQID_CLEANUP_DAYS_NOITEM', 2);
define('UNIQID_CLEANUP_DAYS_HASITEM', 30);
define('UNIQID_CLEANUP_LOG_MAXSIZE', 1048576);
@mkdir(G5_DATA_PATH . '/cache', G5_DIR_PERMISSION, true);
@mkdir(G5_DATA_PATH . '/log', G5_DIR_PERMISSION, true);
$uniqid_cleanup_flag_file = G5_DATA_PATH . '/cache/uniqid_cleanup.flag';
$uniqid_cleanup_today = date('Y-m-d');
if (!file_exists($uniqid_cleanup_flag_file) || trim(@file_get_contents($uniqid_cleanup_flag_file)) !== $uniqid_cleanup_today) {
@file_put_contents($uniqid_cleanup_flag_file, $uniqid_cleanup_today);
$uniqid_cleanup_table = isset($g5['uniqid_table']) ? $g5['uniqid_table'] : G5_TABLE_PREFIX.'uniqid';
$uniqid_cleanup_shop_item_table = isset($g5['g5_shop_item_table']) ? $g5['g5_shop_item_table'] : G5_TABLE_PREFIX.'shop_item';
$uniqid_cleanup_item_count = (int)sql_fetch_value("SELECT COUNT(*) FROM `{$uniqid_cleanup_shop_item_table}`");
$uniqid_cleanup_days = ($uniqid_cleanup_item_count > 0) ? UNIQID_CLEANUP_DAYS_HASITEM : UNIQID_CLEANUP_DAYS_NOITEM;
$uniqid_cleanup_expire_id = (int)date('Ymd00000000', strtotime("-{$uniqid_cleanup_days} days"));
$uniqid_cleanup_del_sql = "DELETE FROM `{$uniqid_cleanup_table}` WHERE `uq_id` < {$uniqid_cleanup_expire_id}";
sql_query($uniqid_cleanup_del_sql, false);
$uniqid_cleanup_opt_sql = "OPTIMIZE TABLE `{$uniqid_cleanup_table}`";
sql_query($uniqid_cleanup_opt_sql, false);
$uniqid_cleanup_log_path = G5_DATA_PATH . '/log/uniqid_cleanup.log';
if (file_exists($uniqid_cleanup_log_path) && filesize($uniqid_cleanup_log_path) > UNIQID_CLEANUP_LOG_MAXSIZE) {
@unlink($uniqid_cleanup_log_path);
@file_put_contents($uniqid_cleanup_log_path, "[".date('Y-m-d H:i:s")."] log reset (size > 1MB)\n");
}
$uniqid_cleanup_msg = sprintf("[%s] cleanup done — deleted uq_id < %s (%d days old), optimized table: %s, shop items: %d\n", date('Y-m-d H:i:s'), $uniqid_cleanup_expire_id, $uniqid_cleanup_days, $uniqid_cleanup_table, $uniqid_cleanup_item_count);
@file_put_contents($uniqid_cleanup_log_path, $uniqid_cleanup_msg, FILE_APPEND);
}
3. 주요 동작 방식 및 확인
- 실행 주기 제어: 캐시 폴더(
data/cache/uniqid_cleanup.flag)에 오늘 날짜를 기록하여 하루에 한 번만 실행되도록 제한합니다. - 기간 설정: 쇼핑몰 상품 존재 여부에 따라 상품이 없으면 2일 이전, 상품이 있으면 30일 이전 데이터를 삭제 대상으로 지정합니다.
- 로그 확인: 스크립트 실행 결과는
data/log/uniqid_cleanup.log파일에서 점검할 수 있습니다.
g5_uniqid 테이블 자동 정리를 위한 상품 유무별 기간 설정 및 실행 주기 동작 방식
그누보드5 운영 시 g5_uniqid 테이블의 데이터 누적 문제를 해결하기 위한 자동 정리 스크립트는 상품 유무에 따라 삭제 기준 기간이 다르게 적용되며, 캐시 폴더의 플래그 파일을 통해 하루 한 번만 실행되도록 제어됩니다.
상품 유무에 따른 삭제 기간 기준
- 상품이 없는 경우: 쇼핑몰 상품 존재 여부를 확인하여 상품이 없으면
2일이전 데이터를 삭제 대상으로 지정합니다. - 상품이 있는 경우: 상품이 존재하면
30일이전 데이터를 삭제 대상으로 지정합니다.
실행 주기 제어 방식
- 플래그 파일 활용: 캐시 폴더(
data/cache/)에 오늘 날짜의 플래그 파일을 기록하는 방식으로 동작합니다. - 하루 1회 제한: 오늘 날짜의 플래그 파일 존재 여부와 기록된 날짜를 비교하여, 하루에 단 한 번만 정리 로직이 실행되도록 제한합니다.
적용 전 백업 및 주의사항
데이터베이스와 파일 수정 작업을 진행하기 전에는 반드시 웹서버 파일과 데이터베이스를 백업해야 합니다. 문제가 발생했을 때 원상 복구할 수 있는 안전장치를 마련한 뒤 적용을 진행해야 합니다.
적용 후 로그 확인 방법
스크립트 적용 후 정상 실행 여부를 점검하기 위해 로그 파일을 확인합니다. 단, 이는 스크립트가 실행되는 환경에서만 유효합니다.
- 로그 파일 경로:
data/log/uniqid_cleanup.log - 점검 내용: 대량의 데이터가 한 번에 삭제되거나
OPTIMIZE TABLE을 통한 최적화 과정에서 발생하는 서버 부하 영향도는 운영 중인 서버 환경에 따라 다를 수 있으므로, 위 경로의 로그를 통해 정상 실행 여부를 점검하는 것이 좋습니다.
상황별 판단 및 행동 가이드
- 내 상황: 그누보드 영카트 쇼핑몰 운영 중 장바구니 및 주문 과정 데이터 누적으로
g5_uniqid테이블 용량이 커져 DB 성능 저하가 우려될 때- 선택 기준: 데이터베이스 및 웹서버 파일 백업을 완료한 후,
extend/uniqid_cleanup.extend.php스크립트를 추가하여 하루 1회 자동으로 오래된 데이터를 정리하고 테이블을 최적화합니다. - 다음 행동: 적용 후
data/log/uniqid_cleanup.log파일을 확인하여 정상 실행 여부와 로그 기록을 점검합니다.
- 선택 기준: 데이터베이스 및 웹서버 파일 백업을 완료한 후,
실전 FAQ
- Q. 스크립트 실행 후 로그 파일(
data/log/uniqid_cleanup.log)에 기록이 남지 않거나 실행되지 않는 경우 어떻게 확인하나요?- A. 하루에 한 번만 실행되도록
data/cache/uniqid_cleanup.flag파일로 제어되므로, 날짜가 변경되었거나 플래그 파일을 임시로 삭제한 뒤 페이지를 새로고침(방문 발생)하여 로그 기록 여부를 다시 점검할 수 있습니다.
- A. 하루에 한 번만 실행되도록
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글그누보드 게시판에서 글이 없는 분류 탭 숨기는 방법 26.09.13
- 다음글Stylebot을 활용한 그누스터디 대문 및 최신글 디자인 커스텀 방법과 적용 확인 26.09.12
댓글목록
등록된 댓글이 없습니다.