[b][size=large]存储引擎[/size][/b]
[size=medium]Mysql比较常用的存储引擎,MyISAM和InnoDB,其中MyISAM不支持事务,如果需要大量的select操作,MyISAM是一个不错的选择,InnoDB支持事务,如果需要大量的select和insert操作,可选择InnoDB。
其中InnoDB支持AutoCommit,默认是打开状态,也就是每写一条记录,Mysql都会自动Commit一次,此时读操作会很慢,而且一般如果如果程序中控制事务,此时是会冲突的,所以我们应该将AutoCommit关闭[/size]
[size=x-large][b]事务处理级别[/b][/size]
[size=medium]
[list]
[*]未提交读(Read Uncommitted):允许脏读;也就是可能读取到其他会话中未提交事务修改的数据
[*]提交读(Read Committed):不允许脏读,允许幻象读;只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别。
[*]可重复读(Repeated Read):不允许脏读,也不允许幻象读,在同一个事务内的查询都是事务开始时刻一致的,也就是说不会同一个Session不会读到别的Session所提交的数据。mysql的InnoDB默认该级别。
[*]串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞
[/list]
[/size]
[size=x-large][b]常见的WEB应用中,如果使用Spring处理事务,如何设置Mysql[/b][/size]
[size=medium]
[list]
[*]应设置Mysql为InnoDB存储引擎
[*]将Mysql的AutoCommit关闭,设为flase; (set autocommit=0;)
[*]建议将Mysql的事务级别设为提交读级别,因为Mysql默认的是可重复读,该事务级别不支持幻象读(set transaction isolation level read committed; )
[/list][/size]
[size=medium]Mysql比较常用的存储引擎,MyISAM和InnoDB,其中MyISAM不支持事务,如果需要大量的select操作,MyISAM是一个不错的选择,InnoDB支持事务,如果需要大量的select和insert操作,可选择InnoDB。
其中InnoDB支持AutoCommit,默认是打开状态,也就是每写一条记录,Mysql都会自动Commit一次,此时读操作会很慢,而且一般如果如果程序中控制事务,此时是会冲突的,所以我们应该将AutoCommit关闭[/size]
[size=x-large][b]事务处理级别[/b][/size]
[size=medium]
[list]
[*]未提交读(Read Uncommitted):允许脏读;也就是可能读取到其他会话中未提交事务修改的数据
[*]提交读(Read Committed):不允许脏读,允许幻象读;只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别。
[*]可重复读(Repeated Read):不允许脏读,也不允许幻象读,在同一个事务内的查询都是事务开始时刻一致的,也就是说不会同一个Session不会读到别的Session所提交的数据。mysql的InnoDB默认该级别。
[*]串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞
[/list]
[/size]
[size=x-large][b]常见的WEB应用中,如果使用Spring处理事务,如何设置Mysql[/b][/size]
[size=medium]
[list]
[*]应设置Mysql为InnoDB存储引擎
[*]将Mysql的AutoCommit关闭,设为flase; (set autocommit=0;)
[*]建议将Mysql的事务级别设为提交读级别,因为Mysql默认的是可重复读,该事务级别不支持幻象读(set transaction isolation level read committed; )
[/list][/size]