Veritabanı Oluşturma
Basit Oluşturma
CREATE DATABASE myapp;
CREATE DATABASE
Detaylı Oluşturma
CREATE DATABASE myapp
WITH
OWNER = myuser
ENCODING = 'UTF8'
LC_COLLATE = 'tr_TR.UTF-8'
LC_CTYPE = 'tr_TR.UTF-8'
TABLESPACE = pg_default
CONNECTION LIMIT = 100
TEMPLATE = template0;
Parametreler:
- OWNER: Veritabanı sahibi
- ENCODING: Karakter kodlaması (UTF8 önerilir)
- LC_COLLATE: Sıralama kuralları
- CONNECTION LIMIT: Max bağlantı sayısı (-1 = sınırsız)
- OWNER: Veritabanı sahibi
- ENCODING: Karakter kodlaması (UTF8 önerilir)
- LC_COLLATE: Sıralama kuralları
- CONNECTION LIMIT: Max bağlantı sayısı (-1 = sınırsız)
Veritabanı Listeleme
-- psql komutu
\l
\l+ -- Detaylı
-- SQL ile
SELECT datname, pg_size_pretty(pg_database_size(datname)) as size
FROM pg_database
ORDER BY pg_database_size(datname) DESC;
datname | size
------------+---------
myapp | 25 MB
postgres | 8 MB
template1 | 8 MB
Veritabanına Bağlanma
-- psql ile
\c myapp
-- Komut satırından
psql -U myuser -d myapp
Veritabanı Silme
-- Önce bağlantıları kes
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'myapp' AND pid <> pg_backend_pid();
-- Sil
DROP DATABASE myapp;
DROP DATABASE geri alınamaz! Silmeden önce yedek alın.
Veritabanı Boyutu
-- Tek veritabanı
SELECT pg_size_pretty(pg_database_size('myapp'));
-- Tüm veritabanları
SELECT
datname,
pg_size_pretty(pg_database_size(datname)) as total_size
FROM pg_database
ORDER BY pg_database_size(datname) DESC;
Tablo Boyutları
SELECT
schemaname,
tablename,
pg_size_pretty(pg_total_relation_size(schemaname || '.' || tablename)) as total_size,
pg_size_pretty(pg_relation_size(schemaname || '.' || tablename)) as table_size,
pg_size_pretty(pg_indexes_size(schemaname || '.' || tablename)) as index_size
FROM pg_tables
WHERE schemaname = 'public'
ORDER BY pg_total_relation_size(schemaname || '.' || tablename) DESC
LIMIT 10;
VACUUM ve Bakım
-- Basit vacuum (boş alanı işaretle)
VACUUM;
-- Full vacuum (boş alanı geri al - tablo kilitlenir)
VACUUM FULL;
-- Analyze (istatistikleri güncelle)
ANALYZE;
-- İkisi birlikte
VACUUM ANALYZE;
Autovacuum varsayılan olarak açıktır. Manuel VACUUM genelde gerekmez.