Java 杂谈程序员

撩课-JavaWeb之事务与批处理

2018-12-24  本文已影响19人  撩课学院

事务

事务问题

建立一张个人账户表
zs与ls进行转账

    1.检查zs账户余额
    2.减少zs账户1000
    3.增加ls账户1000

    示例如下:

出现异常情况
  在第2步和第3步之间弄一个异常 int a = 1 / 0;
  一个人的账户减少,另一个没有加

处理事务

默认情况下, 事务是自动提交的
要设置为手动提交
处理事务过程

 关闭自动提交
    conn.setAutoCommit(false);

 没有问题时,提交事务 
    conn.commit();

 出现异常时,进行回滚操作
    conn.rollback()

 回滚之后,事务结束。释放资源
 出现异常,没有提交,也不会更新数据库,但是会占用资源
     ew to-d
 所以要出现异常时,进行回滚操作
 只有增、册、改才需要事务,查询不需要事务
 以后发现自己写的代码是正确的,测试也成功,
但是数据库当中的数据不变

 事务没有提交
 InnoDB才支持外键和事务。MyISAM不支持外键和事务

 示例如下:

设置事务的隔离级别


    conn.setTransactionIsolation(Connection.TRANSACTION_REPATABLE_READ)

批处理

什么是批处理?

一次性执行多条Sql语句,允许多条语句一次性提交给数据库批量处理
比单独提交处理要效率高

批处理方法

addBatch(String)
添加需要批处理的sql语句
executeBatch()
执批处理

支持情况
mysql默认情况下是不支持批处理的
从5.1.13开始,添加了一个rewriteBatchedStatement参数
之前插入10条数据要17.4秒
从5.1.13开始提高到了1.6秒


示例:

添加参数:

上一篇下一篇

猜你喜欢

热点阅读