介绍
这篇文章给大家分享的是有关MySQL查询当前最新事务ID的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
写在前面:在个别时候可能需要查看当前最新的事务ID,以便做一些业务逻辑上的判断(例如利用事务ID变化以及前后时差,统计每次事务的响应时长等用途)。
通常地,我们有两种方法可以查看当前的事务ID:
<强> 1,执行显示引擎INNODB状态,查看事务相关信息强>
=====================================150303年17:16:11 INNODB监视器输出=====================================从过去的15秒每秒平均计算 … ------------ 交易 Trx id计数器3359877657——当前最大事务id 清除了trx # 39; n: o & lt;3359877468撤销n: o & lt;0状态:运行 324年历史列表的长度 每个会话的事务列表: ——没有开始事务0——该会话中执行显示引擎INNODB状态,不会产生事务,所以事务ID为0 MySQL线程id 4692367, 0 x51103940 OS线程处理,查询id 677284426 xx.173ops.com 10. x.x。x yejr init 显示/* !50000引擎*/INNODB的地位 ——没有开始事务3359877640——非活跃事务,还未开始 在使用mysql表1,锁定0 MySQL线程id 4678384, 0 x41a57940 OS线程处理,查询id 677284427 xx.173ops.com 10. x.x。x yejr系统锁 选择polinfo0_。Fid Fid39_0_,… ——交易3359877652,而不是开始 MySQL线程id 4678383, 0 x50866940 OS线程处理,查询id 677284420 xx.173ops.com 10. x.x。x yejr清理 ——交易3359877635,活跃的1358秒,线程内宣布InnoDB 5000——活跃长事务,运行了1358秒还未结束,要引起注意,可能会导致大量锁等待发生 在使用mysql表1,锁定1 1锁结构(s),堆大小376,0行锁,undo日志条目1 MySQL线程id 3120717, 0 x529b4940 OS线程处理,查询id 677284351 xx.173ops.com 10. x.x。x yejr查询结束 插入t_live_room……
<强> 2,查看INFORMATION_SCHEMA。INNODB_TRX、INNODB_LOCKS INNODB_LOCK_WAITS三个表,通过这些信息能快速发现哪些事务在阻塞其他事务强>
先查询INNODB_TRX表,看看都有哪些事务
mysql>SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX \ G * * * * * * * * * * * * * * * * * * * * * * * * * * * 1。行 *************************** trx_id: 17778——当前事务ID trx_state:锁等待——处于锁等待状态,也就是等待其他会话释放锁资源 trx_started: 2015-03-04 10:40:26 trx_requested_lock_id: 17778:82:3:6——欲请求的锁 trx_wait_started: 2015-03-04 10:40:26 trx_weight: 2——大意是该锁影响了2行记录 trx_mysql_thread_id: 657——processlist中的线程ID trx_query:更新trx_fee设置费用=rand () * 1000 id=4 trx_operation_state:指数开始阅读 trx_tables_in_use: 1 trx_tables_locked: 1 trx_lock_structs: 2 trx_lock_memory_bytes: 360 trx_rows_locked: 1 trx_rows_modified: 0 trx_concurrency_tickets: 0 trx_isolation_level:可重复读 trx_unique_checks: 1 trx_foreign_key_checks: 1 trx_last_foreign_key_error:零 trx_adaptive_hash_latched: 0 trx_adaptive_hash_timeout: 10000 trx_is_read_only: 0 trx_autocommit_non_locking: 0 * * * * * * * * * * * * * * * * * * * * * * * * * * * 2。行 *************************** trx_id: 17773 trx_state:跑步 trx_started: 2015-03-04 10:40:23 trx_requested_lock_id:零 trx_wait_started:零 trx_weight: 10 trx_mysql_thread_id: 656 trx_query:零 trx_operation_state:零 trx_tables_in_use: 0 trx_tables_locked: 0 trx_lock_structs: 2 trx_lock_memory_bytes: 360 trx_rows_locked: 9 trx_rows_modified: 8 trx_concurrency_tickets: 0 trx_isolation_level:可重复读 trx_unique_checks: 1 trx_foreign_key_checks: 1 trx_last_foreign_key_error:零 trx_adaptive_hash_latched: 0 trx_adaptive_hash_timeout: 10000 trx_is_read_only: 0 trx_autocommit_non_locking: 0
<强>再看INNODB_LOCKS表,看看都有什么锁强>
mysql>select * from information_schema.INNODB_LOCKS \ G * * * * * * * * * * * * * * * * * * * * * * * * * * * 1。行 *************************** lock_id: 17778:82:3:6——当前锁ID lock_trx_id: 17778,该锁对应的事务ID lock_mode: X——锁类型,排它锁X lock_type:记录——锁范围,记录锁:锁,记录其他锁范围:间隙锁:锁的差距,或者键锁(记录锁+间隙锁) lock_table:‘测试’。“trx_fee” lock_index:主——加载在哪个索引上的锁 lock_space: 82 lock_page: 3 lock_rec: 6 lock_data: 4 * * * * * * * * * * * * * * * * * * * * * * * * * * * 2。行 *************************** lock_id: 17773:82:3:6 lock_trx_id: 17773 lock_mode: X lock_type:记录 lock_table:‘测试’。“trx_fee” lock_index:主 lock_space: 82 lock_page: 3 lock_rec: 6 lock_data: 4MySQL查询当前最新事务ID的方法