一、事务:一组原子性的SQL查询,或者说一个独立的工作单元 ACID测试: A:atomicity,原子性,整个事务中的所有操作要么全部成功执行,要么全部失败后回滚; C:comsistency,一致性:数据库总是从一个一致性状态转换为另一个一致性状态; I:Isolation,隔离性:一个事务所做出的操作在提交之前,是不能为其它所见; D:durability:持久性:一旦事务提交,其所做的修改会永久保存于数据库中; 二、启动事务: START TRANSACTION 三、结束事务: (1)COMMIT:提交 (2)ROLLBACK:回滚 注意:只有事务型存储引擎才能支持此类操作; 建议:显式请求和提交事务,而不要使用"自动提交"功能; 四、事务支持savepoint Syntax: SAVEPOINT identifier ROLLBACK [WORK] TO [SAVEPOINT] identifier RELEASE SAVEPOINT identifier 五、事务的隔离级别: READ UNCOMMITTED(读未提交) READ COMMITTED(读提交) REPEATABLE READ(可重读) SERIALIZABLE(可串行化) 可能存在问题: 脏读; 不可重复读; 幻读; 加锁读; tx_isolation:服务器变量,默认为REPEATABLE-READ,可在SESSION级进行修改; SET tx_ioslation='' READ-UNCOMMITTED READ-COMMITTED REPEATABLE-READ SERIALIZABLE MVCC:多版本并发控制 六、死锁: 两个或多个事务在同一组资源上相互占用,并请求对方占用的资源的状态; 七、事务日志: 事务日志的写入类型为"追加",因此其操作为"顺序IO";此日志通常也被称为"预写式日志(write ahead logging)"; 以下参数不支持运行时修改,需要写入配置配件重启MySQL服务才可生效: innodb_data_home_dir = /data/mysql3401/data # 事务日志存储位置 innodb_log_file_size = 512M # 事务日志大小 innodb_log_files_in_group = 3 # 事务日志个数