이번 파이프라인 작업과 무관하게 작업 트리에 남아 있던 것을 그대로 올린다. 사용자가 「전부 커밋」으로 정했고, 이번 작업과 섞이지 않게 커밋만 나눴다. 대부분은 clean-architecture-backend-template 의 그림 정본 재배치다 — final/assets/diagrams/<이름>/ 에 있던 것이 CLAUDE.md 가 적은 배치인 final/assets/<이름>/ 로 옮겨졌고 .techviz/<이름>/ 이 함께 들어왔다. 삽입 줄의 대부분(3.15M)이 그 .techviz context.json 이다. 그 밖에 ca-tmpl·document-haness 의 정리, .claude/agents/ 열한 개, writing-practitioner-guides 스킬, .playwright-mcp 세션 산출물, scripts/check-ssot-facts.py 와 그 시험이 들어 있다. 이 커밋의 내용은 내가 만든 것이 아니라 이전 세션이 남긴 것이고 검증하지 않았다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
53 lines
1.6 KiB
Markdown
53 lines
1.6 KiB
Markdown
# 데이터 저장소 — what to reach for first
|
|
|
|
## PostgreSQL
|
|
```bash
|
|
psql -U <user> -d <db>
|
|
```
|
|
```
|
|
\conninfo 지금 어디에 붙어 있나
|
|
\dt 테이블 목록
|
|
\d <table> 구조 · 인덱스 · 제약
|
|
\du 롤
|
|
\l 데이터베이스 목록
|
|
\x 세로 출력 토글 (넓은 행을 볼 때)
|
|
```
|
|
|
|
```sql
|
|
SHOW <setting>; -- 전역값
|
|
SELECT * FROM pg_stat_activity; -- 지금 도는 쿼리
|
|
EXPLAIN <query>; -- 계획만
|
|
EXPLAIN (ANALYZE, BUFFERS) <query>; -- 실제 실행. 변경 쿼리에 쓰면 실제로 바뀐다
|
|
```
|
|
|
|
한 줄로 값만 뽑을 때.
|
|
```bash
|
|
kubectl exec deploy/postgres -- psql -U <user> -d <db> -tAc 'select count(*) from <t>'
|
|
```
|
|
|
|
문장 로깅 — 애플리케이션을 고치지 않고 「무엇이 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 '<prefix>*' # KEYS 대신. 블로킹하지 않는다
|
|
redis-cli type <key>
|
|
redis-cli ttl <key>
|
|
redis-cli --no-raw get <key> # 바이너리를 이스케이프해 보여 준다
|
|
redis-cli config get appendonly
|
|
```
|
|
`\xac\xed` 로 시작하면 Java 네이티브 직렬화라 사람이 읽을 수 없다.
|
|
|
|
`/data` 가 볼륨이 아니면 영속화 설정은 컨테이너와 함께 사라진다.
|
|
```bash
|
|
kubectl get pod -l app=redis -o jsonpath='{.items[0].spec.volumes}'
|
|
```
|