日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql odbc ado性能差异_ODBC、OLEDB和ADO之间的关系 ,以及性能比较

發布時間:2023/12/2 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql odbc ado性能差异_ODBC、OLEDB和ADO之间的关系 ,以及性能比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習了.net視頻之后,對里面涉及到的數據庫連接部分中的一些概念表示很無語。網上很多相關資料,但除了網站不一樣外,基本上內容都神一樣的一致。

現在,我就通過結合看到的一些資料再加上自己的理解試圖去解釋一下,有不對的,還請大家指教!

看一張圖:

看圖中右半部分,我們先來了解一下ODBC這個概念。

1.ODBC:

要了解ODBC是什么,先了解一下數據庫連接的相關知識。其實,在最開始連接數據庫時,由于數據庫種類繁多,各種數據庫連接有不同的需求,這個時期,數據庫連接主要依靠各種API函數來進行連接。而ODBC就是將這些API函數封裝起來形成統一的接口如上圖所示(ODBC上方有一個唯一的接口)。圖中所示的ODBC層代表ODBC中各種數據庫的驅動器(driver),當SQL語句進入接口后,驅動器管理程序通過辨別將它們分別對應的進入各自的驅動器(driver),由驅動器來講SQL語句送入各種不同的數據庫。

不知道上面這樣寫,有沒有把這個ODBC給介紹的明白一點兒,學習要生活化,這樣才容易理解。我來舉個例子。

我們把ODBC假想成一輛汽車,汽車中有一名司機(driver),把下面的各種數據庫假設程不同的工廠。如果司機接收到接口中的命令(SQL語句)——將汽車上的貨物運到某個工廠中。那么司機(driver)會根據命令中所指明的貨物的類型,自己去辨別到底應該進入哪個工廠才能完成任務。

大家看,上面這個例子中接收的命令就好像是數據庫中的SQL語句,那么司機就好像是驅動器(driver),而不同的工廠就好像是不同種類的數據庫。這樣理解,有沒有簡單一點兒呢?

2.OLEDB與ODBC

好了,再來看一下OLEDB,在上面的例子中我們理解了ODBC,還有我們必須知道,ODBC負責的只是結構化數據庫的連接。這樣我們就會比較容易理解OLEDB。

OLEDB其實和ODBC類似,都是負責數據庫連接的低級接口。而OLEDB不僅支持結構化數據庫如SQL server,Oracel Access等,而且還支持非結構化數據源的連接如EXCEL等。

OLEDB(對象連接和嵌入數據庫),是一組對象的集合,一種讀寫數據的方法。在使用OLEDB時,使用步驟為:初始化OLE、連接到數據源、發出命令、處理結果、釋放數據源對象并停止初始化OLE。他可以通過ODBC連接到數據庫,也可以之間連接到數據庫。當不通過ODBC時,這時在這其中并不涉及到驅動器的成分,因此,此時的數據庫連接速度會更快。同時,我們可以知道,只要支持ODBC的數據源是一定能夠支持OLEDB的。但是反過來則不一定。

3.ADO

通過圖中,我們看到ADO是位于應用程序和OLEDB之間的。它屬于數據庫連接中的高層接口。

是一個用于存取數據源的COM組件。它提供了編程語言和統一數據訪問方式OLE DB的一個中間層。允許開發人員編寫訪問數據的代碼而不用關心數據庫是如何實現的,而只用關心到數據庫的連接。訪問數據庫的時候,關于SQL的知識不是必要的,但是特定數據庫支持的SQL命令仍可以通過ADO中的命令對象來執行。

如何理解上面這個概念呢?其實我們可以聯系我們學到的關于ADO控件的相關知識。在原來學習VB的時候,我們如果想要連接到數據庫的話,必須加載一個引用空間,里面含有connection,command,recordset等一些相關數據庫連接的對象,其實這個引用就是ADO。我們通過這些對象建立對數據庫的連接,我們只需編寫訪問數據庫的代碼,而并不用關系數據庫是如何實現的。

看完了三者的關系,讓我們來看看他們操作數據的速度如何,以打開access為例

性能對比:

sql access

oledb dsn oledb dsn

時間????? 18 82 62 99

查詢1,000條記錄: 100 150 2900 5400

顯然,oledb鏈接方式相對于dsn有很大的優勢.購買虛擬主機的小站,大多是php+mysql或者asp+access的組合,一般沒有dsn數據源的配置,而且我們也不需要.同時mssql是一種昂貴的數據庫,如果使用效率低下的access,我們應該盡量的減少數據庫引擎的壓力.我經常看見一些站點給出提示:數據庫連接失敗,顯然,又是access出毛病了.

常用的連接access的辦法:

oledb

openstr="provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath(db)

odbc

openstr="Driver={Microsoft Access Driver (*.mdb)};DBQ=" &Server.Mappath(db)

這兩者在性能上也有一定的差別.下面是一個測試文件,對兩者進行比較.

dim openmode,action,db,openstr,rs,conn

openmode=request.QueryString("openmode")

action=request.QueryString("action")

db="#niceidea.mdb"

set conn=server.createobject("adodb.connection")

if penmode="oledb" then penstr="provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath(db)

if penmode="odbc" then penstr="Driver={Microsoft Access Driver (*.mdb)};DBQ=" &Server.Mappath(db)

Dim strStartTime

Dim strEndTime

strStartTime = Timer ''''''''''''''''''''''''''''''''開始時間

''''''''''''''''''''''''''''''''反復打開數據庫50次

if action="open" then

for i=1 to 50

conn.open(openstr)

conn.close

next

set conn=nothing

end if

''''''''''''''''''''''''''''''''移動記錄集10000次

if action="move" then

conn.open(openstr)

set rs=conn.execute("select * from visitor")

for i=1 to 10000

rs.movenext

next

rs.close

set rs=nothing

conn.close

set conn=nothing

end if

''''''''''''''''''''''''''''''''反復打開記錄集1000次

if action="getrs" then

conn.open(openstr)

set rs=server.CreateObject("adodb.recordset")

dim sqlstr

sqlstr="select * from visitor"

for i=1 to 1000

rs.open sqlstr,conn,1,1

rs.close

next

set rs=nothing

conn.close

set conn=nothing

end if

%>

'''''''''''''''''''''''''''''''' 加載完畢的時間

strEndTime = Timer

Response.Write ("運行處理時間: ")

Response.Write 1000*(strEndTime - strStartTime)

Response.Write (" 毫秒.")

response.end

%>

得到的數據如下:

odbc反復打開數據庫50次:

6062.5 毫秒.

oledb反復打開數據庫50次:

4601.563毫秒.

odbc移動記錄集10000次:

1132.813 毫秒.

oledb移動記錄集10000次:

304.6875 毫秒.

odbc反復打開記錄集1000次:

8734.375 毫秒.

oledb反復打開記錄集1000次:

7960.938 毫秒.

測試環境,ce1.70/512m/windows xp sp2/withnetbox(不再開發的測試服務器)

顯然,在效率上,oledb有些微的優勢。微軟已經不更新ODBC,用JET方式連接數據庫是一種更有效率的辦法,特別是在需要移動游標的時候.另外,兩者還有一些其他方面的區別,oledb是一種更底層的方法,在這種數據庫連接方式中,應該注意的規范更多,就像用sql和access時候,某些查詢語句也會不一樣.例如:

select from user where id=1

將是一句錯誤的查詢語句,因為user是系統保留的關鍵字.需要改為

select from [user] where id=1

如果使用odbc連接,則不存在上述情況.

如果使用jet連接,在某些虛擬主機中可能會因為access版本的不同而導致連接失敗;所以你需要首先確定主機的引擎版本;在盡可能的情況下,使用以下語句打開access,將提高asp的效率,還有穩定性:

"provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath(db)

此外,打開數據庫和記錄集對象都是很消耗cpu資源的,盡可能減少查詢是很必要的

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mysql odbc ado性能差异_ODBC、OLEDB和ADO之间的关系 ,以及性能比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 波多野在线 | 性xxxx视频播放免费 | 视频免费在线 | 中国videosex高潮hd | 9i在线看片成人免费 | 国产成人福利视频 | 极品女神无套呻吟啪啪 | 成人免费区一区二区三区 | 一起操网址| 国产成人精品无码片区在线 | 中国黄色小视频 | 久久国产精品免费观看 | 欧美在线播放一区二区 | 欧美一性一乱一交一视频 | 中文天堂在线资源 | 超碰97av在线 | 日韩一区在线播放 | 国产区网址 | 日韩成人高清在线 | 日本少妇中文字幕 | 午夜免费剧场 | 成人免费看片'在线观看 | 国产在线第一页 | 成人免费xxxxx在线观看 | 日本老年老熟无码 | 亚欧美色图 | 国产99精品 | 国家队动漫免费观看在线观看晨光 | 欧美一级二级在线观看 | 欧美少妇色图 | 免费在线播放视频 | 日韩欧美网 | 亚洲24p | 非洲黑寡妇性猛交视频 | 丝瓜色版| 久久午夜夜伦鲁鲁片无码免费 | 久久精品综合网 | 亚洲一区天堂 | 91日韩精品 | 夜夜伊人| 免费福利视频在线观看 | 亚洲网站免费观看 | 欧美午夜精品久久久久久孕妇 | 久国产视频 | 无码少妇一级AV片在线观看 | 波多野结衣 在线 | 成人精品一区二区三区 | 国产精品嫩草影院精东 | 国产欧美久久久久 | 综合狠狠 | 特黄视频免费看 | 魔性诱惑 | 性欧美hd调教 | 亚洲综合激情网 | 日本55丰满熟妇厨房伦 | 国产在视频线精品视频 | 日韩成人高清视频 | 奇米影音 | 成人精品免费在线观看 | 五月天天色 | 国产婷婷综合 | 白俄罗斯毛片 | 在线日韩中文字幕 | 亚洲精品无码一区二区 | 成人黄色免费 | 91素人约啪 | 久久精品中文闷骚内射 | 人人爽人人爽人人爽人人爽 | 久久综合桃花网 | 日韩精品一区二区在线播放 | 丁香九月激情 | 亚洲国产av一区 | 色综合久久精品亚洲国产 | 伊人性视频 | 国产91美女视频 | 人人干人人做 | 亚洲av永久纯肉无码精品动漫 | 丝袜老师让我了一夜网站 | h网址在线观看 | 色吟av| 波多野结衣91 | 美女裸片 | 99爱这里只有精品 | 男人草女人 | 男女羞羞在线观看 | 91黄址 | 综合视频一区二区 | 99性趣网| 亚洲色在线视频 | 午夜性色福利影院 | 亚洲综合在线观看视频 | 99思思| 樱花草涩涩www在线播放 | 国产一区免费看 | 91精品中文字幕 | 久久av资源网 | 我把护士日出水了视频90分钟 | 性xx紧缚网站 | 天堂中文8|