# 데이터 저장소 — what to reach for first ## PostgreSQL ```bash psql -U -d ``` ``` \conninfo 지금 어디에 붙어 있나 \dt 테이블 목록 \d 구조 · 인덱스 · 제약 \du 롤 \l 데이터베이스 목록 \x 세로 출력 토글 (넓은 행을 볼 때) ``` ```sql SHOW ; -- 전역값 SELECT * FROM pg_stat_activity; -- 지금 도는 쿼리 EXPLAIN ; -- 계획만 EXPLAIN (ANALYZE, BUFFERS) ; -- 실제 실행. 변경 쿼리에 쓰면 실제로 바뀐다 ``` 한 줄로 값만 뽑을 때. ```bash kubectl exec deploy/postgres -- psql -U -d -tAc 'select count(*) from ' ``` 문장 로깅 — 애플리케이션을 고치지 않고 「무엇이 DB 를 어떻게 쓰는지」 본다. ```sql ALTER SYSTEM SET log_statement = 'all'; SELECT pg_reload_conf(); -- 끝나면 되돌린다 ALTER SYSTEM RESET log_statement; ``` ## Redis ```bash redis-cli ping redis-cli info server | head redis-cli dbsize redis-cli --scan --pattern '*' # KEYS 대신. 블로킹하지 않는다 redis-cli type redis-cli ttl redis-cli --no-raw get # 바이너리를 이스케이프해 보여 준다 redis-cli config get appendonly ``` `\xac\xed` 로 시작하면 Java 네이티브 직렬화라 사람이 읽을 수 없다. `/data` 가 볼륨이 아니면 영속화 설정은 컨테이너와 함께 사라진다. ```bash kubectl get pod -l app=redis -o jsonpath='{.items[0].spec.volumes}' ```