一,概念
1.一组原子性的SQL查询,或者说一个独立工作单元
2.撤销日志和重做日志是事务的保证
3.事务日志文件,主要是用来实现崩溃后恢复的
4.数据库总是从一个一致性状态转换成另一个一致性状态
5.隔离性,一个事务所做的操作,在提交之前是不看见的 隔离级别和并发成反比
6.持久性,一旦事务提交,其所做的修改会永久保存于数据库中
二,事务流程

修改自动提交的特性 autocommit 在会话级别
三,操作
启动事务:START TRANSACTION
...
...
结束事务:
(1) COMMIT:提交
(2) ROLLBACK: 回滚
注意:只有事务型存储引擎方能支持此类操作;
建议:显式请求和提交事务,而不要使用“自动提交”功能;
autocommit={1|0}
事务支持savepoint
SAVEPOINT identifier
ROLLBACK [WORK] TO [SAVEPOINT] identifier
RELEASE SAVEPOINT identifier
事务隔离级别:
READ UNCOMMITTED (读未提交)
READ COMMITTED (读提交)
REPEATABLE READ (可重读)
SERIALIZABILE (可串行化)
可能存在问题:
脏读;
不可重复读;
幻读;
加锁读;
tx_isolation:服务器变量,默认为REPEATABLE-READ;可在SESSION级进行修改;
SET tx_isolation=''
READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE
MVCC: 多版本并发控制
死锁:
两个或多个事务在同一资源相互占用,并请求锁定对方占用的资源的状态;
事务日志:
事务日志的写入类型为“追加”,因此其操作为“顺序IO”;此日志通常也被称为“预写式日志(write ahead logging)”;
innodb_log_file_size
innodb_log_files_in_group
innodb_log_group_home_dir
网友评论