在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、前言 二、测试用例 1.数据表结构:表示一个员工工作绩效的表(work_test):共15个字段 2.测试环境:win7,四核,2GB内存;postgre版本9.3;Npgsql连接Postgre数据库。 三、insert/ transaction/ copy/unlogged table 1.insert 一个10W数据大概需要120s,虽然已经提升“不少”,但是还是不尽如人意。以前用SQLite时发现Transaction可以大幅提升性能,于是在Postgre中试试,发现并没有明显变 2. copy可以将文件(csv)中的数据复制进数据库中,当然数据表的结构和要数据类型要与文件一一对应。据说可以大幅提升插入性能。 复制代码 代码如下: COPY 'work_test' from 'c:\temp.csv' WITH DELIMITER AS ',' 使用Copy后发现插入的性能立马提升至30s,相当于1s插入3300条记录。这中间还包含生成csv文件的时间。 3.unlogged table 下面是三种插入方式的走势图: 说明:x轴表示数据库中已有的记录数,单位百万,每个点是10W.Y轴表示每次插入所耗时间,单位秒。 复制代码 代码如下: select * from work_test where name='1' 说明:x轴表示数据库中已有的记录数,单位百万,每个点是10W.Y轴表示每次查询所耗时间,单位毫秒。 蓝色线:insert; 粉红色:copy; 黄色线:copy+unlogged 由于三种插入方式结果都是一样的,所以对比并没有意义,这里主要看查询耗时。平均下来:500ms,并且随着Row count的增加,查询效率并没有降低。这主要得益于良好的索引。 另外发现:条件越多,查询效率越高,因为扫描的行数在减少,后面的图就不贴出来了。 |
请发表评论