SQLServer和Oracle并行处理方法的区别是什么?
SQLServer和Oracle并行处理方法的区别是什么?
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 Server编程的时候应该尽量地把交易代码设计得既小又快。
答:并行处理技术是数据库的一项核心技术,它使组织能够高效地管理和访问TB级的数据。如果不能提供高效的并行处理技术,这些大型数据库(通常用于数据仓库但也越来越多地出现...详情>>
问:同事ip:10.101.107.28 我的IP:10.101.104.23我们在...
答:你们公司是WINDOWS域环境吗,如果是的话,你在网上邻居里应该能看到对方的主机。让她把文件夹共享出来就可以。 如果不是WINDOWS域,那得看你们是不是在一个...详情>>
问:数据结构顺序表的建立,可定义顺序表 #define maxnum elemtyp...
答:打开VC ,然后点击新建,出来界面之后选择Win32 Console Application并输入工程的名称和选择项目的位置,然后出现“一个空工程”,在点击“...详情>>