單機資料庫效能測試總結
當前單機資料庫(檔案型資料庫)有很多,為了選擇更好的資料庫,以便以後使用,在這主要對以下資料庫進了插入、查詢的速度進行測試,以及資料庫的管理方式進行詳細說明。資料庫分別為:SQLLite、FireBird、Derby、HSql、PostgreSQL、JavaDB 、H2等。
1、sqlite
驅動包:sqlitejdbc-v056.jar
驅動包的版本要正確,一開始我用sqlite-jdbc-3.6.0.jar導致hibernate在大批量插入時會中斷。
Hibernate 連線配置:
hibernate.dialect sqlDialect.SQLiteDialect
hibernate.connection.driver_class org.sqlite.JDBC
hibernate.connection.username
hibernate.connection.password
hibernate.connection.url jdbc:sqlite:d:/sqlite/test50w.db
其中sqlDialect.SQLiteDialect是自己編寫的一個繼承org.hibernate.dialect.Dialect的java類。
連線完後系統會在url的路徑下建立指定資料庫名的資料庫。
管理工具:下載sqliteadmin.zip包解壓後執行sqliteadmin.exe.
特點:不支援儲存過程,不支援外來鍵,多程序可以同時開啟同一個資料庫,也可以同時
優點:佔用空間少,開啟資料庫速度快,SQLite不支援儲存過程,不支援外來鍵,多程序可以同時開啟同一個資料庫,也可以同時 SELECT
缺點:查詢速度一般,只有一個程序可以立即改資料庫
2、Firebired
驅動包:jaybird-2.1.6.jar、jaybird-full-2.1.6.jar、jaybird-pool-2.1.6.jar
Hibernate連線配置:
hibernate.dialect org.hibernate.dialect.FirebirdDialectw
hibernate.connection.driver_class org.firebirdsql.jdbc.FBDriver
hibernate.connection.username sysdba
hibernate.connection.password masterkey
hibernate.connection.url jdbc:firebirdsql:localhost:d:/firebird/TEST100W.fdb
資料庫的管理工具:
(1)Firebird isql tool:下載fodesk.rar解壓後安裝,執行該工具,在命令列輸入:create database 資料庫名 user 'sysdba' passwrod 'masterkey'.如下圖所示:
資料庫名副檔名.fdb要輸入,使用者名稱和密碼必須用單引號。
完成後在路徑下新增了一個副檔名為.fdb的資料庫檔案。
(2)FlameRobin介面管理工具
下載flamerobin-0.8.3-setup.exe安裝後軟體介面。
特點:檔案佔用空間少,插入記錄時間較慢,支援多執行緒的讀寫。
優點:佔用空間少,支援多執行緒的讀寫
缺點:無事務插入速度慢,建立索引後查詢速度慢
3、Derby
驅動包:derby.jar
Hibernate連線配置:
hibernate.dialect org.hibernate.dialect.DerbyDialect
hibernate.connection.driver_class org.apache.derby.jdbcEmbeddedDriver
hibernate.connection.username
hibernate.connection.password
hibernate.connection.url jdbc:derby:d:/derby/testsize50w;create=true
連線完後系統會在url的路徑下建立指定資料庫名的資料庫,資料庫存在後可以將配置中的create=true去掉。
資料庫以檔案的形式存在,如testsize50w資料庫,以testsize50w為資料夾,下有:
資料庫管理工具:IJ管理工具
解壓db-derby-10.5.3.0-bin.zip後在db-derby-10.5.3.0-bin/db-derby-10.5.3.0-bin/bin下可以找到ij.bat檔案。執行既可,資料庫的連線命令:connect 'jdbc:derby:d:/derby/testsize50w';
也可以安裝eclipse外掛,在eclipse開發時可以管理資料庫,安裝外掛包:derby_core_plugin_10.5.3.zip
資料庫特點:插入記錄較慢,查詢速度一般。不支援多執行緒的讀寫。
優點:查前面幾頁時速度快
缺點:佔用空間大,無事務插入時速度慢,有事務插入時也慢,不支援多執行緒的讀寫
4、HSql
它有五種模式:Hsqldb Server、Hsqldb Web Server、Hsqldb Servlet、In-Process(Standalone)模式、Memory-Only 資料庫本文主要採用In-Process(Standalone)模式。
驅動包: hsqldb.Jar
驅動包在hsqldb-2.0.0-rc9.zip解壓後hsqldb-2.0.0-rc9/hsqldb/lib下,驅動包的版本要正確,一開始我用1.8版本的包,導致hibernate用獨佔(file)連線時無法連線上。
Hibernate連線配置:
hibernate.dialect org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.username sa
hibernate.connection.password
hibernate.connection.url jdbc:hsqldb:file:d:/hsql/test100w/test100w;ifexits=true
其中ifexits=true可以不寫
管理工具類:
• org.hsqldb.util.DatabaseManager
• org.hsqldb.util.DatabaseManagerSwing
• org.hsqldb.util.Transfer
• org.hsqldb.util.QueryTool
• org.hsqldb.util.SqlTool
建立資料庫:在指定的路徑中新建一個數據庫資料夾(test),將hsqldb.jar放在該資料夾下。並新增一個runcreate.bat檔案,內容為:
java -cp hsqldb.jar org.hsqldb.server.Server -database test
執行後會建立一個數據庫testhsqldb,資料庫檔案包括:
• test.properties
• test.script
• test.log
• test.data
• test.backup
圖形管理工具:在資料夾test下新增runmanager.bat檔案。內容為:
java -Xms512m -Xmx512m -cp ../hsqldb.jar org.hsqldb.util.DatabaseManager
其中當資料庫大時需要新增-Xms512m -Xmx512m引數,否則可以不要。 執行該檔案:
輸入連線資訊後,單擊OK完成連線。
特點:佔用空間小,查詢速度快,但是超過10幾萬條記錄時開啟資料庫非常慢,而且簡直無法插入,佔用的記憶體暴漲,需要調高記憶體後才能進行操作。插入速度快。不支援多執行緒的讀寫
優點:無事務插入時速度快,有事務插入時速度快,無索引查詢速度快,建立索引後查詢速度快like中文查詢快
缺點:開啟資料庫速度慢,較耗記憶體。不支援多執行緒的讀寫
5、PostgreSQL
驅動名:postgresql-8.4-701.jdbc3.jar
Hibernate 連線配置
hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class org.postgresql.Driver
hibernate.connection.username postgres
hibernate.connection.password postgresql
hibernate.connection.url jdbc:postgresql://localhost:5432/test5w?charSet=UTF-8
資料的管理工具:
它必須安裝資料庫軟體,解壓postgresql-8.4.3-1-windows.zip包後執行postgresql-8.4.3-1-windows.exe安裝資料庫軟體。
建立新的資料庫,每個資料庫對應一個Id,存放在:postgresql安裝目錄下的PostgreSQL/8.4/data/base下。以各自的id為資料夾,下包括它的資料檔案。
應用程式在連線資料庫時,資料庫服務必須先啟動。
特點:要先安裝資料庫伺服器,資料庫較在。支援多執行緒的讀寫,用like的方式查比較慢
6、javaDb
新安裝了 JDK 6 的程式設計師們也許會發現,除了傳統的 bin、jre 等目錄,JDK 6 新增了一個名為 db 的目錄。這便是 Java 6 的新成員:Java DB。這是一個純 Java 實現、開源的資料庫管理系統(DBMS),源於 Apache 軟體基金會(ASF)名下的專案 Derby。
驅動包:jdk1.6/db/lib/derby.jar
Hibernate連線配置:與derby一樣
資料庫管理工具與derby一樣
優點:資料庫安裝方便
缺點:佔用空間大,分頁查詢時速度較慢,不支援多執行緒的讀寫
7、H2
驅動包:h2-1.2.135.jar
Hibernate連線配置:
hibernate.dialect org.hibernate.dialect.H2Dialect
hibernate.connection.driver_class org.h2.Driver
hibernate.connection.username sa
hibernate.connection.password
hibernate.connection.url jdbc:h2:d:/h2/test100w/testh2
連線完後系統會在url的路徑下建立指定資料庫名的資料庫。
資料庫管理工具:安裝h2-setup-2010-05-08.exe
介面如下:
設定完成後單擊connect即可.
特點:不支援多執行緒,資料插入快。索引後查詢速度快
優點:建立索引後查詢速度快
缺點:關閉資料庫慢,無索引查詢速度慢,資料量大時like中文查詢慢,不支援多執行緒
以上是用hibernate的連線,用jdbc的連線相似,驅動和URL都一樣。
測試結果如下: