Last active
May 9, 2017 13:13
-
-
Save clok/c45b4b1649a151218a5f to your computer and use it in GitHub Desktop.
useful sql queries
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# process list info | |
select id, user, db, host, command, state, time from INFORMATION_SCHEMA.PROCESSLIST; | |
# ALL Tables in ALL DBs | |
SELECT CONCAT(table_schema, '.', table_name), | |
CONCAT(ROUND(table_rows / 1000000, 2), 'M') rows, | |
CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G') DATA, | |
CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), 'G') idx, | |
CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), 'G') total_size, | |
ROUND(index_length / data_length, 2) idxfrac | |
FROM information_schema.TABLES | |
ORDER BY data_length + index_length DESC | |
LIMIT 100; | |
# Tables in a DB | |
SELECT table_name AS "Tables", | |
round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB" | |
FROM information_schema.TABLES | |
WHERE table_schema = "$DB_NAME" | |
ORDER BY (data_length + index_length) DESC; | |
# ALL Databases | |
SELECT table_schema "DB Name", | |
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" | |
FROM information_schema.tables | |
GROUP BY table_schema; | |
SELECT table_schema "DB Name", | |
Round(Sum(data_length + index_length) / 1024 / 1024 / 1024, 2) "DB Size in GB" | |
FROM information_schema.tables | |
GROUP BY table_schema; | |
# List all table info for a DB | |
SELECT TABLE_NAME as name, | |
TABLE_TYPE as type, | |
ENGINE as engine, | |
CONCAT(ROUND(table_rows / 1000000, 2), 'M') rows, | |
CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G') DATA, | |
CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), 'G') idx, | |
CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), 'G') total_size, | |
ROUND(index_length / data_length, 2) idxfrac | |
FROM information_schema.TABLES | |
WHERE TABLE_SCHEMA = '$DB_NAME'; | |
# List size and other info about table partitions | |
SELECT PARTITION_NAME as name, | |
PARTITION_ORDINAL_POSITION as ordinal, | |
PARTITION_METHOD as method, | |
CONCAT(ROUND(table_rows / 1000000, 2), 'M') rows, | |
CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G') DATA, | |
CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), 'G') idx, | |
CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), 'G') total_size, | |
ROUND(index_length / data_length, 2) idxfrac | |
FROM information_schema.PARTITIONS | |
WHERE TABLE_SCHEMA = '$DB_NAME' AND TABLE_NAME = '$TABLE_NAME'; | |
# List all Index types in a DB | |
SELECT DISTINCT | |
TABLE_NAME, | |
INDEX_NAME, | |
INDEX_TYPE | |
FROM INFORMATION_SCHEMA.STATISTICS | |
WHERE TABLE_SCHEMA = '$DB_NAME'; | |
# Want to kill everything???? | |
select concat('KILL ',id,';') from information_schema.processlist; | |
# View all slow log settings | |
mysql> show global variables like '%slow%'; | |
+---------------------+----------------------------------------+ | |
| Variable_name | Value | | |
+---------------------+----------------------------------------+ | |
| log_slow_queries | OFF | | |
| slow_launch_time | 2 | | |
| slow_query_log | OFF | | |
| slow_query_log_file | /var/log/mysql/mysql-slow.log | | |
+---------------------+----------------------------------------+ | |
# Remove postgres tables | |
select 'drop table if exists "' || tablename || '" cascade;' | |
from pg_tables | |
where schemaname = 'public'; | |
# view grants | |
select tablename, | |
HAS_TABLE_PRIVILEGE(tablename, 'select') as select, | |
HAS_TABLE_PRIVILEGE(tablename, 'insert') as insert, | |
HAS_TABLE_PRIVILEGE(tablename, 'update') as update, | |
HAS_TABLE_PRIVILEGE(tablename, 'delete') as delete, | |
HAS_TABLE_PRIVILEGE(tablename, 'references') as references | |
from pg_tables where schemaname='public' order by tablename; | |
# group grants | |
select relacl , | |
'grant ' || substring( | |
case when charindex('r',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',select ' else '' end | |
||case when charindex('w',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',update ' else '' end | |
||case when charindex('a',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',insert ' else '' end | |
||case when charindex('d',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',delete ' else '' end | |
||case when charindex('R',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',rule ' else '' end | |
||case when charindex('x',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',references ' else '' end | |
||case when charindex('t',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',trigger ' else '' end | |
||case when charindex('X',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',execute ' else '' end | |
||case when charindex('U',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',usage ' else '' end | |
||case when charindex('C',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',create ' else '' end | |
||case when charindex('T',split_part(split_part(array_to_string(relacl, '|'),pu.groname,2 ) ,'/',1)) > 0 then ',temporary ' else '' end | |
, 2,10000) | |
|| ' on '||namespace||'.'||item ||' to "'||pu.groname||'";' as grantsql | |
from | |
(SELECT | |
use.usename as subject, | |
nsp.nspname as namespace, | |
c.relname as item, | |
c.relkind as type, | |
use2.usename as owner, | |
c.relacl | |
FROM | |
pg_user use | |
cross join pg_class c | |
left join pg_namespace nsp on (c.relnamespace = nsp.oid) | |
left join pg_user use2 on (c.relowner = use2.usesysid) | |
WHERE | |
c.relowner = use.usesysid | |
and nsp.nspname NOT IN ('pg_catalog', 'pg_toast', 'information_schema') | |
ORDER BY | |
subject, namespace, item | |
) join pg_group pu on array_to_string(relacl, '|') like '%'||pu.groname||'%' | |
where relacl is not null | |
and pu.groname='$GROUPNAME' | |
order by 2; | |
### Postgres | |
# List all Foreign Key constraints | |
SELECT conrelid::regclass AS table_from | |
,conname | |
,pg_get_constraintdef(c.oid) | |
FROM pg_constraint c | |
JOIN pg_namespace n ON n.oid = c.connamespace | |
WHERE contype IN ('f') | |
AND n.nspname = '<SCHEMA>' -- your schema here | |
ORDER BY conrelid::regclass::text, contype DESC; | |
# List all Primary Key constraints | |
SELECT conrelid::regclass AS table_from | |
,conname | |
,pg_get_constraintdef(c.oid) | |
FROM pg_constraint c | |
JOIN pg_namespace n ON n.oid = c.connamespace | |
WHERE contype IN ('p ') | |
AND n.nspname = '<SCHEMA>' -- your schema here | |
ORDER BY conrelid::regclass::text, contype DESC; | |
# List all Primary & Foreign Key relationships | |
SELECT conrelid::regclass AS table_from | |
,conname | |
,pg_get_constraintdef(c.oid) | |
FROM pg_constraint c | |
JOIN pg_namespace n ON n.oid = c.connamespace | |
WHERE contype IN ('f', 'p ') | |
AND n.nspname = '<SCHEMA>' -- your schema here | |
ORDER BY conrelid::regclass::text, contype DESC; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment