-
목차
🧠 워드프레스 데이터 저장 방식의 핵심
워드프레스는 핵심 테이블 외에도 확장성과 유연성을 위해
meta 테이블들을 적극 활용합니다.테이블용도비고wp_postmeta 글(Post) 단위의 커스텀 필드 저장 ACF, 제품정보, 속성 등 wp_usermeta 사용자 단위의 설정/역할/추가정보 저장 멤버십, 포인트 등 wp_options 전체 사이트 수준의 설정 저장 플러그인, 테마 옵션, 캐시 등
🧩 1. wp_postmeta – 모든 글의 확장 필드 저장소
필드명설명post_id 해당 메타가 연결된 글 ID meta_key 메타 키 이름 (예: _price, custom_rating) meta_value 메타 값 (문자열, JSON 등)
✅ 활용 예시: 커스터마이징 상품 데이터
php복사편집update_post_meta($post_id, '_price', 19800); update_post_meta($post_id, 'brand', '애플');조회 시:
php복사편집$price = get_post_meta($post_id, '_price', true);📌 단일 값은 true, 배열/중복은 false
⚠ 성능 주의
- 많은 meta_key가 하나의 post_id에 저장될 경우
→ JOIN 성능 저하 발생 - meta_query는 WHERE 절에서 성능 병목 유발 가능
💡 해결 방법:
- 중요한 값은 커스텀 테이블로 분리
- 자주 사용하는 메타는 인덱스화 고려
👤 2. wp_usermeta – 사용자별 설정과 속성 저장
필드명설명user_id 연결된 사용자 ID meta_key 예: nickname, points, last_login meta_value 사용자별 값 (정수, 텍스트, JSON 등)
✅ 활용 예시: 포인트 시스템
php복사편집update_user_meta($user_id, 'point', 1500);조회:
php복사편집$point = get_user_meta($user_id, 'point', true);📌 회원등급, 사용자별 환경설정, 로그인 이력 관리에 유용
💡 팁: 로그인 로그 자동 저장
php복사편집add_action('wp_login', function($login, $user) { update_user_meta($user->ID, 'last_login', current_time('mysql')); }, 10, 2);
⚙ 3. wp_options – 사이트 전체 설정 저장
워드프레스는 테마/플러그인/사이트 전역 설정을 모두 이곳에 저장합니다.
필드명설명option_name 고유한 설정 키 (siteurl, blogname, my_plugin_setting) option_value 설정 값 autoload yes면 워드프레스 로딩 시 자동 로드됨
✅ 활용 예시: 플러그인 설정 저장
php복사편집update_option('my_plugin_api_key', 'abc123xyz');조회:
php복사편집$api_key = get_option('my_plugin_api_key');
⚠ 성능 팁: Autoload 최적화
- autoload = yes 인 항목은 페이지 로딩 시 무조건 불러옴
- 너무 많으면 메모리 과부하
확인 쿼리:
sql복사편집SELECT COUNT(*) FROM wp_options WHERE autoload = 'yes';💡 500개 이하 유지 권장
💾 고급 전략: 구조화 vs 비구조화
저장 전략설명예구조화 각 값은 별도의 row로 저장 (meta 방식) ✅ 유연성, ❌ JOIN 많아짐 비구조화 JSON 형태로 한 row에 저장 ✅ 빠름, ❌ 검색 불리 예시:
php복사편집update_post_meta($post_id, 'product_data', json_encode([ 'price' => 19800, 'color' => 'black', 'stock' => 20 ]));
✅ DB 활용 최적화 체크리스트
항목완료 여부postmeta/usermeta 데이터 중복 여부 확인 ✅ / ❌ 자주 조회되는 메타 인덱스 고려 ✅ / ❌ options 테이블 autoload 과잉 여부 점검 ✅ / ❌ 반복적 메타 → 커스텀 테이블 분리 고려 ✅ / ❌ JSON 저장 방식 vs 메타 분산 전략 결정 ✅ / ❌ '워드프레스' 카테고리의 다른 글
🚀 워드프레스 백엔드 성능이 중요한 이유 (1) 2025.05.07 🔍 기본 워드프레스 검색의 한계 (0) 2025.05.06 🔧 왜 플러그인을 구조화해야 할까? (1) 2025.05.05 🤖 왜 워드프레스에 AI를 도입해야 할까? (3) 2025.05.05 🧠 왜 마이크로서비스가 필요한가? (2) 2025.05.03 🎯 왜 워드프레스를 버전 관리해야 할까? (1) 2025.05.02 ☁️ 서버리스(Serverless)란? (1) 2025.05.02 🚀 CDN이란? (3) 2025.05.01 - 많은 meta_key가 하나의 post_id에 저장될 경우