日期:2014-05-16 浏览次数:20442 次
transaction是数据库区别于文件系统的重要特性之一,innodb引擎完全符合事务的ACID特性。
Atomicity 原子性
Consistency一致性
Isolation 隔离性
Durability 持久性
Atomicity 原子性:整个数据库事务是不可分割的工作单位。
Consistency一致性:事务将数据库从一种状态转变为下一种一致的状态。
Isolation 隔离性:一个事务的影响在该事务提交前对其他事务都不可见。
Durability 持久性:事务一旦提交,其结果就是永久性的。
隔离性通过锁来实现,原子性、一致性、持久性通过数据库的redo和undo来完成。
innodb通过redo日志文件和innodb log buffer来实现redo。
当事务开始时,innodb会记录该事务的一个LSN(Log Sequence Number,日志序列号)。当执行事务时,会往innodb log buffer写入事务日志。当事务提交时,必须将innodb存储引擎的日志缓存写入磁盘(默认的实现,通过innodb_flush_log_at_trx_commit=1)。这意味这磁盘上的页和内存缓冲池中的页是不同步的,
undo和redo相反,redo是重做,undo是撤销。使用rollback语句请求回滚就可以利用undo信息将数据回滚到修改之前的样子。redo存放在redo日志里面,undo存放在数据库内部的一个特殊段(undo segment),undo段位于共享表空间里。undo是逻辑操作,它实际上是做与之前相反的工作,之前是insert,它就delete对于每个update,undo都会执行一个相反的update,当插入操作回滚时,表空间的大小并不会因此而收缩。
AUTOCOMMIT = 0 关闭自动提交,等于1 开启自动提交。
START TRANSACTION | BEGIN 显示的开启一个事务。
COMMIT 提交你的事务。
ROLLBACK 回滚。
SAVEPOINT identifier SAVEPOINT允许你的事务中创建一个保存点,一个事务中可以有多个保存点。
RELEASE SAVEPOINT identifier 删除一个事务的保存点。
ROLLBACK TO [savepoint]identifier 回滚到之前创建的保存点,需要显示运行COMMIT或者ROLLBACK命令。
SET TRANSACTION 这个语句用来设置事务的隔离级别,innodb的隔离级别在6.4已经说过了。
completion_type = 0 时COMMIT和COMMIT WORK功能完全相同。
completion_type = 1 时COMMIT WORK等于COMMIT AND CHAIN,表示提交后马上开启一个相同隔离级别的事务。
complation_type = 2 时COMMIT WORK等于COMMIT AND RELEASE,当事务提交后会自动断开与服务器的链接。
1.DDL语句
2.CREATEUSER,DROPUSER,GRANT、RENAME USER,REVOKE,SET PASSWORD。
3.ANALYZE TABLE、CACHE INDEX、CHECK TABLE、LOAD INDEX INTO CACHE、OPTIMIZE TABLE、REPAIR TABLE。
QPS = Question Per Second = 每秒请求数。
TPS = Transaction Per Second = 每秒事务处理能力。
计算TPS的方法是com_commit + com_rollback/TIME = TPS。
READ UNCOMMITTED(事务隔离最低的级别,有事务隔离就能解决更新丢失,但是存在脏读的问题)。
READ COMMITED(ORACLE和SQL SERVER默认的隔离级别,解决了脏读,但是一个事务多次读取的内容不同,出现了不可重复读的问题)。
READ REPEATABLE(可重复读,innodb引擎的默认事务隔离级别,解决了不可重复读的问题,但是产生了幻读,innodb通过Next-key lock解决了幻读)。
SERIALIZABLE(可串行化,通过强制事务排序解决幻读问题,会降低性能)总的看来innodb默认的 READ REPEATABLE是非常棒的。
innodb引擎支持XA分布式事务。
分布式事务指营运需多个独立的事务资源(transactional resources)参与一个全局的事务中。事务资源通常是关系型数据库系统。全局事务要求在其中所有参与的事务要么都提交、要么都回滚,对于原有的ACID有了提高。注意:在使用分布式事务时,innodb存储引擎的事务隔离级别必须设置成SERIALIABLE。
分布式事务由一个或多个资源管理器Resource Managers一个事务管理器Transaction Manager及一个应用程序Application Program。
1.资源管