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;