Postgre数据库插入、查询性能优化的详细方案

Postgre数据库插入、查询性能优化的详细方案
一、前言
以前的系统更复杂,因为表的设计(多个表,表和表有直接和下属的关系),这是由业务逻辑确定。插入效率简直无法忍受,必须优化。在理解的复制,Postgre未表的特点
在那之后,我们决定找出答案。

两。测试用例

1。表结构:表代表员工的工作绩效(work_test):共15场
ID,不,名字,性别,电话,地址,省,市,邮政,移动,部门工作。
索引(聚簇索引B树或聚集索引):ID,不,名字,性别,电话,地址,省、市邮政、移动、部。

2。测试环境:win7,四核心,2GB内存;Postgre 9.3版;npgsql连接到Postgre数据库。

三、插入 / / /未复制的事务表

1.insert 10W的数据可能需要120s,虽然有了很大的提高,但仍不能令人满意。发现交易能显著提高性能时使用SQLite,所以它被发现在Postgre它没有明显变化。
我不知道为什么。

2。复制可以将文件中的数据(CSV)复制到数据库中。当然,数据表的结构和数据类型应该与文件一一对应,可以大大提高插入性能。
复制代码代码如下所示:
copy'work_test'from'c:温度。csv分隔符,

U3000 U3000
在使用复制后,发现插入性能提高到30秒,相当于3300个记录的1s插入,中间也包含生成CSV文件的时间。

3.unlogged表
未记录的表格,网上的文章说它可以比插入的10倍。使用方法也很简单:创建记录表…
但未记录的表格将失去所有之后重新启动服务器异常Postgre的数据,所以如果你的数据是不允许失败,不使用它。
使用后发现,大约有20个和1个被插入到5000个记录中。

以下是三种刀片的发展趋势:
描述:X轴表示数据库中的记录数、单位数以百万计,每个点是一个10W,Y轴表示消耗每插入时间,单位秒。
蓝线:插入;为什么后面是稳定的,计算机运行其他程序。因此,计算机的工作状态对Postgre效率有一定的影响
粉红色:复制;
黄线:复制+无
虽然索引已经建立,表中的数据已经积累,但它对后续插入数据的性能没有影响。这个结果是我想要看到的。

四、查询测试
按名称字段搜索
复制代码代码如下所示:
SELECT * FROM work_test name =‘

描述:X轴表示在数据库中,记录的数量单位万,每个点是10W,Y轴代表了每个查询的时间,单位毫秒。

蓝线:插入;
粉红色:复制;
黄线:复制+无

由于三种插入的结果都是一样的,对比是没有意义的,这主要是看时间,平均500ms,随着行数的增加,查询效率不下降。这主要是由于良好的指标。
还发现,条件越多,查询效率就越高,因为扫描中的行数减少了,而下面的映射也没有发布。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部