DBAtlas · 데이터베이스 운영 아틀라스

통계 갱신(옵티마이저용)

Oracle

EXEC DBMS_STATS.GATHER_TABLE_STATS('HR', 'EMPLOYEE');
-- Whole schema: EXEC DBMS_STATS.GATHER_SCHEMA_STATS('HR');

AUTO 작업이 보통 야간에 수집한다. 문제가 생기면 수동으로 수집한다. ESTIMATE_PERCENT=>AUTO_SAMPLE_SIZE가 권장된다.

PostgreSQL

ANALYZE customer;
-- Both cleanup and analyze: VACUUM ANALYZE customer;

Autovacuum이 자동으로 수행한다. 대량 데이터 적재 직후에는 수동 ANALYZE를 실행해야 정확한 실행 계획이 나온다.

MySQL

ANALYZE TABLE customer;

InnoDB에서 짧은 읽기 락을 건다. 대형 테이블은 활동이 적은 시간에 실행한다.

SQL Server

UPDATE STATISTICS dbo.customer WITH FULLSCAN;
-- Whole database: EXEC sp_updatestats;

FULLSCAN이 가장 정확하지만 비용이 가장 크다. 대형 테이블에서는 샘플링(SAMPLE)이 나을 수 있다.

MongoDB

// There are no manual statistics; the planner measures at runtime.
// To clear a stale plan cache:
db.customer.getPlanCache().clear()

MongoDB는 비용 추정 대신 실제 시도(plan racing)를 수행하므로 수동 통계가 필요 없다.

Redis

# Not applicable: Redis has no query optimizer / statistics.

명령 복잡도는 고정되어 있으며, 성능은 데이터 구조 선택에 달려 있다.

DBAtlas에서 열기 →