爱易网
IT新闻
IT新闻
爱易资讯
网站搭建
云虚拟主机教程
云服务器教程
Apache教程
IIS教程
Nginx教程
网站策划
站长文章
推广教程
淘宝客教程
网页设计
HTML教程
XHTML教程
CSS教程
HTML5教程
CSS3教程
JavaSript基础
JQuery教程
Node.js教程
前端技术
Ajax教程
Js特效
Xml教程
平面设计
页面UI设计
photoshop教程
程序开发
AI人工智能
Asp教程
Php教程
Asp.Net教程
Net Core教程
C#教程
Java教程
Jsp教程
开发技术
微信小程序教程
Uniapp开发教程
微信公众号开发
Andriod教程
IOS教程
DOS教程
Python教程
Docker教程
Windows Container教程
数据库
MSSQL教程
MySQL教程
Redis教程
Access教程
Oracle教程
数据库教程
操作系统
Linux教程
Windows教程
MAC教程
Cisco教程
交换机教程
防火墙教程
搜索
爱易网页
数据库教程
SQLServer和Oracle防止数据锁定的比较
SQLServer和Oracle防止数据锁定的比较
日期:2014-03-24 浏览次数:20380 次
SQL Server和Oracle防止数据锁定的比较
廖铮
www.chinai tp 采集 ow er.comKegMw
2002-5-30 14:23:50
数据库并行访问,也就是两个或两以上用户同时访问同一数据,这也是数据库引擎如何设计和实现适度反应所面临的最大问题。设计优良、性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务。而“底气不足”的数据库系统随着更多的用户同时访问系统将大大降低其性能。最糟糕的情况下甚至可能导致系统的崩溃。
当然,并行访问是任何数据库解决方案都最为重视的问题了,为了解决并行访问方面的问题各类数据库系统提出了各种各样的方案。 SQL Server和Oracle两大DBMS也分别采用了不同的并行处理方法。它们之间的实质差别在哪里呢?
并行访问的问题
并行访问出现问题存在若干种情况。在最简单的情形下,数量超过一个的用户可能同时查询同一数据。就这种情况而言数据库的操作目标很简单:尽可能地为用户们提供快速的数据访问。 这对我们现在常见的数据库来说不成问题:SQL Server和 Oracle 都采用了多线程机制,它们当然能够一次处理多个请求。
不过,在用户修改数据的情况下并行访问问题就变得复杂起来了。显然,数据库通常只允许唯一用户一次修改特定的数据。当某一用户开始修改某块数据时, SQL Server和 Oracle 都能很快地锁定数据,阻止其他用户对这块数据进行更新,直到修改该数据的第1位用户完成其操作并提交交易(commit transaction)。但是,当某一位用户正在修改某块数据时假设另一位用户又正想查询该数据的信息时会发生什么情况呢?在这种情况下数据库管理系统又该如何动作呢?Oracle 和 SQL Server针对这一问题采取了不同的解决方案。
SQL Server方法
现在不妨假设有人开始修改SQL Server上存储的数据,于是这块数据立即被数据库锁定。数据锁定操作阻塞其他任何访问该数据的连接——连查询操作都不会放过。于是,这块被锁定的数据只有在交易被提交或者回滚之后才能接受其他访问操作。
下面用SQL Server随带的pubs示例数据库做一个简单示范。在Query Analyzer内打开两个窗口。在第1个窗口中执行下列SQL操作语句,更新pubs数据库中某一图书的价格:
use pubs
go
begin tran
update titles
set price = price * 1.05
where
title_id = 'BU2075'
由于代码中并没有执行commit语句,所以数据变动操作实际
上一篇: CCNP_route札记6 关于OSPF中的hello和DBD顺序
下一篇:SQLServer2000中清空LOG文件一法
免责声明:
本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
相关资料
更多>
机房收费系统-数据库
轨范 db
[RDLC]一步一步教你使用RDLC(1)
Oracle备份与恢复(1)
spring事务管理 数据库事宜的4个特性
(转)oracle数据库实例,数据库的了解
java依据数据库自动生成vo 类
使用镜像数据库减免报表的负载
eweb demo war包+源码+db脚本 上载 (1.8.x-SNAPSHOT)
推荐阅读
更多>
FCKEditor 文本编辑工具,怎么将图片与文字一起存入ORACLE数据库中
oracle中operator的创造与查询
oracle笔记五(类型+循环+错误)
如何修正MySQL日志文件位置?
EXP中参数compress=y是不是导致imp时initial值的变化
Goldbach's Conjecture 地图+素数表
刚刚写的一个使用shell操作数据库
HTML5 本土数据库
重启Oracle数据库的操作方法
oracle 建立表空间 创办用户 授权 导入 导出
oracle创办表空间和用户授权
企业管理器的常见用途
SQL2008依据日志还原数据库
教你设计大型Oracle数据库
dbaccess shell调用sql话语和procedure的区别 output
Oracle 9i 在 Red Hat Enterprise Linux 3 AS U2 上的装置
android 学习日志1 数据库
jdbc与js结合的级联上拉列表
oracle 10g 中出现表名:BIN$2cMp4FjwQ2Cw3Lj+BxLYTw==$零
Qt联接Oracle数据库详细介绍(QOCI)