PostgreSQL Command - goddes4/python-study-wiki GitHub Wiki

SQL ν…ŒμŠ€νŠΈ μ‚¬μ΄νŠΈ

http://sqlfiddle.com/

ν•¨μˆ˜ 생성

CREATE OR REPLACE FUNCTION custom_random(start_number integer, end_number integer)
RETURNS integer
LANGUAGE plpgsql
STRICT
AS $BODY$
    BEGIN
        RETURN trunc(random() * ((end_number + 1) - start_number) + start_number);
    END;
$BODY$;

#\df
#SELECT custom_random(1,5);

ν•¨μˆ˜ μ‚­μ œ

DROP FUNCTION custom_random(start_number integer, end_number integer);

μŠ€ν‚€λ§ˆ 볡제

μŠ€ν‚€λ§ˆ / 데이터 λͺ¨λ‘ 볡제

# pg_dump -U username -n source_schema dbname | sed 's/source_schema/dest_schema/g' | psql -U username -d dbname

μŠ€ν‚€λ§ˆ 만 볡제

# pg_dump -s -U username -n source_schema dbname | sed 's/source_schema/dest_schema/g' | psql -U username -d dbname

데이터 만 볡제

# pg_dump -a -U username -n source_schema dbname | psql -U username -d dbname -n 

μŠ€ν‚€λ§ˆ 생성

CREATE SCHEMA schema_name AUTHORIZATION username;

μŠ€ν‚€λ§ˆ 이름 λ³€κ²½

ALTER SCHEMA schema_name RENAME TO new_schema_name;

μŠ€ν‚€λ§ˆ μ†Œμœ μž λ³€κ²½

ALTER SCHEMA username OWNER TO new_username;

μŠ€ν‚€λ§ˆ μ‚­μ œ

DROP SCHEMA schema_name CASCADE;

VACUUM

DB 전체 ν’€ μ‹€ν–‰

vacuum full analyze;

DB 전체 κ°„λ‹¨ν•˜κ²Œ μ‹€ν–‰

vacuum verbose analyze;

ν•΄λ‹Ή ν…Œμ΄λΈ”λ§Œ κ°„λ‹¨ν•˜κ²Œ μ‹€ν–‰

vacuum analyse [ν…Œμ΄λΈ” λͺ…];

νŠΉμ • ν…Œμ΄λΈ”λ§Œ ν’€ μ‹€ν–‰

vacuum full [ν…Œμ΄λΈ”λͺ…];

νŠœν”Œ 정보 μ‹€ν–‰

SELECT
    n.nspname AS schema_name,
    c.relname AS table_name,
    pg_stat_get_live_tuples(c.oid) + pg_stat_get_dead_tuples(c.oid) as total_tuple,
    pg_stat_get_live_tuples(c.oid) AS live_tuple,
    pg_stat_get_dead_tuples(c.oid) AS dead_tupple,
    round(100*pg_stat_get_live_tuples(c.oid) / (pg_stat_get_live_tuples(c.oid) + pg_stat_get_dead_tuples(c.oid)),2) as live_tuple_rate,
    round(100*pg_stat_get_dead_tuples(c.oid) / (pg_stat_get_live_tuples(c.oid) + pg_stat_get_dead_tuples(c.oid)),2) as dead_tuple_rate,
    pg_size_pretty(pg_total_relation_size(c.oid)) as total_relation_size,
    pg_size_pretty(pg_relation_size(c.oid)) as relation_size
FROM pg_class AS c
JOIN pg_catalog.pg_namespace AS n ON n.oid = c.relnamespace 
WHERE pg_stat_get_live_tuples(c.oid) > 0
AND c.relname NOT LIKE 'pg_%'
ORDER BY dead_tupple DESC;

물리적 파일 μœ„μΉ˜ 쑰회

SELECT oid, pg_relation_filepath(oid), relname, relfilenode FROM pg_class LIMIT 10;

μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 인덱슀 확인

SELECT
    schemaname AS schema_name,
    relname AS table_name,
    indexrelname AS index_name,
    pg_size_pretty(pg_relation_size(indexrelid::regclass)) AS index_size,
    idx_scan,
    idx_tup_read,
    idx_tup_fetch
FROM pg_stat_user_indexes
ORDER BY idx_scan ASC;