溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

若干數(shù)據(jù)庫數(shù)據(jù)插入性能的區(qū)別有哪些

發(fā)布時間:2021-09-24 10:18:43 來源:億速云 閱讀:114 作者:iii 欄目:數(shù)據(jù)庫

這篇文章主要介紹“若干數(shù)據(jù)庫數(shù)據(jù)插入性能的區(qū)別有哪些”,在日常操作中,相信很多人在若干數(shù)據(jù)庫數(shù)據(jù)插入性能的區(qū)別有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”若干數(shù)據(jù)庫數(shù)據(jù)插入性能的區(qū)別有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

測試環(huán)境如下:
服務器:本機(筆記本,I3 370,8G內(nèi)存)
操作系統(tǒng):windows 7 x64
語言環(huán)境:C#,使用控制臺程序測試。
虛擬機:安裝SqlServer2008,2CPU,3G內(nèi)存。
數(shù)據(jù)庫:Oracle11g(本機數(shù)據(jù)庫)
SQLite(本機文件)
MySql(版本5的綠色版)
SqlServer(不想在本機安裝2008版本,本來想使用本機的學習版,但死活不行,只好在本機虛擬機上安裝一個2008版本,測試性能有所下降,但也只好如此了)
Access(2003版)
Access(2007版)
測試方法:先生成10000條記錄(每條記錄6個字段),插入數(shù)據(jù)前先清除原有數(shù)據(jù);
數(shù)據(jù)插入分為事務性寫入(啟動事務,逐條插入后提交)及非事務性寫入(不啟動事務,逐條插入)。
SqlServer數(shù)據(jù)庫在本地虛擬機的數(shù)據(jù)庫中,數(shù)據(jù)不太準確;為消除網(wǎng)絡操作影響,將代碼移到虛擬中直接執(zhí)行一次。

測試過程中發(fā)現(xiàn)了若干有趣的問題:
1.64位操作系統(tǒng)下,Access無法在編譯為AnyCpu的程序下執(zhí)行,必須編譯為x86方可正常操作。(如果是網(wǎng)站,必須將池設置為啟用32位兼容)
2.SQLite有64位版本的DLL,可以正常在64位環(huán)境(控制臺程序)下運行;但很奇怪的是,如果是網(wǎng)站,則使用64位DLL反而無法正常運行,必須使用32位版本的DLL,并且將IIS的池設置為啟用32位兼容才可正常運行。
3.Access的2003版本與2007版本的數(shù)據(jù)庫連接串是不相同的,如下:
2003:@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\xxx\test.mdb";
2007:@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\xxx\test.accdb";
測試結(jié)果如下:

數(shù)據(jù)庫類別插入數(shù)量本地事務(毫秒)本地無事務(毫秒)說明
每條記錄耗時每秒插入條數(shù)每條記錄耗時每秒插入條數(shù)
Oracle100000.2343000.91103本地數(shù)據(jù)庫
Sqlite100000.0998100166.86146本地數(shù)據(jù)庫
MySql100000.257438844.132241本地數(shù)據(jù)庫
Sql Server100000.4223801.52654遠程數(shù)據(jù)庫
Sql Server100000.41324181.433697本地數(shù)據(jù)庫,2CPU,2G內(nèi)存
代碼直接在虛擬機運行
Access2003100000.6166446.8721.33本地數(shù)據(jù)庫
Access2007100000.73136947.5721.02本地數(shù)據(jù)庫

結(jié)果很有意思:
1.SQLite的事務插入速度最快,達到10000條每秒,但非事務性的插入速度就一般了。
2.Oracle作為數(shù)據(jù)庫的老大,事務插入速度僅次于SQLite,但非事務性的插入速度居首。
3.可憐Access,不試不知道,一試嚇一跳,事務插入最慢,非事務插入更慢;本來對Access2007還有點期待的,沒想到它比2003版本的數(shù)據(jù)還差。
4.mySql還真是不賴,事務插入的性能僅次于Oracle,非事務性的插入沒有那么強,但也還不錯。
從數(shù)據(jù)來看,發(fā)覺一個比較有規(guī)律的現(xiàn)象:大型數(shù)據(jù)庫與小型數(shù)據(jù)庫、本地型數(shù)據(jù)庫的區(qū)別,不在于事務性插入性能的高低,而在于非事務性插入性能的高低。Oracle最強,每秒達到1000條以上;其次是SqlServer,也有700條每秒;mySql相比之下就差多了,只達到240條每秒左右,這個性能整整差了一個等級;比較意外的是SQLite,非事務性插入性能雖然比mySql差一點,但也相差不大(不是數(shù)量級的差別);最糟糕的是Access,非事務數(shù)據(jù)插入性能慘不忍睹,和SQLite相比,整整差了一個數(shù)量級。

由上可見,如果選擇本地數(shù)據(jù)庫,SQLite應該是首選。而且在應用中還應該注意,盡可能把數(shù)據(jù)集中起來進行事務性數(shù)據(jù)寫入,如此可以大大提升該數(shù)據(jù)庫的性能。

到此,關于“若干數(shù)據(jù)庫數(shù)據(jù)插入性能的區(qū)別有哪些”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

sql
AI