pg效能測試

2022-08-24 03:57:10 字數 4750 閱讀 2961

資料庫

postgresql

版本9.6

系統linux centos 7.3

共享記憶體

1280m

其它配置

保持預設

--建立隨機日期時間函式      

create or replace function rand_date_time(start_date date, end_date date) returns timestamp as 

$body$ 

declare 

interval_days integer; 

random_seconds integer; 

random_dates integer; 

random_date date; 

random_time time; 

begin 

interval_days := end_date - start_date; 

random_dates:= trunc(random()*interval_days);

random_date := start_date + random_dates;

random_seconds:= trunc(random()*3600*24);

random_time:=' 00:00:00'::time+(random_seconds || ' second')::interval;

return random_date +random_time; 

end;  

$body$

language plpgsql; 

--建立隨機數的儲存過程

create or replace function f_random_str(length integer) returns character varying

language plpgsql

as $$

declare

result varchar(50);

begin

select array_to_string(array(select chr((65 + round(random() * 25)) :: integer)

from generate_series(1,length)), '') into result;

return result;

enddrop table if exists tbl_index5000;

create table if not exists tbl_index5000(a bigint,b timestamp without time zone, c varchar(16), d varchar(32), e varchar(48));

insert into tbl_index5000 (a,b,c,d,e)  select generate_series(1,5000*10000), '2019-06-05',f_random_str(16),f_random_str(32),f_random_str(48);

create index index_a1 on tbl_index1 using btree(a);

create index index_a10 on tbl_index10 using btree(a);

create index index_a100 on tbl_index100 using btree(a);

create index index_a1000 on tbl_index1000 using btree(a);

create index index_a5000 on tbl_index5000 using btree(a);

create index index_b1 on tbl_index1 using btree(b);

create index index_b10 on tbl_index10 using btree(b);

create index index_b100 on tbl_index100 using btree(b);

create index index_b1000 on tbl_index1000 using btree(b);

create index index_b5000 on tbl_index5000 using btree(b);

create index index_c1 on tbl_index1 using btree(c);

create index index_c10 on tbl_index10 using btree(c);

create index index_c100 on tbl_index100 using btree(c);

create index index_c1000 on tbl_index1000 using btree(c);

create index index_c5000 on tbl_index5000 using btree(c);

create index index_a10000 on tbl_index10000 using btree(a);

create index index_b10000 on tbl_index10000 using btree(b);

create index index_c10000 on tbl_index10000 using btree(c);

select "count"(*) from tbl_index1;

select "count"(*) from tbl_index10;

select "count"(*) from tbl_index100;

select "count"(*) from tbl_index1000;

select "count"(*) from tbl_index5000;

select "count"(*) from tbl_index10000;

select * from tbl_index1 where a=123456;

select * from tbl_index10 where a=123456;

select * from tbl_index100 where a=123456;

select * from tbl_index1000 where a=123456;

select * from tbl_index5000 where a=123456;

select * from tbl_index10000 where a=123456;

select * from tbl_index1 where b='2019-06-05 15:46:56';

select * from tbl_index10 where b='2019-06-05 15:46:56';

select * from tbl_index100 where b='2019-06-05 15:46:56';

select * from tbl_index1000 where b='2019-06-05 14:46:56';

select * from tbl_index5000 where b='2019-06-06 14:46:56';

select * from tbl_index10000 where b='2019-06-05 14:46:56';

select * from tbl_index1 where c='fkxxejjyrqsjkvtt';

select * from tbl_index10 where c='fkxxejjyrqsjkvtt';

select * from tbl_index100 where c='fkxxejjyrqsjkvtt';

select * from tbl_index1000 where c='fkxxejjyrqsjkvtt';

select * from tbl_index5000 where c='fkxxejjyrqsjkvtt';

select * from tbl_index10000 where c='fkxxejjyrqsjkvtt';

select * from tbl_index1 where d='eidrqtlvyjmnnyrskpqnyzmqqeabauue';

select * from tbl_index10 where d='eidrqtlvyjmnnyrskpqnyzmqqeabauue';

select * from tbl_index100 where d='eidrqtlvyjmnnyrskpqnyzmqqeabauue';

select * from tbl_index1000 where d='eidrqtlvyjmnnyrskpqnyzmqqeabauue';

select * from tbl_index5000 where d='eidrqtlvyjmnnyrskpqnyzmqqeabauue';

計數select "count"(*) from tbl_index*;

這裡的表名需要替換為相應的各個表

查詢1select * from tbl_index* where a=9999;

這裡由於a不是主鍵,所以需要全表掃瞄,所以查詢時間與a的值無關

查詢2select * from tbl_index* where b='2019-06-05 15:46:56';

隨機乙個時間

查詢3select * from tbl_index* where c='fkxxejjyrqsjkvtt';

隨機16位字串

提高pg效能測試生成資料效率

pg官方文件中的建議 匯入大量資料時,應注意的影響效能的地方,在效能測試時,也可以使用,今天效能測試時,生成資料時花了太多時間,就是這裡沒注意看。1.disable autocommit 2.use copy 3.remove indexes 4.remove foreign key constra...

效能測試 效能測試步驟

針對此次庫內作業效能測試,梳理一下期間的工作流程 梳理已有的介面指令碼,確認需要做效能測試的幾個介面,即使用率高,對效能有要求的幾個主要介面。結合頁面的操作,和確認的介面,梳理具體的業務邏輯 同時,請開發人員部署了測試環境。測試環境的伺服器指標,盡量和生產環境一致。部署的時候,負載均衡等情況也盡量和...

效能測試之前端效能測試

本次總結總共分為以下部分 1.如何衡量乙個系統是否要做壓測 2.壓測的準備過程 3.壓測工具選擇 4.壓測資料以及報告結果相關 1.如何衡量乙個系統是否要做壓測 首先需要衡量乙個系統是否需要壓測,從以下角度考慮 從兩個角度進行分析 a.業務角度 明確系統是對內使用還是對外使用,使用人數是多少,如果使...