PostgreSQL内存使用增长观察

说是内存增长,其实未必是。但是客户有时候喜欢用free命令来查看,为何更好地了解,进行以下试验。

运行PostgreSQL前:

[root@server ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1125        660        464          0         26        363
-/+ buffers/cache:        270        854
Swap:         2015          0       2015
[root@server ~]# 

启动PostgreSQL后:

[root@server ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1125        672        452          0         27        374
-/+ buffers/cache:        271        853
Swap:         2015          0       2015
[root@server ~]# 

 

然后,在同一台机器上开启一个psql之后:

[root@server ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1125        682        442          0         28        377
-/+ buffers/cache:        276        848
Swap:         2015          0       2015
[root@server ~]# 

一次插入100M数据:

复制代码
postgres=# \d test01;
        Table "public.test01"
 Column |      Type       | Modifiers 
--------+-----------------+-----------
 id     | integer         | 
 val    | character(1024) | 

postgres=# \d test02;
        Table "public.test02"
 Column |      Type       | Modifiers 
--------+-----------------+-----------
 id     | integer         | 
 val    | character(1024) | 

postgres=# 
复制代码

单纯地查询已经耗费内存了:

复制代码
postgres=# select count(*) from test01;
 count  
--------
 307200
(1 row)

postgres=# 
复制代码
[root@server ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1125       1031         93          0         29        723
-/+ buffers/cache:        278        846
Swap:         2015          0       2015
[root@server ~]# 

插入100M数据看看:

postgres=# insert into test01 (select * from test01 limit 102400);
INSERT 0 102400
postgres=# 
[root@server ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1125       1113         11          0         27        803
-/+ buffers/cache:        282        842
Swap:         2015          0       2015
[root@server ~]# 

此时,单纯看free部分的内存快没有了。

再重复一次,插入100M数据,free内存反而有所增加

postgres=# insert into test01 (select * from test01 limit 102400);
INSERT 0 102400
postgres=# 
[root@server ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1125       1048         76          0         13        750
-/+ buffers/cache:        284        840
Swap:         2015          0       2015
[root@server ~]# 

 

再折腾几次,多次连续插入100M数据后:

[root@server ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1125       1115          9          0          1        762
-/+ buffers/cache:        352        772
Swap:         2015          0       2015
[root@server ~]# 

还不过瘾,再来一次插入1200M数据:

仍然艰难地转下去了:

postgres=# insert into test01 (select * from test01);
INSERT 0 1228800
postgres=# 
[root@server ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1125       1113         12          0          1        820
-/+ buffers/cache:        290        834
Swap:         2015          0       2015
[root@server ~]# 

重新启动来看看:

现在,数据已经有2400M了,再次插入,会如何?要知道我的shared_buffers很小,才32MB:

由于插入数据量过大,导致系统崩溃,发生OOM错误。

 






本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3288350.html,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值