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~~
尹曙光

你可能感兴趣的:(软件设计与开发)