您的位置:首页 > 数据库 > MySQL

MySql检测阻塞,锁等待sql

2017-08-14 15:00 211 查看
------------

1分钟内产生binlog大小计算

select@a1:=VARIABLE_VALUEasa1
frominformation_schema.GLOBAL_STATUS
whereVARIABLE_NAME='innodb_os_log_written'
unionall
selectsleep(60)
unionall
select@a2:=VARIABLE_VALUEasa2
frominformation_schema.GLOBAL_STATUS
whereVARIABLE_NAME='innodb_os_log_written';

selectround((@a2-@a1)/1024/1024/@@innodb_log_files_in_group)asMB;

---------------------

SELECT
p2.`HOST`Blockedhost,
p2.`USER`BlockedUser,
r.trx_idBlockedTrxId,
r.trx_mysql_thread_idBlockedThreadId,
TIMESTAMPDIFF(
SECOND,
r.trx_wait_started,
CURRENT_TIMESTAMP
)WaitTime,
r.trx_queryBlockedQuery,
l.lock_tableBlockedTable,
m.`lock_mode`BlockedLockMode,
m.`lock_type`BlockedLockType,
m.`lock_index`BlockedLockIndex,
m.`lock_space`BlockedLockSpace,
m.lock_pageBlockedLockPage,
m.lock_recBlockedLockRec,
m.lock_dataBlockedLockData,
p.`HOST`blocking_host,
p.`USER`blocking_user,
b.trx_idBlockingTrxid,
b.trx_mysql_thread_idBlockingThreadId,
b.trx_queryBlockingQuery,
l.`lock_mode`BlockingLockMode,
l.`lock_type`BlockingLockType,
l.`lock_index`BlockingLockIndex,
l.`lock_space`BlockingLockSpace,
l.lock_pageBlockingLockPage,
l.lock_recBlockingLockRec,
l.lock_dataBlockingLockData,
IF(p.COMMAND='Sleep',CONCAT(p.TIME,'seconds'),0)idel_in_trx
FROM
information_schema.INNODB_LOCK_WAITSw
INNERJOINinformation_schema.INNODB_TRXbONb.trx_id=w.blocking_trx_id
INNERJOINinformation_schema.INNODB_TRXrONr.trx_id=w.requesting_trx_id
INNERJOINinformation_schema.INNODB_LOCKSlONw.blocking_lock_id=l.lock_idANDl.`lock_trx_id`=b.`trx_id`
INNERJOINinformation_schema.INNODB_LOCKSmONm.`lock_id`=w.`requested_lock_id`ANDm.`lock_trx_id`=r.`trx_id`
INNERJOINinformation_schema.PROCESSLISTpONp.ID=b.trx_mysql_thread_id
INNERJOINinformation_schema.PROCESSLISTp2ONp2.ID=r.trx_mysql_thread_id
ORDERBY
WaitTimeDESC;

--------------

SELECT
p2.`HOST`被阻塞方host,
p2.`USER`被阻塞方用户,
r.trx_id被阻塞方事务id,
r.trx_mysql_thread_id被阻塞方线程号,
TIMESTAMPDIFF(
SECOND,
r.trx_wait_started,
CURRENT_TIMESTAMP
)等待时间,
r.trx_query被阻塞的查询,
l.lock_table阻塞方锁住的表,
m.`lock_mode`被阻塞方的锁模式,
m.`lock_type`"被阻塞方的锁类型(表锁还是行锁)",
m.`lock_index`被阻塞方锁住的索引,
m.`lock_space`被阻塞方锁对象的space_id,
m.lock_page被阻塞方事务锁定页的数量,
m.lock_rec被阻塞方事务锁定行的数量,
m.lock_data被阻塞方事务锁定记录的主键值,
p.`HOST`阻塞方主机,
p.`USER`阻塞方用户,
b.trx_id阻塞方事务id,
b.trx_mysql_thread_id阻塞方线程号,
b.trx_query阻塞方查询,
l.`lock_mode`阻塞方的锁模式,
l.`lock_type`"阻塞方的锁类型(表锁还是行锁)",
l.`lock_index`阻塞方锁住的索引,
l.`lock_space`阻塞方锁对象的space_id,
l.lock_page阻塞方事务锁定页的数量,
l.lock_rec阻塞方事务锁定行的数量,
l.lock_data阻塞方事务锁定记录的主键值,
IF(p.COMMAND='Sleep',CONCAT(p.TIME,'秒'),0)阻塞方事务空闲的时间
FROM
information_schema.INNODB_LOCK_WAITSw
INNERJOINinformation_schema.INNODB_TRXbONb.trx_id=w.blocking_trx_id
INNERJOINinformation_schema.INNODB_TRXrONr.trx_id=w.requesting_trx_id
INNERJOINinformation_schema.INNODB_LOCKSlONw.blocking_lock_id=l.lock_idANDl.`lock_trx_id`=b.`trx_id`
INNERJOINinformation_schema.INNODB_LOCKSmONm.`lock_id`=w.`requested_lock_id`ANDm.`lock_trx_id`=r.`trx_id`
INNERJOINinformation_schema.PROCESSLISTpONp.ID=b.trx_mysql_thread_id
INNERJOINinformation_schema.PROCESSLISTp2ONp2.ID=r.trx_mysql_thread_id
ORDERBY
等待时间DESC;

-------------------------------------------------------------------

#查找有碎片的表:
selecttable_schemadb,table_name,data_free,engine
frominformation_schema.tables
wheretable_schemanotin('information_schema','mysql')anddata_free>0;

SELECTTABLE_NAME,(DATA_LENGTH+INDEX_LENGTH)/1024/1024size_mb,data_free/1024/1024free_mb,TABLE_ROWS
FROMinformation_schema.tableswheretable_schemanotin('information_schema','mysql')
anddata_free/1024/1024>=1orderbyfree_mbdesc;
---------------------------------------------------------------------------
#找出没有主键的表
Selectt.table_schema,t.table_name,t.engine,t.table_rows
Frominformation_schema.tablesast
Leftjoininformation_schema.table_constraintsastc
Ontc.table_schema=t.table_schema
Andtc.table_name=t.table_name
Andtc.constraint_type='PRIMARYKEY'
Wheret.table_type='BASETABLE'
Andtc.constraint_typeisnull
Andt.table_schemanotin('mysql','performance_schema','information_schema');

------------------------------

ySQL中一些查看事务和锁情况的常用语句

一些查看数据库中事务和锁情况的常用语句

查看事务等待状况:

select
r.trx_idwaiting_trx_id,
r.trx_mysql_thread_idwaiting_thread,
r.trx_querywaiting_query,
b.trx_idblocking_trx_id,
b.trx_mysql_thread_idblocking_thread,
b.trx_queryblocking_query
from
information_schema.innodb_lock_waitsw
innerjoininformation_schema.innodb_trxbonb.trx_id=w.blocking_trx_id
innerjoininformation_schema.innodb_trxronr.trx_id=w.requesting_trx_id;

查看更具体的事务等待状况:

select
b.trx_state,
e.state,
e.time,
d.stateasblock_state,
d.timeasblock_time,
a.requesting_trx_id,
a.requested_lock_id,
b.trx_query,
b.trx_mysql_thread_id,
a.blocking_trx_id,
a.blocking_lock_id,
c.trx_queryasblock_trx_query,
c.trx_mysql_thread_idasblock_trx_mysql_tread_id
from
information_schema.innodb_lock_waitsa
leftjoininformation_schema.innodb_trxbona.requesting_trx_id=b.trx_id
leftjoininformation_schema.innodb_trxcona.blocking_trx_id=c.trx_id
leftjoininformation_schema.processlistdonc.trx_mysql_thread_id=d.id
leftjoininformation_schema.processlisteonb.trx_mysql_thread_id=e.id
orderby
a.requesting_trx_id;

查看未关闭的事务:
–mysql5.6

select
a.trx_id,
a.trx_state,
a.trx_started,
a.trx_query,
b.id,
b.user,
b.db,
b.command,
b.time,
b.state,
b.info,
c.processlist_user,
c.processlist_host,
c.processlist_db,
d.sql_text
from
information_schema.innodb_trxa
leftjoininformation_schema.processlistbona.trx_mysql_thread_id=b.id
andb.command='sleep'
leftjoinperformance_schema.threadsconb.id=c.processlist_id
leftjoinperformance_schema.events_statements_currentdond.thread_id=c.thread_id;

–mysql5.5

select
a.trx_id,
a.trx_state,
a.trx_started,
a.trx_query,
b.id,
b.user,
b.host,
b.db,
b.command,
b.time,
b.state,
b.info
from
information_schema.innodb_trxa
leftjoininformation_schema.processlistbona.trx_mysql_thread_id=b.id
where
b.command='sleep';

查看某段时间以来未关闭事务:

select
trx_id,
trx_started,
trx_mysql_thread_id
from
information_schema.innodb_trx
where
trx_started<date_sub(now(),interval1minute)
andtrx_operation_stateisnull
andtrx_queryisnull;


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: