MySQL:简述事务的SQL操作
1、查询数据库的隔离级别
选择数据库,查看当前事务隔离界别。
(1)读未提交:READ-UNCOMMITTED
(2)读已提交:READ-COMMITTED
(3)可重复读:REPEATABLE-READ
(4)串行化:SERIALIZABLE
select @@tx_isolation;
select @@global.tx_isolation;
2、设置数据库的隔离级别
set global tx_isolation='REPEATABLE-READ';
3、查询运行中的事务
只能查询此刻正在进行中的事务,已经完成的是查不到的。
SELECT * FROM information_schema.INNODB_TRX;
查询结果包含如下列:trx_id
trx_state
trx_started
trx_requested_lock_id
trx_wait_started
trx_weight
trx_mysql_thread_id
trx_query
trx_operation_state
trx_tables_in_use
trx_tables_locked
trx_lock_structs
trx_lock_memory_bytes
trx_rows_locked
trx_rows_modified
trx_concurrency_tickets
trx_isolation_level
trx_unique_checks
trx_foreign_key_checks
trx_last_foreign_key_error
trx_adaptive_hash_latched
trx_adaptive_hash_timeout
trx_is_read_only
trx_autocommit_non_locking
4、查看连接及对应的事务
比上述查询结果多了如下字段:
SELECT * FROM information_schema.processlist p
LEFT JOIN information_schema.INNODB_TRX t
ON p.id = t.trx_mysql_thread_id;
5、设置AutoCommit
MySQL默认操作模式就是AutoCommit自动提交模式。这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行。我们可以通过设置AutoCommit的值改变是否是自动提交AutoCommit模式。
通过以下命令可以查看当前autocommit模式
show variables like 'autocommit';
关闭自动提交,每次sql必须通过commit命令提交.
set autocommit = 0;
6、查看进程列表+删除指定进程
SHOW PROCESSLIST;
kill 进程号
7、锁超时时间的相关操作
查看当前锁超时时间
show variables like 'innodb_lock_wait_timeout';
查看全局锁超时时间
SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout';
更改当前锁超时时间为120秒
SET innodb_lock_wait_timeout=120;
更改全局锁超时时间为120秒
SET GLOBAL innodb_lock_wait_timeout=120