首页 > 技术文章 > MySQL自用脚本(不定期更新)

polestar 2016-07-05 21:37 原文

查询指定SQL的trace信息

mysql -uUSER -pPWD -hHOST -e "\
use ins_tc_prd; \
set session optimizer_trace='enabled=on'; \
set optimizer_trace_max_mem_size = 1638400; \
explain SQL; \
select * from information_schema.optimizer_trace\G;" > trace_log.log

 查看表空间的使用情况

select table_name, 
       (data_length+ index_length) /1024/1024 as total_mb, 
       table_rows 
from information_schema.tables 
where table_schema= 'Database' ;//不写就是全部

 查看MySQL数据库状态

mysqladmin -P3306 -uroot -p -h127.0.0.1 -r -i 1 extended-status |awk -F"|" "BEGIN{ count=0; }"'{ if($2 ~ /Variable_name/ && ((++count)%20 == 1)){\ 
print "----------|---------|--- MySQL Command Status --|----- Innodb row operation -----|-- Buffer Pool Read --";\ 
print "---Time---|---QPS---|select insert update delete|  read  inserted updated deleted|   logical    physical";\ 
}\ 
else if ($2 ~ /Queries/){queries=$3;}\ 
else if ($2 ~ /Com_select /){com_select=$3;}\ 
else if ($2 ~ /Com_insert /){com_insert=$3;}\ 
else if ($2 ~ /Com_update /){com_update=$3;}\ 
else if ($2 ~ /Com_delete /){com_delete=$3;}\ 
else if ($2 ~ /Innodb_rows_read/){innodb_rows_read=$3;}\ 
else if ($2 ~ /Innodb_rows_deleted/){innodb_rows_deleted=$3;}\ 
else if ($2 ~ /Innodb_rows_inserted/){innodb_rows_inserted=$3;}\ 
else if ($2 ~ /Innodb_rows_updated/){innodb_rows_updated=$3;}\ 
else if ($2 ~ /Innodb_buffer_pool_read_requests/){innodb_lor=$3;}\ 
else if ($2 ~ /Innodb_buffer_pool_reads/){innodb_phr=$3;}\ 
else if ($2 ~ /Uptime / && count >= 2){\ 
printf(" %s |%9d",strftime("%H:%M:%S"),queries);\ 
printf("|%6d %6d %6d %6d",com_select,com_insert,com_update,com_delete);\ 
printf("|%8d %6d %7d %7d",innodb_rows_read,innodb_rows_inserted,innodb_rows_updated,innodb_rows_deleted);\ 
printf("|%10d %11d\n",innodb_lor,innodb_phr);\ 
}}';

 MySQL查询阻塞语句

select r.trx_id waiting_trx_id, r.trx_mysql_thread_Id waiting_thread, 
       r.trx_query waiting_query, b.trx_id blocking_trx_id, 
       b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query 
  from information_schema.innodb_lock_waits w inner join information_schema.innodb_trx b on b.trx_id = w.blocking_trx_id 
  inner join information_schema.innodb_trx r on r.trx_id = w.requesting_trx_id;

 导出语句

--导出建表语句和数据
/opt/mysql/bin/mysqldump  --defaults-file=/opt/mysql/my.cnf -uroot -p123456 -hlocalhost  -R --single-transaction  --default-character-set=utf8  dentist ds_user  uas_user  ds_organization  > /opt/mysql/bak_dir/table.sql

--dentist 数据库名称
-- ds_user  uas_user  ds_organization  表名称


--导出建表语句 不包含数据
/opt/mysql/bin/mysqldump  --defaults-file=/opt/mysql/my.cnf -uroot -p123456 -hlocalhost  -R --single-transaction  --default-character-set=utf8 -d  dentist ds_user  uas_user  ds_organization  > /opt/mysql/bak_dir/table.sql

 查询表的数据量大小

select table_name,(data_length + index_length)/1024/1024 as table_mb,table_rows 
from information_schema.tables 
where table_schema='zabbix';

也可以在系统上直接查看表对应的数据文件大小

 

 

转自

  1. http://blog.itpub.net/29510932/viewspace-1812475/

推荐阅读