https://www.jianshu.com/p/36b35f84ccde 总结profile
https://blog.csdn.net/and1kaney/article/details/51213979 包含字段的解释
show status:运行时状态
show variables:配置参数
查看表的创建SQL脚本:show CREATE table labm_apply_t;
查看当前默认存储引擎: show variables like '%storage_engine%';
查看所有存储引擎:show engines
查看锁表情况:show status like ‘Table%’;
Table_locks_immediate 指的是能够立即获得表级锁的次数
Table_locks_waited 指的是不能立即获取表级锁而需要等待的次数,如果数量大,说明锁等待多,有锁争用情况
查看是否有表锁:show OPEN TABLES where In_use > 0;
查看当前会话执行了那些语句(会话级别):show profiles
查看具体哪个语句详情(会话级别): show profile for query id
查看进程:show processlist
如果存在相同的主键就更新否则插入:insert into lhh_test(id,name) values(6,'lhh') on DUPLICATE KEY update (name='lhh')
加行级锁(排它锁):select*from lhh_test where id=6 for update
加共享锁:select *from lhh_test where id= 6 lock in share mode
--------------------死锁有关
查看进程:show processlist
查看是否有表锁:show OPEN TABLES where In_use > 0;
查看当前的事务:SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
杀死进程id(就是上面命令的trx_mysql_thread_id列):kill 446
查看当前锁定的事务:SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看当前等锁的事务:SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
查看MySQL错误日志位置: show variables like 'log_error';
查看锁阻塞线程信息 :show engine innodb status
查看当前锁模式:show variables like 'innodb_autoinc_lock_mode';
查看锁隔离级别:show variables like 'tx_iso%';
在MySQL中innodbautoinclock_mode有3种配置模式:0、1、2,分别对应”传统模式”, “连续模式”, “交错模式”。
-
传统模式:也就是我们最上面的使用表锁。
-
连续模式:对于插入的时候可以确定行数的使用互斥量,对于不能确定行数的使用表锁的模式。
-
交错模式:所有的都使用互斥量,为什么叫交错模式呢,有可能在批量插入时自增值不是连续的,当然一般来说如果不看重自增值连续一般选择这个模式,性能是最好的。