题干:
本章中我们讲解了如何监控MySQL的阻塞,你可以使用你熟悉的语言,利用本课程中所提供的SQL来写出一个监控MySQL阻塞并在出现阻塞后发送报警的程序吗?
SELECT b.trx_mysql_thread_id AS '被阻塞线程'
,b.trx_query AS '被阻塞SQL'
,c.trx_mysql_thread_id AS '阻塞线程'
,c.trx_query AS '阻塞SQL'
,(UNIX_TIMESTAMP()-UNIX_TIMESTAMP(c.trx_started)) AS '阻塞时间'
FROM information_schema.innodb_lock_waits a
JOIN information_schema.innodb_trx b ON a.requesting_trx_id=b.trx_id
JOIN information_schema.innodb_trx c ON a.blocking_trx_id=c.trx_id
WHERE (UNIX_TIMESTAMP()-UNIX_TIMESTAMP(c.trx_started)) >30
实现效果示例:
要求:
1).能够发现MySQL系统中存在的阻塞
2).能够对相关人员发送报警消息
发散思维:
1).如果出现了阻塞后我们应该如何处理?
2).阻塞报警中所查询出来的SQL为什么有时候会是‘ ’?