奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 数据库 >> Sybase >> SYBASE事务
数据库
Access
SQL Server
MySQL
DB2
Oracle
Sybase
  • Sybase数据库死锁对策

  • SYBASE ASA数据库恢复

  • Sybase数据库简介

  • SYBASE零售行业解决方

  • SYBASE数据库日志详解

  • Sybase数据库备份方案

  • SYBASE数据库用户管理

  • Sybase数据库的碎片整

  • SYBASE事务
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-23


    事务

      本篇文章描述了数据库事务隔离级对锁的影响,通过对比事务隔离级0和1,理解锁与脏读的关系。

    实验内容:分别设置0和1级隔离级,执行两个不同但又有相关的事务。本实验环境如下:

    1、  有权访问用户数据库(在此是aca_database)和对数据库表有修改和查询权限。

    2、  数据库中有表auths,包含salary列(数据类型是money),有一定数据量(在此有1万行)。

    步骤:

    1、 如在同一台机器,可分别执行两次“SQL Advantage”,分别用合法帐号登录,准备各自执行一个事务。

    2、 在各自界面打开用户数据库aca_database,设置隔离级为1(此亦为缺省值):

    set transaction isolation level 1,查看当前隔离级别用select @@isolation

    3、 执行第一个事务的前两句,暂不执行后面的提交或回滚。

    begin transaction

    update auths set salary=salary+100

    commit transaction

    (rollback transaction)

    4、 执行第二个事务 select sum(salary) from auths

    5、  第一个事务正常执行结束,但只在内存缓冲区完成修改,事务并没有真正结束,相应也不释放锁,第二个事务处于等待状态。可执行sp_lock和sp_who命令查看。

    6、  执行第3步中的提交或回滚命令,第二个事务得到执行。

    7、  改变事务隔离级为0,重复执行3-4步。第一个事务没有任何变化,第二个事务很快出来根据第一个事务修改数据而成的结果,似乎在执行响应上并不受第一个事务的影响。

    8、  重复第6步结束。

    通过上面的实验我们知道:

    1、        隔离级0时事务允许脏读,隔离级1时事务不允许脏读,而只是等待前一个修改事务真正结束并释放锁。

    2、        隔离级为0时,如果在修改事务的最后是回滚操作,则查询读事务将不能读到正确的数据。

    3、        在确信事务中没有回滚操作的可能,并要求更高的执行效率和并行性,只有这时可考虑设置隔离级为0。

      
      
    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.