POSTGRESQL性能測試數據

測試平臺:Postgresql 8.3.5 ,DotNet 2.0,  Ado.net驅動 1.1, WinXp Sp3,
          迅馳 1.8G Hz, 內存 2G
數據插入實驗中數據插入的時間包含生成GUID的耗時和更新界面進度條的耗時
查詢的時間僅包含讀取數據庫的時間

測試查詢語句:

從表查詢:

select "szSoftName","szValue" from "TST_Sort_T" inner join "TST_Value_T" on "TST_Sort_T"."nSortId"="TST_Value_T"."nSortId"
where "szValue" ilike '%...%'

主表查詢:

select "szSoftName","szValue" from "TST_Sort_T" inner join "TST_Value_T" on "TST_Sort_T"."nSortId"="TST_Value_T"."nSortId"
where "szSoftName" ilike '%...%'

建庫語句:

CREATE DATABASE testpsql
  WITH OWNER = postgres
       ENCODING = 'UTF8';

CREATE TABLE "TST_Sort_T"
(
  "nSortId" serial NOT NULL,
  "szSoftName" character varying(255),
  CONSTRAINT "TST_Sort_SortId_PK" PRIMARY KEY ("nSortId")
)WITH (OIDS=FALSE);

CREATE INDEX "TST_Sort_SortName_I" ON "TST_Sort_T" USING btree ("szSoftName");

CREATE TABLE "TST_Value_T"
(
  "nValueId" bigserial NOT NULL,
  "nSortId" serial NOT NULL,
  "szValue" character varying(255),
  CONSTRAINT "TST_Value_ValueId_PK" PRIMARY KEY ("nValueId"),
  CONSTRAINT "TST_Value_SoftId_FK" FOREIGN KEY ("nSortId")
      REFERENCES "TST_Sort_T" ("nSortId") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)WITH (OIDS=FALSE);

CREATE INDEX "TST_Value_Value_I" ON "TST_Value_T" USING btree ("szValue");



數據插入
=====================================================
主表記錄:0     從表記錄:0
主表插入           從表插入    耗時
1000           1000×10     8秒 156毫秒
1000        1000×10    7秒 593毫秒
1000        1000×10    7秒 515毫秒

數據查詢:
=====================================================
主表記錄:3000     從表記錄:30000
查詢出的記錄數量    查詢條件篩選    耗時
2838            從表        218 毫秒
25586            從表        343 毫秒
25800            主表        203 毫秒
220            主表        31 毫秒

數據插入
=====================================================
主表記錄:3000     從表記錄:30000
主表插入           從表插入    耗時
10000       10000×10     1分 20秒 328毫秒
10000       10000×10     1分 24秒 109毫秒
10000       10000×10     1分 21秒 828毫秒

數據查詢:
=====================================================
主表記錄:33000     從表記錄:330000
查詢出的記錄數量    查詢條件篩選    耗時
1977            從表        2秒 62 毫秒
282379            從表        4秒 687 毫秒
33323            從表        2秒 312 毫秒
132            從表        1秒 921 毫秒
130            主表        312 毫秒
33200            主表        531 毫秒
282330            主表        4秒 15 毫秒
2410            主表        328 毫秒


數據插入
=====================================================
主表記錄:33000     從表記錄:330000
主表插入           從表插入    耗時
100000       100000×10     53分 6秒 390毫秒
100000       100000×10     1小時 49 分 3秒 562毫秒
100000       100000×10     2小時 35分 54秒 281 毫秒


數據查詢:
=====================================================
主表記錄:333000     從表記錄:3330000
查詢出的記錄數量    查詢條件篩選    耗時
18848            從表        20秒 468 毫秒
1124            從表        21秒 671毫秒
0            從表        20秒 375毫秒
32915            從表        20秒 328毫秒
33050            主表        3秒 562 毫秒
130            主表        3秒 265 毫秒
0            主表        1秒 890 毫秒
379750            主表        19秒 859毫秒


數據插入
=====================================================
主表記錄:333000     從表記錄:3330000
主表插入           從表插入    耗時
100000       100000×10     2小時 36分 5秒 218 毫秒

(中間在主表中插入 250000,從表  250000X10, 運行中間出錯 )

主表記錄:668592    從表記錄:6685920
1000           1000×10      1分 17秒 31毫秒
1000           1000×10      1分 26秒 921毫秒
20000        20000×10        33分 16秒 625毫秒
200000          200000*10        6小時 17分 3秒 718 毫秒
200000          200000*10        5小時 59分 19秒 437 毫秒


數據查詢:
=====================================================
主表記錄:1103574    從表記錄:11035740
查詢出的記錄數量    查詢條件篩選    耗時
63033            從表        127093 ms
0             從表        57687 ms
88275            從表        128000 ms
974            從表        66860 ms
1030            主表        10406 ms
0            主表        5610 ms
88480            主表        57921 ms
390            主表        14797 ms


整數索引查詢

從表查詢:

select "szSoftName","szValue" from "TST_Sort_T" inner join "TST_Value_T" on "TST_Sort_T"."nSortId"="TST_Value_T"."nSortId"
where "nValueId" >100 and "nValueId" < 10000

查詢總耗時: 641 ms.
檢索到 9899 行。

select "szSoftName","szValue" from "TST_Sort_T" inner join "TST_Value_T" on "TST_Sort_T"."nSortId"="TST_Value_T"."nSortId"
where "nValueId" >100 and "nValueId" < 100000


查詢總耗時: 72843 ms.
檢索到 99899 行。

select "szSoftName","szValue" from "TST_Sort_T" inner join "TST_Value_T" on "TST_Sort_T"."nSortId"="TST_Value_T"."nSortId"
where "nValueId" >100000 and "nValueId" < 110000


查詢總耗時: 609 ms.
檢索到 9999 行。

select "szSoftName","szValue" from "TST_Sort_T" inner join "TST_Value_T" on "TST_Sort_T"."nSortId"="TST_Value_T"."nSortId"
where "nValueId" >900000 and "nValueId" < 910000

查詢總耗時: 1219 ms.
檢索到 9999 行。

select "szSoftName","szValue" from "TST_Sort_T" inner join "TST_Value_T" on
"TST_Sort_T"."nSortId"="TST_Value_T"."nSortId"
where "nValueId" = 100000


查詢總耗時: 0 ms.
檢索到 1 行。


select "szSoftName","szValue" from "TST_Sort_T" inner join "TST_Value_T" on
"TST_Sort_T"."nSortId"="TST_Value_T"."nSortId"
where "nValueId" = 9900000

查詢總耗時: 94 ms.
檢索到 1 行。


數據索引非常快,無須做主表的數字索引查詢

我主要測試的是查詢速度,在做數據插入時,晚上開機測試,同時在下載,下載速度越200多K,故對數據庫插入應該有些影響。

~~The END~~
尹曙光
發佈了31 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章