首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

事宜入门

2012-09-25 
事务入门[coolxing按: 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正.]??1. 事务入门. 事务是一组操

事务入门

[coolxing按: 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正.]?

?

1. 事务入门. 事务是一组操作的集合, 这些操作要么一起执行成功, 要么一起执行失败. JDBC和Mysql数据的事务命令如下:

Connection.setAutoCommit(false)---start transaction

Connection.rollback()-------------------rollback

Connection.commit()--------------------commit

Connection.setSavePoint()用于设置回滚点, 该方法返回一个SavePoint对象. 如果调用Connection.rollback(SavePoint sp)方法则回滚至sp锁代表的回滚点.

如果一个线程尚未开启事务, 则数据库将自动提交所有修改.?

线程开启事务之后, 执行了提交或者回滚时事务结束; 如果断开连接时事务既没有提交也没有回滚, 数据库将自动放弃所有修改(即自动回滚至事务开启处).

例子:

null,?st,?conn);??
  • ????????}??
  • ????}??
  • }??

    ?

    2. 事务的4大特性ACID.

    a. 原子性(Atomicity): 事务是一个不可分割的执行单位, 事务中的操作要么全部成功, 要么全部失败.

    b. 一致性(Consistency): 事务前后数据的完整性需要保持一致. 例如在一个转账事务中, 所有账户的总金额在事务执行前后必须相同.

    c. 隔离性(Isolation): 事务的隔离性定义多个线程并发访问数据库时, 系统所采取的隔离措施. 详见后面的分析.

    d. 持久性(Durability): 指事务一旦提交成功, 该事务对数据库中的数据所作的修改永久有效, 不可因外部意外情况对其有任何影响.

    ?

    3. 事务的隔离性主要为了避免以下情况的发生:

    a. 脏读. 指的是A事务读取了其他事务尚未提交的修改.

    b. 不可重复读. 指的是A事务多次读取某行中的数据, 如果其他事务在A事务的读取间隔期间提交了对该行数据的修改, 而导致A事务多次读取的结果不同.

    c. 虚读. 指的是A事务读取到了其他事务插入的数据.

    ?

    4. 事务的隔离级别. sql标准定义了四种隔离级别:

    a. read uncommitted: 最低级别, 无法避免脏读, 不可重复读, 虚读等情况的发生.

    b. read committed: 可以避免脏读的发生, 但不能避免不可重复读和虚读的发生.

    c. repeatable read: 可以避免脏读和不可重复读的发生, 但不能避免虚读的发生. 处于该级别的事务会对数据库中已有记录加锁, 使得其他事务无法提交对已有记录的修改, 但允许插入新的数据.

    d. serializable: 可以避免以上所有情况的发生. 处于该级别的事务会对整个数据库加锁, 使得其他事务无法提交对该数据库的任何修改. 此时相当于单线程操作.

    Mysql支持以上4种隔离级别, 其默认的隔离级别为repeatable read. set transaction isolation level语句可以更改当前事务的隔离级别, 如set transaction isolation level read committed语句将当前事务的隔离级别设置为read committed. select @@tx_isolation语句用于获取当前事务的隔离级别. 而Oracle只支持read committed和serializable级别.?

    实际开发时, 需要根据项目需求选择不同的隔离级别. 尤其是不可重复读和虚读, 在某些应用场景下并非是需要避免的错误, 而是完全合法的.?

    隔离级别越高, 数据库的性能就越差.

    检验事务的隔离级别时, 需要创建多个"已开启事务"的线程.

    ?

    1 楼 xiaokai1012 2011-11-14   问问飒飒飒飒 2 楼 Technoboy 2011-11-14   看一下《java transaction》 3 楼 nneverwei 2011-11-14   不错哈,讲的挺清晰的

  • 热点排行