1. 程式人生 > >單機資料庫效能測試總結

單機資料庫效能測試總結

 當前單機資料庫(檔案型資料庫)有很多,為了選擇更好的資料庫,以便以後使用,在這主要對以下資料庫進了插入、查詢的速度進行測試,以及資料庫的管理方式進行詳細說明。資料庫分別為: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.Dialectjava類。

連線完後系統會在url的路徑下建立指定資料庫名的資料庫。

管理工具:下載sqliteadmin.zip包解壓後執行sqliteadmin.exe.

特點:不支援儲存過程,不支援外來鍵,多程序可以同時開啟同一個資料庫,也可以同時 

SELECT ,但只有一個程序可以立即改資料庫,like查詢的方式查較慢。

優點:佔用空間少,開啟資料庫速度快,SQLite不支援儲存過程,不支援外來鍵,多程序可以同時開啟同一個資料庫,也可以同時 SELECT 

缺點:查詢速度一般,只有一個程序可以立即改資料庫

2、Firebired

驅動包:jaybird-2.1.6.jarjaybird-full-2.1.6.jarjaybird-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的資料庫檔案。

2FlameRobin介面管理工具

下載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 ServerHsqldb Web ServerHsqldb ServletIn-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 的程式設計師們也許會發現,除了傳統的 binjre 等目錄,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都一樣。

測試結果如下: