OLEDB的性能比较

转载 2006年05月22日 12:01:00
OLEDB的性能比较

本文作者:不详
所属分类:ASP与数据库
加入时间:2004-3-16
点击次数:1452


有许多种办法可以连上一个数据库. 你可以用System DSN, DSN-less连接或是本地的OLEDB provider. OLEDB? 这是什么什么玩艺儿? 也许你们中的许多人以前没有听说过. 要回答这个问题,我们先得回顾一下数据库连接的历史.

 

早期的数据库连接是非常困难的. 每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解. 因此,能处理各种各样数据库的通用的API就应运而生了. 也就是现在的ODBC(Open Database Connectivity), ODBC是人们在创建通用API的早期产物. 有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库.
ODBC兼容的数据库包括Access, MS-SQL Server, Oracle, Informix等.

但ODBC并不是完美无缺的,它仍然含有大量的低级的调用,开发ODBC应用程序仍较困难. 开发者不得不将大量的精力花在底层的数据库通信中,而不能专注于他们所要处理的数据. 后来微软提出了一个解决方案: DAO(Data Access Objects). DAO的代码看起来象这样:

objItem.AddNew
objItem.Name = "Chair"
objItem.Price = 10
objItem.Update

你也许看过DAO的代码. 后来DAO演变为RDO(Remote Data Objects, 为分布式数据库体系设计), 再后来是ADO. 尽管它们都有各自的不足之处. 根据微软的说法,"ODBC提供了本地SQL数据的存取,DAO提供了高级的数据对象". DAO和RDO都需要数据以SQL(Structured Query Language)的格式存储. 针对这些缺陷,微软提出了OLEDB,一个基于COM的数据存储对象,能提供对所有类型的数据的操作,甚至能在离线的情况下存取数据(比方说,你使用的是你的便携机,你可以毫不费力地看到最后一次数据同步时的数据映像).

OLEDB位于ODBC层与应用程序之间. 在你的ASP页面里,ADO是位于OLEDB之上的"应用程序". 你的ADO调用先被送到OLEDB,然后再交由ODBC处理. 你可以直接连接到OLEDB层,如果你这么做了,你将看到服务器端游标(recordset的缺省的游标,也是最常用的游标)性能的提升. 那我们该如何直接连接到OLEDB呢?

要想直接连到OLEDB层,你必须改变你的connection对象连接字符串. 先用老办法创建一个connectiong对象:

Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")

接下去,我们不用常规的类似DSN=pubs or DRIVER={MS SQL-
Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine的连接字符串,而采用下面的连接字符串:

objConn.ConnectionString = "Provider=ProviderName; Data
Source=DatabaseSource; Initial Catalog=DatabaseName; User ID=UserID;
Password=Password"

对于SQL:
ProviderName = SQLOLEDB
Data Source = Server Name
Initial Catalog = Database Name

对于Access:
ProviderName = Microsoft.Jet.OLEDB.3.51
Data Source = Full path to .MDB file

下面让我们来看两个例子,一个是针对Access的,还有一个是针对SQL的. 如果你的连接SQL的DSN-less连接串是这样的:

DRIVER={MS SQL-Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine

那么直接连接到OLEDB的连接字符串应该是这样的:

Provider=SQLOLEDB; Data Source=myMachine; Initial Catalog=pubs; User
ID=sa; Password=

让我们来看看Access,如果你的Access的连接字符串是:

DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=c:/inetpub/wwwroot/users.mdb

那么直接连接到OLEDB的连接字符串应该是这样的:

Provider=Microsoft.Jet.OLEDB.3.51; Data
Source=c:/inetpub/wwwroot/users.mdb

就是这么简单,挺棒的吧?

这很重要吗?
现在你也许对为什么要学习这种新的数据库连接方法感到有些儿迷惑,为什么不走标准的DSN-less/System DSN路子呢? 让我来告诉你为什么. 据Wrox出的ADO 2.0
Programmer's Reference一书中的测试,用OLEDB连接而不是DSN或DSN-less的连接会得到的性能提升如下:

性能比较
SQL Access
 OLEDB DSN OLEDB DSN
Connection Times: 18 82 Connection Times: 62 99
Iterating through 1,000 Records Times: 2900 5400 Iterating through
1,000 Records Times: 100 950


我希望这篇文章能对你有点儿帮助,我相信你会对你的连接SQL及Access数据库的方法做一些小小的改进的. :)

利用Oledb操作Xlsx文件

利用Oledb操作Xlsx文件 简介: 解决方案: Form1.designer.cs: namespace XlsxViaOledb { partial class Form1 {...
  • pengzhen8805
  • pengzhen8805
  • 2016年06月20日 11:04
  • 517

各种排序算法性能比较。

原帖 http://www.cnblogs.com/wangjiahong/p/3570465.html?utm_source=tuicool 下面是我直接做成的源码,直接可以运行。 大家可以根据需要...
  • DOwnstairs
  • DOwnstairs
  • 2017年04月25日 14:31
  • 300

OLEDB对数据库的操作心得(一)数据表及数据结构的填充

最近使用OLEDB编写一个mdb数据表录入程序小有心得,现总结如何: 一、.数据表及数据结构的填充 1.使用OLEDBConnection配合连接字符串进行数据库连接,连接字符串汇总如下: a.对...
  • dibowei2069
  • dibowei2069
  • 2016年01月13日 10:12
  • 458

C#中操作Excel(6)—— 操作Excel的两种技术(二)--OLEDB技术

三、使用OLEDB技术操作Excel         上文介绍了使用COM技术读写Excel的方法,接下来我们介绍下使用OLEDB技术读写Excel。 3.1 使用OLEDB读取Excel文件。 ...
  • lzhui1987
  • lzhui1987
  • 2016年11月24日 09:45
  • 968

使用oledb对数据库进行增删改查及批量插入操作

使用oledb操作数据库工具类,可使用泛型统一操作 using System; using System.Collections.Generic; using System.Data; ...
  • fyshk
  • fyshk
  • 2015年04月29日 11:15
  • 1970

oledb 连接Excel文件所对应的的多种连接方式

Excel在我们日常生活中使用非常的普遍,统计数据,特别是公司里的财务数据,销售数据等等,使用Excel能大大提高工作的效率。并且可以快速方便的移动数据,共享数据。在软件开发中,特别是开发一些MIS系...
  • sdd379733766
  • sdd379733766
  • 2013年08月08日 17:02
  • 1030

ODBC、OLEDB和ADO之间的关系

学习了.net视频之后,对里面涉及到的数据库连接部分中的一些概念
  • wangyy130
  • wangyy130
  • 2014年05月26日 19:45
  • 1782

9种常见内部排序算法的性能比较

在写完这9种常见的内部排序算法后总觉得需要把它们拿出来好好比较一番,看看各个算法的性能优劣。 我们先来看看各个排序算法的理论性能,再看实际性能。...
  • Thinkpad4180NC5
  • Thinkpad4180NC5
  • 2014年11月15日 23:01
  • 2450

C#以OleDb的方式操作Excel文件(三)

二、写Excel文件 前面讲
  • ll365
  • ll365
  • 2014年09月03日 11:59
  • 1488

x86,x64系统下安装OleDB驱动

转自:http://tonzi.blog.163.com/blog/static/4199583620144585819532/ Office 2007 x32,Win7 x64 安装Ole...
  • fengxing11
  • fengxing11
  • 2016年10月20日 15:27
  • 2339
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OLEDB的性能比较
举报原因:
原因补充:

(最多只允许输入30个字)