Postgresql Performance Tuning Practice Exam
Question 1 of 50
log_min_duration_statement = 1000
CREATE UNIQUE INDEX ON t (col) WHERE col IS NOT NULL;
SELECT query, calls, total_exec_time, mean_exec_time FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 20;
ANALYZE table_name;
BEGIN; LOCK old; ALTER TABLE old RENAME TO old_backup; ALTER TABLE new RENAME TO old; COMMIT;
to_tsvector
pg_basebackup
primary_conninfo
colname int GENERATED ALWAYS AS (other_col * 2) STORED;
ALTER TABLE child ADD CONSTRAINT fk FOREIGN KEY (...) REFERENCES parent(...) NOT VALID;
ALTER TABLE child VALIDATE CONSTRAINT fk;
INSERT ... ON CONFLICT (key) DO NOTHING
DO UPDATE SET ...
SELECT pid, state, age(now(), xact_start) FROM pg_stat_activity WHERE state = 'idle in transaction';
CREATE INDEX ON t (col);
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
ALTER ROLE app SET statement_timeout = '30s';
SELECT sum(heap_blks_hit)::float / (sum(heap_blks_hit) + sum(heap_blks_read)) FROM pg_statio_user_tables;
SELECT * FROM pg_stat_io;
CREATE INDEX ... INCLUDE (col)
TABLESAMPLE BERNOULLI(1)
SELECT * FROM pg_stat_activity WHERE state IN ('idle in transaction','idle in transaction (aborted)');
SELECT datname, age(datfrozenxid) FROM pg_database;
MATERIALIZED
SELECT * FROM pg_stat_activity WHERE wait_event_type = 'Lock';
PLAN CACHE MODE
plan_cache_mode = force_generic_plan / force_custom_plan
SUM(amount) OVER (PARTITION BY user_id ORDER BY ts ROWS UNBOUNDED PRECEDING)
CREATE POLICY ... USING (...)
ALTER TABLE ... ENABLE ROW LEVEL SECURITY;
SELECT * FROM pg_stat_replication;
CREATE INDEX ON t USING GIN (col jsonb_path_ops);
CREATE INDEX active_users_email ON users(email) WHERE deleted_at IS NULL;
SELECT pg_cancel_backend(pid);
pg_terminate_backend(pid);
Question navigator