当前位置:  数据库>oracle

SQL Server和Oracle并行处理比较分析

    来源: 互联网  发布时间:2017-03-16

    本文导语: 数据库并行访问,也就是两个或两以上用户同时访问同一数据,这也是数据库引擎如何设计和实现适度反应所面临的最大问题。设计优良、性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务。而“底气不足”的数据库...

数据库并行访问,也就是两个或两以上用户同时访问同一数据,这也是数据库引擎如何设计和实现适度反应所面临的最大问题。设计优良、性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务。而“底气不足”的数据库系统随着更多的用户同时访问系统将大大降低其性能。最糟糕的情况下甚至可能导致系统的崩溃。

当然,并行访问是任何数据库解决方案都最为重视的问题了,为了解决并行访问方面的问题各类数据库系统提出了各种各样的方案。 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语句,所以数据变动操作实际上还没有最终完成。接下来,在另一个窗口里执行下列语句查询titles数据表:


  select title_id,title,price
  from titles
  order by title_id.


你什么结果也得不到。窗口底部的小地球图标会转个不停。尽管我在先前的操作中仅仅更新了一行,但是,select语句的执行对象却恰好包含了其数据正被修改的一行。因此,上面的操作不会返回任何数据,除非回到第1个窗口提交交易或者回滚。





































    
 
 

您可能感兴趣的文章:

  • 强制SQL Server执行计划使用并行提升在复杂查询语句下的性能
  • SQL日期查询与比较方法
  • jsp连接sql server2000数据库,用odbc、jdbc那种方案比较好!
  • MS-SQL Server 2005 其中三个版本的比较
  • 我想把csdn的论坛改成一个软件平台,另外增加数据查询功能,聊天功能,不知怎样实现比较好?我想用jbuider 7+SQL server实现,不知如何?
  • 比较详细的完美解决安装sql2000时出现以前的某个程序安装已在安装计算机上创建挂起的文件操作。 原创
  • SQL Server 比较日期大小的方法
  • SQL 比较一个集合是否在另一个集合里存在的方法分享
  • 请教一个shell中调用sqlplus,其中sql语句中有$符号,需要转义,不知道怎么写转义才对,比较急,在线等,谢谢!
  • 六条比较有用的MySQL数据库操作的SQL语句小结
  • T-SQL实例 子查询结果中使用比较操作符
  • Sql Server 2012 转换函数的比较(Cast、Convert和Parse)
  • sql server日期比较函数
  • Oracle与SQL Server在企业应用的比较
  • 将表数据生成Insert脚本 比较好用的生成插入语句的SQL脚本
  • oracle下一条SQL语句的优化过程(比较详细)
  • sql 函数大全 比较常用的一些函数整理第1/2页
  • Oracle8i和Microsoft SQL Server比较
  • sql 时间函数 整理的比较全了
  • 浅谈SQL Server中的三种物理连接操作(性能比较)
  • 基于SQL Server中如何比较两个表的各组数据 图解说明
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • SQL语句中含有乘号报错的处理办法
  • SQL处理包 LocalSQL
  • SqlServer中用exec处理sql字符串中含有变量的小例子
  • sqlserver中通过osql/ocmd批处理批量执行sql文件的方法
  • 初学者问题:标准的sql里有处理日期的函数吗?
  • jsp处理sql语句的问题,急!马上给分!
  • C处理SQL命令字符串的函数哪里有?
  • SQL Server2008数据库导入导出兼容性处理方案
  • 浅析SQL存储过程和事务处理
  • MS SQL Server2014链接到MS SQL Server 2000的解决方案及问题处理
  • 请教:如何用shell实现指定log文件(比如a.log)中的指定内容(SQL_ID和SQL的处理部分)的收集
  • mysql从执行.sql文件时处理n换行的问题
  • sql server日期格式化处理的例子
  • sql数据库批量处理脚本
  • SQL对时间处理的语句小结
  • SQL 重复记录问题的处理方法小结
  • SQL处理多级分类,查询结果呈树形结构
  • sql server 存储过程的异常处理
  • SQL学习笔记七函数 数字,日期,类型转换,空值处理,case
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3