ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ PostgreSQL๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ: ์ด๋ก ๊ณผ ์ค์ต - PostgreSQL ์ค๋ฌด Q&A ๋ฐ ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋
octo54 2025. 3. 10. 14:59๐ PostgreSQL๋ก ์์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ: ์ด๋ก ๊ณผ ์ค์ต
6.4 PostgreSQL ์ค๋ฌด Q&A ๋ฐ ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋
PostgreSQL์ ์ค๋ฌด์์ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ๋ค์ํ ๋ฌธ์ ์ ์ค๋ฅ๋ฅผ ๋ง์ฃผํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ PostgreSQL ์ค๋ฌด์์ ์์ฃผ ๋ฐ์ํ๋ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ์ต๋๋ค.
๊ฐ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ํตํด PostgreSQL ์ด์ ์ค ๋ฐ์ํ๋ ์ฃผ์ ์ด์๋ฅผ ๋น ๋ฅด๊ฒ ํด๊ฒฐํ ์ ์๋๋ก ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค. ๐
6.4.1 PostgreSQL ์ค์น ๋ฐ ์ด๊ธฐ ์ค์ ๋ฌธ์ ํด๊ฒฐ
Q1. PostgreSQL์ด ์ ์์ ์ผ๋ก ์ค์น๋์ง ์๋ ๊ฒฝ์ฐ (Ubuntu/Debian)
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
1๏ธโฃ ํจํค์ง ์
๋ฐ์ดํธ ํ ์ค์น
sudo apt update && sudo apt install postgresql postgresql-contrib
2๏ธโฃ ์๋น์ค ์์ ํ์ธ
sudo systemctl start postgresql
sudo systemctl enable postgresql
3๏ธโฃ PostgreSQL ์ํ ํ์ธ
sudo systemctl status postgresql
Q2. psql ์ ์ ์ค๋ฅ (FATAL: role "postgres" does not exist)
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
sudo -u postgres psql
โ postgres ๊ธฐ๋ณธ ๊ณ์ ์ด ์๋ค๋ฉด, ๋ค์ ๋ช ๋ น์ด๋ก ์๋ก ์์ฑ
sudo -u postgres createuser --interactive
6.4.2 PostgreSQL ์ ๊ทผ ๋ฐ ์ธ์ฆ ๋ฌธ์ ํด๊ฒฐ
Q3. ์๊ฒฉ ์ ์์ด ๋์ง ์๋ ๊ฒฝ์ฐ (pg_hba.conf ์ค์ ์ค๋ฅ)
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
1๏ธโฃ PostgreSQL ์ค์ ํ์ผ ์์ (pg_hba.conf)
sudo nano /etc/postgresql/17/main/pg_hba.conf
โ ๋ค์ ์ค ์ถ๊ฐ (IP ์ฃผ์๋ฅผ ์๊ฒฉ ์ ์ ํ์ฉํ๋๋ก ๋ณ๊ฒฝ)
host all all 0.0.0.0/0 scram-sha-256
โ PostgreSQL ์ค์ ๋ฐ์
sudo systemctl restart postgresql
Q4. FATAL: password authentication failed for user "postgres" ์ค๋ฅ ๋ฐ์
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
1๏ธโฃ PostgreSQL ๋ด๋ถ์์ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
ALTER USER postgres WITH PASSWORD '์๋ก์ด_๋น๋ฐ๋ฒํธ';
2๏ธโฃ PostgreSQL ์ธ์ฆ ๋ฐฉ์์ scram-sha-256์ผ๋ก ๋ณ๊ฒฝ (postgresql.conf)
password_encryption = scram-sha-256
6.4.3 PostgreSQL ์ฑ๋ฅ ๋ฌธ์ ํด๊ฒฐ
Q5. ์ฟผ๋ฆฌ๊ฐ ๋๋ฌด ๋๋ ค์ง๋ ๊ฒฝ์ฐ (EXPLAIN ANALYZE ํ์ฉ)
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
1๏ธโฃ EXPLAIN ANALYZE ์คํ
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com';
2๏ธโฃ Seq Scan(์์ฐจ ๊ฒ์)์ด๋ผ๋ฉด ์ธ๋ฑ์ค ์์ฑ
CREATE INDEX idx_users_email ON users(email);
โ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ๋ฉด ๊ฒ์ ์๋๊ฐ ํฌ๊ฒ ํฅ์๋จ
Q6. ํ ์ด๋ธ์ด ๋๋ฌด ์ปค์ ธ์ ์ฑ๋ฅ์ด ์ ํ๋๋ ๊ฒฝ์ฐ (VACUUM ์ฌ์ฉ)
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
1๏ธโฃ VACUUM FULL ์คํํ์ฌ ๋ถํ์ํ ๊ณต๊ฐ ์ ๋ฆฌ
VACUUM FULL;
2๏ธโฃ ANALYZE ์คํํ์ฌ ์ต์ ํต๊ณ ๋ฐ์
ANALYZE;
Q7. pg_stat_statements๋ก ๋๋ฆฐ ์ฟผ๋ฆฌ ์ฐพ๊ธฐ
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
1๏ธโฃ pg_stat_statements ํ์ฅ ๋ชจ๋ ํ์ฑํ
CREATE EXTENSION pg_stat_statements;
2๏ธโฃ ๊ฐ์ฅ ์คํ ์๊ฐ์ด ๊ธด ์ฟผ๋ฆฌ ์กฐํ
SELECT query, total_time FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5;
6.4.4 ๋ฐ์ดํฐ ์์ค ๋ฐ ๋ณต๊ตฌ ๋ฌธ์ ํด๊ฒฐ
Q8. DROP TABLE์ ์ค์๋ก ์คํํ ๊ฒฝ์ฐ (PITR ๋ณต๊ตฌ)
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
1๏ธโฃ ๋ฐฑ์
(pg_basebackup)์์ ๋ณต์
2๏ธโฃ WAL ๋ก๊ทธ(Point-In-Time Recovery)๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์์ ์ผ๋ก ๋ณต๊ตฌ
restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'
recovery_target_time = '2025-03-07 12:00:00'
โ ํน์ ์์ ์ผ๋ก ๋ณต๊ตฌ ๊ฐ๋ฅ (PITR)
Q9. UPDATE๋ DELETE ์คํ ํ ๋กค๋ฐฑํ๋ ๋ฐฉ๋ฒ
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
BEGIN;
UPDATE users SET email = 'wrong@example.com' WHERE id = 1;
ROLLBACK;
โ ROLLBACK์ ์คํํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ์ทจ์๋จ
6.4.5 ํ์ฅ ๊ธฐ๋ฅ ๋ฐ ๊ณ ๊ธ ๊ธฐ๋ฅ ๋ฌธ์ ํด๊ฒฐ
Q10. pgvector๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒกํฐ ๊ฒ์์ด ๋๋ ค์ง๋ ๊ฒฝ์ฐ
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
1๏ธโฃ HNSW ์ธ๋ฑ์ค ์ถ๊ฐ
CREATE INDEX ON embeddings USING hnsw (embedding);
โ AI ๋ฒกํฐ ๊ฒ์ ์๋ ์ต์ ํ
Q11. PostgreSQL์์ ๋์ฉ๋ JSON ๋ฐ์ดํฐ๊ฐ ๋๋ ค์ง๋ ๊ฒฝ์ฐ
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
1๏ธโฃ JSONB ํ๋์ GIN ์ธ๋ฑ์ค ์ถ๊ฐ
CREATE INDEX idx_jsonb_data ON users USING GIN (data);
โ JSON ๊ฒ์ ์๋๋ฅผ ๋ํญ ํฅ์
6.4.6 PostgreSQL ์ฅ์ ๋ฐ ์๋ฒ ๋ฌธ์ ํด๊ฒฐ
Q12. PostgreSQL ํ๋ก์ธ์ค๊ฐ ์ค๋จ๋ ๊ฒฝ์ฐ (pg_ctl ์ฌ์ฉ)
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
pg_ctl restart -D /var/lib/postgresql/data
โ PostgreSQL ์๋น์ค ๊ฐ์ ์ฌ์์
Q13. ๋์คํฌ ์ฉ๋ ๋ถ์กฑ (pg_wal ๋ก๊ทธ๊ฐ ๋๋ฌด ์ปค์ง ๊ฒฝ์ฐ)
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
1๏ธโฃ ๋ถํ์ํ WAL ๋ก๊ทธ ์ญ์
rm -rf /var/lib/postgresql/pg_wal/archive/*
2๏ธโฃ PostgreSQL ์ค์ ๋ณ๊ฒฝ (postgresql.conf)
wal_keep_size = 512MB
โ WAL ๋ก๊ทธ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ฌ ๋์คํฌ ์ฉ๋ ์ ์ฝ
6.4.7 PostgreSQL ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋ ์์ฝ
โ
์ค์น ๋ฐ ์ ๊ทผ ๋ฌธ์ : pg_hba.conf, postgresql.conf ์ค์ ํ์ธ
โ
์ธ์ฆ ์ค๋ฅ ํด๊ฒฐ: ALTER USER postgres WITH PASSWORD ์ฌ์ฉ
โ
์ฟผ๋ฆฌ ์ฑ๋ฅ ๋ฌธ์ : EXPLAIN ANALYZE, ์ธ๋ฑ์ค ์ต์ ํ
โ
๋ฐ์ดํฐ ์์ค ๋ฐ ๋ณต๊ตฌ: PITR, ROLLBACK, pg_basebackup ํ์ฉ
โ
ํ์ฅ ๊ธฐ๋ฅ ๋ฌธ์ : pgvector, GIN Index, Foreign Data Wrapper(FDW) ์ต์ ํ
โ
์๋ฒ ์ฅ์ ํด๊ฒฐ: pg_ctl restart, pg_wal ์ ๋ฆฌ
6.4.8 ๊ฒฐ๋ก : PostgreSQL ์ค๋ฌด ๋ฌธ์ ํด๊ฒฐ ํต์ฌ ์ ๋ฆฌ
โ
PostgreSQL ์ค์น ๋ฐ ์๊ฒฉ ์ ์ ์ค๋ฅ ํด๊ฒฐ
โ
์ฟผ๋ฆฌ ์๋ ์ ํ ๋ฌธ์ ํด๊ฒฐ (EXPLAIN ANALYZE ํ์ฉ)
โ
๋ฐ์ดํฐ ์์ค ๋๋น ๋ฐฑ์
๋ฐ ๋ณต๊ตฌ ์ ๋ต (PITR, pg_basebackup)
โ
๋์ฉ๋ JSON ๋ฐ์ดํฐ ์ต์ ํ (GIN Index ํ์ฉ)
โ
์๋ฒ ์ฅ์ ๋ฐ ์ฑ๋ฅ ์ ํ ๋ฌธ์ ํด๊ฒฐ (VACUUM, pg_stat_statements)
์ด์ PostgreSQL ์ด์ ์ค ๋ฐ์ํ ์ ์๋ ์ฃผ์ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ตํ์ต๋๋ค!
PostgreSQL์ ๋์ฑ ์์ ์ ์ผ๋ก ์ด์ํด ๋ณด์ธ์. ๐
๐ ๋ค์ ๊ธ ์๊ณ : PostgreSQL ์ต์ข ๋ง๋ฌด๋ฆฌ ๋ฐ ์ถ๊ฐ ํ์ต ๋ฆฌ์์ค
๐ ๋ค์ ํธ: 6.5 PostgreSQL ์ต์ข ๋ง๋ฌด๋ฆฌ ๋ฐ ์ถ๊ฐ ํ์ต ๋ฆฌ์์ค
์ด์ PostgreSQL ์ค๋ฌด์์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ๊น์ง ์๋ฒฝ ์ ๋ฆฌํ์ต๋๋ค!
๋ค์ ๊ธ์์๋ PostgreSQL ํ์ต์ ๋ง๋ฌด๋ฆฌํ๊ณ , ์ถ๊ฐ๋ก ๊ณต๋ถํ ๋ฆฌ์์ค๋ฅผ ์๊ฐํ๊ฒ ์ต๋๋ค. ๐๐
'study > postgresql' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- ๋ฐฑ์๋๊ฐ๋ฐ
- Python
- ๋ฆฌ์กํธ
- Webpack
- ํ์ด์ง
- AI์ฑ๋ด
- fastapi
- Ktor
- rag
- Page
- ์ฑ๋ด๊ฐ๋ฐ
- til
- Next.js
- github
- llm
- PostgreSQL
- LangChain
- ํ๋ก ํธ์๋
- Docker
- ๋ฐฑ์๋
- babel
- nodejs
- kotlin
- REACT
- nextJS
- ์น๊ฐ๋ฐ
- ๋ก์ปฌLLM
- ๊ด๋ฆฌ์
- Project
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |