国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > 文庫 > 正文

關于若干數據庫數據插入性能的對比分析

2020-10-29 21:52:29
字體:
來源:轉載
供稿:網友
本地數據庫接觸不多,最早用過Access,但現在SQLite功能更加強大--而且,說實在的我不喜歡Access,連帶著不喜歡SqlServer,只要一看到滿眼的@號go號我就頭暈不止;更何況有一個我感覺非常致命的問題:分頁太麻煩!遠不如mySql/SQLite中的limit或者Oracle中的rownum來得痛快。

平時基本使用Oracle,對它的性能知根知底了;mySql近年來混得風生水起,想必有過人之處,也一并納入測試范圍了。

另外,Access現在有2007版,不知道和2003版在性能上有什么區別沒有?特意分開進行測試。

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

測試過程中發現了若干有趣的問題:
1.64位操作系統下,Access無法在編譯為AnyCpu的程序下執行,必須編譯為x86方可正常操作。(如果是網站,必須將池設置為啟用32位兼容)
2.SQLite有64位版本的DLL,可以正常在64位環境(控制臺程序)下運行;但很奇怪的是,如果是網站,則使用64位DLL反而無法正常運行,必須使用32位版本的DLL,并且將IIS的池設置為啟用32位兼容才可正常運行。
3.Access的2003版本與2007版本的數據庫連接串是不相同的,如下:
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";
測試結果如下:
數據庫類別插入數量本地事務(毫秒)本地無事務(毫秒)說明
每條記錄耗時每秒插入條數每條記錄耗時每秒插入條數
Oracle100000.2343000.91103本地數據庫
Sqlite100000.0998100166.86146本地數據庫
MySql100000.257438844.132241本地數據庫
Sql Server100000.4223801.52654遠程數據庫
Sql Server100000.41324181.433697本地數據庫,2CPU,2G內存
代碼直接在虛擬機運行
Access2003100000.6166446.8721.33本地數據庫
Access2007100000.73136947.5721.02本地數據庫
結果很有意思:
1.SQLite的事務插入速度最快,達到10000條每秒,但非事務性的插入速度就一般了。
2.Oracle作為數據庫的老大,事務插入速度僅次于SQLite,但非事務性的插入速度居首。
3.可憐Access,不試不知道,一試嚇一跳,事務插入最慢,非事務插入更慢;本來對Access2007還有點期待的,沒想到它比2003版本的數據還差。
4.mySql還真是不賴,事務插入的性能僅次于Oracle,非事務性的插入沒有那么強,但也還不錯。
從數據來看,發覺一個比較有規律的現象:大型數據庫與小型數據庫、本地型數據庫的區別,不在于事務性插入性能的高低,而在于非事務性插入性能的高低。Oracle最強,每秒達到1000條以上;其次是SqlServer,也有700條每秒;mySql相比之下就差多了,只達到240條每秒左右,這個性能整整差了一個等級;比較意外的是SQLite,非事務性插入性能雖然比mySql差一點,但也相差不大(不是數量級的差別);最糟糕的是Access,非事務數據插入性能慘不忍睹,和SQLite相比,整整差了一個數量級。

由上可見,如果選擇本地數據庫,SQLite應該是首選。而且在應用中還應該注意,盡可能把數據集中起來進行事務性數據寫入,如此可以大大提升該數據庫的性能。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精河县| 会东县| 砀山县| 加查县| 东乡县| 鸡泽县| 克什克腾旗| 樟树市| 包头市| 新河县| 呼伦贝尔市| 新建县| 新野县| 赣榆县| 通城县| 渭源县| 富锦市| 吕梁市| 东至县| 安义县| 二手房| 革吉县| 荥经县| 贵港市| 醴陵市| 泰和县| 乐山市| 泰兴市| 象州县| 乡宁县| 台南县| 铜鼓县| 通州市| 江油市| 乌拉特中旗| 油尖旺区| 大丰市| 铁岭县| 冷水江市| 呼伦贝尔市| 革吉县|