zoukankan      html  css  js  c++  java
  • 原:对DBF的文件和Oracle数据库在事务上进行对比

    还有些许遗漏,实验理论上并不十分严密!

    1、  事务隔离级别设置

    Oracle有两种事务隔离级别,分别是Connection.TRANSACTION_READ_COMMITTED(读已提交)和Connection.TRANSACTION_SERIALIZABLE(串行读)。如果设置隔离级别出错,会抛异常如下java.sql.SQLException: 仅 READ_COMMITTED 和 SERIALIZABLE 是有效的事务处理级。

    DBF仅仅支持Connection.TRANSACTION_READ_COMMITTED(读已提交),其它类型的数据库事务隔离级别,当前使用的驱动不支持,会抛异常。

    2、  在开启事务情况下的对比:

    实验一:程序中开两个线程,一个批量提交(每次插入100条数据),一个去读数据库。原始表中数据为空。

    Oracle在事务开启时,如果没有做commit操作,其它线程是不会读到未提交的数据的。在这种情况下,读数据的线程每次读出的数据数目都是100的整数。另外加上删除线程以后也是一样的。

    第:1次查询

    查询影响数据数目:0

    第:2次查询

    查询影响数据数目:0

    第:3次查询

    查询影响数据数目:0

    第:4次查询

    查询影响数据数目:100

    第:1次插入

    第:5次查询

    查询影响数据数目:100

    第:2次插入

    第:6次查询

    查询影响数据数目:200

    第:7次查询

    查询影响数据数目:300

    第:8次查询

    查询影响数据数目:300

    第:9次查询

    查询影响数据数目:300

    第:10次查询

    查询影响数据数目:300

    第:11次查询

    查询影响数据数目:300

    而对于DBF数据库来说,虽然事务开启了,但是其它线程可以读到当前线程未提交的数据。理论上来说,读取数据的线程每次读出的数据个数应该是100的倍数,但是实际情况不是这样的。运行结果如下:

    查询影响数据数:0

    查询影响数据数:0

    查询影响数据数:24

    查询影响数据数:43

    查询影响数据数:57

    查询影响数据数:75

    查询影响数据数:93

    插入影响数据数:100

    查询影响数据数:100

    查询影响数据数:100

    查询影响数据数:120

    查询影响数据数:138

    查询影响数据数:155

    查询影响数据数:169

    查询影响数据数:187

    插入影响数据数:100

    查询影响数据数:200

    根据测试结果来看,事务设置的隔离级别似乎没有生效,读到了写数据的线程没有提交的数据,没有达到预期的不读中间数据的目的。

    注意:

    dbf一种特殊的文件格式!表示数据库文件,Foxbase,Dbase,VisualFoxPro,等数据库处理系统所产生的数据库文件! 本身并不是数据库。

    如果说需要用到传统的数据库事务,那么可不可以有一个中间过程,程序操作在传统的大型数据库Oracle或者SQL Server上进行,然后最后导出成DBF文件。通过存储过程或者程序。

    相关参考文献如下:

    http://wenku.baidu.com/view/4965352b3169a4517723a33f.html

    http://wen-xudong7.javaeye.com/blog/409181

    http://tech.it168.com/oldarticle/2006-07-18/200607181949046.shtml

  • 相关阅读:
    django如何给上传的图片重命名(给上传文件重命名)
    Nginx 常见问题解决
    nginx 出现413 Request Entity Too Large问题的解决方法
    python判断一个对象是否可迭代
    InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClas...
    Android Studio中新建和引用assets文件
    android 登录效果
    Android (争取做到)最全的底部导航栏实现方法
    抽屉效果的导航菜单
    Android开发之自定义局部导航菜单
  • 原文地址:https://www.cnblogs.com/phoebus0501/p/1894495.html
Copyright © 2011-2022 走看看