postgresql 普通表 內存表 無日志表 的性能對比


結論:

       與普通表比較,內存表的性能提升不明顯;

       與普通表比較,無日志表在插入時性能提高約1倍、更新和刪除時提高約40%;

測試環境:

1,准備

創建普通表:

drop table if EXISTS db_stream.t_aj_tj_general;

create table db_stream.t_aj_ tj_general

(

n_bh int8,

c_ah varchar(100),

n_jbfy int,

c_larq varchar(20),

c_jarq varchar(20),

n_ay  int,

n_sl int,

d_updatetime TIMESTAMP

);

創建內存表:

create tablespace ramdis location '/dev/shm';

drop table t_aj_tj_ram;

create table t_aj_tj_ram  TABLESPACE ramdis as select * from t_aj_tj_general ;

創建無日志表:

drop table t_aj_tj_unlogged;

create unlogged table t_aj_tj_unlogged as select * from t_aj_tj_general ;

創建內存表+無日志表:

drop table t_aj_tj_ramunlogged;

create unlogged table t_aj_tj_ramunlogged  TABLESPACE ramdis as select * from t_aj_tj_general ;

2,批量插入對比

普通表

truncate table t_aj_tj_general;

insert into t_aj_tj_general  select generate_series(1,5000000),'yy',664,'2017-12-08','2017-12-08',9533,1,now();

14.343s

無日志表

truncate table t_aj_tj_unlogged;

insert into t_aj_tj_unlogged select generate_series(1,5000000),'yy',664,'2017-12-08','2017-12-08',9533,1,now();

7.277s

內存表

truncate table t_aj_tj_ram;

insert into t_aj_tj_ram select generate_series(1,5000000),'yy',664,'2017-12-08','2017-12-08',9533,1,now();

13.881s

無日志+普通表

truncate table t_aj_tj_ramunlogged;

insert into t_aj_tj_ramunlogged select generate_series(1,5000000),'yy',664,'2017-12-08','2017-12-08',9533,1,now();

7.153s

3,逐條插入/更新/刪除對比(編寫Java程序單線程每插入/更新/刪除 一提交)

 

 

 



作者:Iamveryrich
鏈接:https://www.jianshu.com/p/2ecec063b112
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM