03eea2098e
- 01~07 작업 문서를 운영 측정값 기준으로 정리 (문서의 DB 비밀번호 삭제) - app_highest_record 중복 8,795행 점수 기준 정리, 인덱스 5개 + UNIQUE 키 2개 추가 - 02·04 공통 측정 스크립트와 측정 결과, comparison.txt 추가 - 서버 처리 시간 18~292배 단축, 결과 행 수 동일 - 운영 데이터 백업과 권한(비밀번호 해시) 파일은 커밋에서 제외 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
68 lines
3.1 KiB
Plaintext
68 lines
3.1 KiB
Plaintext
=== 운영 DB 사전 측정 결과 (2026-09-15) ===
|
|
|
|
1. 테이블 크기 (premeasure_table_sizes.txt)
|
|
- best_record data_mb: 72.5
|
|
- best_record index_mb: 72.1
|
|
- best_record 행 수: 약 1,152,399 (information_schema 추정치) / 월별 합계 1,210,482
|
|
- typing_exam_record data_mb: 10.3
|
|
- typing_exam_record index_mb: 10.9
|
|
|
|
2. 월별 적재량 (premeasure_monthly_load.txt)
|
|
- 최근 1개월 (2026-08): 51,991 행
|
|
- 2026-09 (15일까지): 39,366 행
|
|
- 최근 3개월 평균 (2026-06~08): 57,968 행/월
|
|
- 전년 같은 기간 평균 (2025-06~08): 27,049 행/월 → 약 2.1배 증가
|
|
|
|
3. 테스트용 선생님·앱 (premeasure_top_maestro_app.txt)
|
|
- MaestroID: 181
|
|
- AppID: 21
|
|
- 30일 기록 수: 1,089
|
|
|
|
4. 일간 랭킹 EXPLAIN (premeasure_explain_daily_ranking.json)
|
|
- access_type: index_merge (예상했던 ALL 아님)
|
|
- key: MaestroID ∩ AppID (기존 단일 인덱스 2개의 교집합)
|
|
- rows: 10,100 (예상했던 1,206,768 아님)
|
|
- 날짜 조건(YEAR/MONTH/DAYOFMONTH)은 인덱스로 거르지 못하고 10,100행을 하나씩 확인
|
|
- 참고: 원본 출력은 헤더와 \n 이스케이프 때문에 JSON이 아니었음 → 내용 변경 없이 JSON으로 복원
|
|
|
|
5. 최고기록 테이블 중복 (premeasure_*_duplicates.txt, premeasure_app_highest_dup_count.txt)
|
|
- app_highest_record 중복: 4,823 조합 / 삭제 대상 8,795 행
|
|
· 테이블 약 229,459행(추정치)의 약 3.8%
|
|
· 상위 10개 조합은 각 17~33행
|
|
· 03-0-1에서 작업 당일 다시 세어 비교 (그 사이 조금 늘어날 수 있음)
|
|
- typing_exam_highest_record 중복: 0 건 (빈 파일 = 조회 결과 없음)
|
|
|
|
6. 계정 권한 (premeasure_grants.txt)
|
|
- jisangs@182.217.174.221: SELECT, ALTER ON chocomae.* 만 있음
|
|
- 2026-09-15 임시 부여 후 (premeasure_grants_after.txt):
|
|
+ SUPER ON *.*
|
|
+ INSERT, DELETE ON chocomae.app_highest_record, chocomae.typing_exam_highest_record
|
|
+ SELECT ON mysql.slow_log
|
|
→ 05단계에서 회수 (slow log 복원 후)
|
|
- 원래 권한으로 할 수 없던 작업:
|
|
· 02-1 slow query log 변경 (SET GLOBAL → SUPER)
|
|
· 03-0-3 중복 삭제 (DELETE)
|
|
· 04-5, 07 mysql.slow_log 조회 (SELECT ON mysql.slow_log)
|
|
· 05 slow query log 복원 (SET GLOBAL)
|
|
· 06 삭제 행 복원 (INSERT) → 임시 부여됨
|
|
· 06 ANALYZE TABLE best_record (best_record INSERT 필요, 부여 안 함) → 관리자 계정
|
|
|
|
7. Slow query log 원래 설정 (premeasure_slow_log_settings.txt) — 05단계 복원 기준값
|
|
- slow_query_log: ON
|
|
- long_query_time: 3
|
|
- log_output: FILE
|
|
- log_queries_not_using_indexes: OFF
|
|
- slow_query_log_file: /var/log/mysql/mariadb-slow.log
|
|
- 이전 문서의 1-4 SET GLOBAL은 적용되지 않았음 (SUPER 권한 없음, 적용됐다면 long_query_time=1·log_output=TABLE)
|
|
|
|
8. 준비 확인
|
|
☑ 테이블 크기 확인
|
|
☑ 월별 적재량 확인
|
|
☑ EXPLAIN 결과 저장
|
|
☑ 중복 확인 (전체 개수 포함)
|
|
☑ 계정 권한 확인
|
|
☑ Slow query log 현재 설정 저장
|
|
☑ 작업 권한 임시 부여
|
|
|
|
다음: 02-baseline.md
|