微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL unlogged表

Postgresql有一种介于正常表和临时表之间的类型表,称之为unlogged表,该表在写入数据时候并不将数据写入到持久的write-ahead log文件中,在数据库异常关机或者异常崩溃后该表的数据会被truncate掉,但是在写入性能上会比正常表快几倍。

分别测试正常表和unlogged表数据插入速度区别

uber_geocoder=# \dt+
                                      List of relations
          Schema          |          Name          | Type  |  Owner   |  Size  | Description 
--------------------------+------------------------+-------+----------+--------+-------------
 uber_geocoder_tw_15q3_v2 | compiling_info         | table | postgres | 16 kB  | 
 uber_geocoder_tw_15q3_v2 | data_process_reports   | table | postgres | 16 kB  | 
 uber_geocoder_tw_15q3_v2 | info                   | table | postgres | 16 kB  | 
 uber_geocoder_tw_15q3_v2 | twn_addr_compact       | table | postgres | 774 MB | 
(4 rows)

uber_geocoder=# \timing 
Timing is on.
uber_geocoder
=# create table twn_addr_compact_loggod as select * from twn_addr_compact ; SELECT 258902 Time: 977250.581 ms

可以看到在新建正常表并插770M的数据的情况下耗时近16分钟

新建一张unlogged表并插入770M数据进行测试

uber_geocoder=# create unlogged table twn_addr_compact_unloggod as select * from twn_addr_compact ;
SELECT 258902
Time: 300683.321 ms

可以看到在同等条件下unlogged表的插入速度为5分钟,性能提高了三倍。

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐