Skip to content

Latest commit

 

History

History
142 lines (124 loc) · 3.64 KB

useful_queries.md

File metadata and controls

142 lines (124 loc) · 3.64 KB

View count of active connections

SELECT
  COUNT(*) AS current_connections,
  (SELECT setting::int FROM pg_settings WHERE name = 'max_connections') AS max_connections,
  (SELECT setting::int FROM pg_settings WHERE name = 'superuser_reserved_connections') AS reserved_for_superusers,
  (SELECT setting::int FROM pg_settings WHERE name = 'max_connections') - COUNT(*) AS available_connections
FROM
  pg_stat_activity;

Estimated row count

SELECT
  relname AS table_name,
  n_live_tup AS estimated_row_count
FROM pg_stat_user_tables where relname = 'tx_recipients_cp';

kill active connections

SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE pid <> pg_backend_pid() -- Exclude your own connection
AND datname = 'defaultdb';

check index progress

SELECT
  pid,
  datname,
  relid::regclass AS table_name,
  phase,
  lockers_total,
  lockers_done,
  current_locker_pid,
  blocks_total,
  blocks_done,
  tuples_total,
  tuples_done,
  partitions_total,
  partitions_done
FROM pg_stat_progress_create_index
WHERE relid = 'tx_senders_cp'::regclass;

fixing invalid index SELECT * FROM pg_index WHERE pg_index.indisvalid = false;

SELECT i.relname AS index_name, t.relname AS table_name FROM pg_class t JOIN pg_index idx ON idx.indrelid = t.oid JOIN pg_class i ON i.oid = idx.indexrelid WHERE i.oid = 601098198;

count partitions

SELECT count(*)
FROM pg_inherits
JOIN pg_class parent ON parent.oid = inhparent
JOIN pg_class child ON child.oid = inhrelid
WHERE parent.relname = 'objects_history';

grab indexes of a name

SELECT indexrelid::regclass AS index_name, indisvalid
FROM pg_index
JOIN pg_class ON pg_class.oid = pg_index.indexrelid
WHERE pg_class.relname LIKE 'objects_history_coin_only_%';

verify index attachments

SELECT
    n.nspname AS schema_name,
    parent_idx.relname AS parent_index_name,
    idx.relname AS partition_index_name,
    t.relname AS partition_table_name
FROM pg_inherits
JOIN pg_class t ON t.oid = inhrelid  -- Partition table
JOIN pg_namespace n ON n.oid = t.relnamespace
JOIN pg_index pi ON pi.indrelid = t.oid
JOIN pg_class idx ON idx.oid = pi.indexrelid
JOIN pg_class parent ON parent.oid = inhparent  -- Parent table
JOIN pg_index parent_pi ON parent_pi.indrelid = parent.oid
JOIN pg_class parent_idx ON parent_idx.oid = parent_pi.indexrelid
WHERE parent_idx.relname = 'objects_history_coin_only';

check for invalid indexes

SELECT indexrelid::regclass AS index_name, indisvalid
FROM pg_index
WHERE indisvalid = false AND indexrelid::regclass::text LIKE 'objects_history_coin_only_%';

List all partitions and expected indexes

WITH partition_data AS (
    SELECT
        t.relname AS partition_table_name,
        format('objects_history_coin_only_%s', substring(t.relname from 'objects_history_partition_(.*)')) AS expected_index_name
    FROM pg_class t
    JOIN pg_inherits ON pg_inherits.inhrelid = t.oid
    JOIN pg_class parent ON parent.oid = pg_inherits.inhparent
    WHERE parent.relname = 'objects_history' -- Adjust if your parent table has a different name
),
actual_indexes AS (
    SELECT
        idx.relname AS index_name
    FROM pg_class idx
    JOIN pg_index ON pg_index.indexrelid = idx.oid
    JOIN pg_class t ON t.oid = pg_index.indrelid
    WHERE idx.relname LIKE 'objects_history_coin_only_%'
)
SELECT
    p.partition_table_name,
    p.expected_index_name,
    a.index_name
FROM partition_data p
LEFT JOIN actual_indexes a ON a.index_name = p.expected_index_name
ORDER BY p.partition_table_name;

disable an index within the context of a transaction for testing

begin;
drop index objects_snapshot_package_module_name_full_type;
--- other queries
rollback;