Veritabanı Yönetimi

Veritabanı oluşturma, silme, boyut kontrolü ve bakım

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)

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.