您现在的位置是:首页 > 博客网站制作 > CSS3|Html5CSS3|Html5
postgres 使用存储过程批量插入数据的操作
杨青青2022-02-20【CSS3|Html5】人已围观
简介这篇文章主要介绍了postgres使用存储过程批量插入数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧参考官方文档createorreplacefunctioncreatData
这篇文章主要介绍了postgres使用存储过程批量插入数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
参考官方文档
createorreplacefunctioncreatData2()returns
booleanAS
$BODY$
declareiiinteger;
begin
II:=1;
FORiiIN1..10000000LOOP
INSERTINTOipm_model_history_data(res_model,res_id)VALUES(116,ii);
endloop;
returntrue;
end;
$BODY$
LANGUAGEplpgsql;
select*fromcreatData2()astab;
插入1千万条数据耗时610s,当然字段不多的情况下。
补充:Postgresql存储过程--更新或者插入数据
要记录某一时段机器CPU、内存、硬盘的信息,展示的时间粒度为分钟,但是为了精确,输入数据源的时间粒度为6s。这个统计过程可以在应用层做好,每分钟插入一次,也可以在数据库层写个存储过程来完成,根据传入数据的时间来判断是更新数据库旧数据还是插入新数据。
同时,这些数据只需要保留一周,更老的数据需要被删除。删除动作可以每天定时执行一次,也可以写在存储过程中每次检查一下。
考虑到性能在此时没什么太大约束,而后面存储过程的接口方式更漂亮些,不用应用层去关心数据到底组织成什么样,因此实现了一个如下:
PostgresqlV8.3
CREATEORREPLACEFUNCTIONinsert_host_status(_log_datetimestampwithouttimezone,_hostinet,_cpuinteger,_meminteger,_diskinteger)
RETURNSvoidAS
$BODY$
DECLARE
new_starttimestampwithouttimezone;
current_starttimestampwithouttimezone;
c_idinteger;
c_log_datetimestampwithouttimezone;
c_cpuinteger;
c_meminteger;
c_diskinteger;
c_countinteger;
date_spaninterval;
BEGIN
--insertorupdate
SELECTid,log_date,cpu,mem,disk,countINTOc_id,c_log_date,c_cpu,c_mem,c_disk,c_countFROMhost_status_byminuteWHEREhost=_hostORDERBYidDESClimit1;
SELECTtimestamp_mi(_log_date,c_log_date)INTOdate_span;
IFdate_span>='00:00:60'ORc_idISNULLTHEN
INSERTINTOhost_status_byminute(log_date,host,cpu,mem,disk,count)values(_log_date,_host,_cpu,_mem,_disk,1);
ELSIFdate_span>='-00:00:60'THEN
c_mem:=((c_mem*c_count)+_mem)/(c_count+1);
c_cpu:=((c_cpu*c_count)+_cpu)/(c_count+1);
c_disk:=((c_disk*c_count)+_disk)/(c_count+1);
c_count:=c_count+1;
UPDATEhost_status_byminuteSETmem=c_mem,cpu=c_cpu,disk=c_disk,count=c_countWHEREid=c_id;
ENDIF;
--deleteolddata
SELECTdate_mii(date(now()),6)INTOnew_start;
SELECTdate(log_date)fromhost_status_byminutelimit1INTOcurrent_start;--omitabughappenedwhendateisdisordered.
IFnew_start>current_startTHEN
DELETEFROMhost_status_byminutewherelog_date
END;
$BODY$
LANGUAGE'plpgsql'VOLATILE
COST100;
ALTERFUNCTIONinsert_host_status(timestampwithouttimezone,inet,integer,integer,integer)OWNERTOdbuser_test;
Tags:
很赞哦! ()
相关文章
随机图文
十条设计原则教你学会如何设计网页布局!
网页常见的布局有很多种,单列布局,多列布局.其中单列布局是国外很多网站比较常用的.咱们很多站长以及门户网站都使用的是是两列布局,很少用三列布局的.下面我来分享下我们常用的网页布局格式以及设计技巧.css3边框(圆角、阴影、图片)的实现
现在大部分的浏览器都支持新的css3功能了,所以,以前用图片来实现css3边框圆角和css3边框阴影的实现的,都可以换成css3简单的代码了。IE不支持border-image边框图片属性的设置...css3背景(一)背景图片、颜色渐变、多重背景图
background-image:设置或检索对象的背景图像background-repeat:设置或检索对象的背景图像如何铺排填充background-attachment:设置或检索对象的背景图像是随对象内容滚动css3制作3D图书翻页效果
景深设置,可以让3D效果更加逼真,perspective定义属性后,子元素会获得透视效果,而不是元素本身,transform-style:preserve-3d保留3D位置。关于CSS3 perspective 更多属性以及教程,请参考W3School网站教程