DBAtlas · Veritabanı operasyon atlası

Rol ve veritabanı bazında statement_timeout / lock_timeout tanımla

PostgreSQLOturum

Komut

-- Uygulama rolü: kısa sorgular, kısa lock beklemesi, unutulan transaction'a sınır
ALTER ROLE web_app SET statement_timeout = '30s';
ALTER ROLE web_app SET lock_timeout = '5s';
ALTER ROLE web_app SET idle_in_transaction_session_timeout = '10min';

-- Raporlama rolü yalnızca bu veritabanında daha uzun çalışabilsin
ALTER ROLE report_app IN DATABASE veritabani SET statement_timeout = '15min';

-- Tanımlı rol/veritabanı ayarlarını gör
SELECT coalesce(r.rolname, '(all)') AS role,
       coalesce(d.datname, '(all)') AS database,
       s.setconfig
FROM pg_db_role_setting s
LEFT JOIN pg_roles r ON r.oid = s.setrole
LEFT JOIN pg_database d ON d.oid = s.setdatabase
ORDER BY 1, 2;

-- Geri al
ALTER ROLE web_app RESET lock_timeout;

Ne yapar?

Zaman aşımı parametrelerini rol (ve isteğe bağlı olarak veritabanı) düzeyinde kalıcı hale getirir; global ayarı değiştirmeden her iş yükünü kendi sınırıyla çalıştırır.

Ne zaman kullanılır?

Kaçak sorguların kaynakları tüketmesini, DDL/lock kuyruklarının uygulamayı kilitlemesini ve unutulan transaction'ların bloat üretmesini önlemek için.

Dikkat

Ayarlar yalnızca YENİ oturumlarda etkin olur; havuzdaki mevcut bağlantıları yenile. Kullanıcı oturumda SET ile değeri değiştirebilir; bu bir güvenlik sınırı değildir. statement_timeout'u postgresql.conf'ta global ayarlama: pg_dump, VACUUM, CREATE INDEX gibi bakım işleri de kesilir. Öncelik sırası: rol+veritabanı > rol > veritabanı > postgresql.conf.

DBAtlas'ta aç →

İlgili