博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL内存使用增长观察
阅读量:5905 次
发布时间:2019-06-19

本文共 3328 字,大约阅读时间需要 11 分钟。

磨砺技术珠矶,践行数据之道,追求卓越价值

回到上一级页面:    回到顶级页面:

[作者 高健@博客园  luckyjackgao@gmail.com]

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

运行PostgreSQL前:

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

启动PostgreSQL后:

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

 

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

[root@server ~]# free -m             total       used       free     shared    buffers     cachedMem:          1125        682        442          0         28        377-/+ buffers/cache:        276        848Swap:         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     cachedMem:          1125       1031         93          0         29        723-/+ buffers/cache:        278        846Swap:         2015          0       2015[root@server ~]#

插入100M数据看看:

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

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

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

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

 

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

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

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

仍然艰难地转下去了:

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

重新启动来看看:

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

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

 

[作者 高健@博客园  luckyjackgao@gmail.com]

回到上一级页面:    回到顶级页面:

磨砺技术珠矶,践行数据之道,追求卓越价值

转载地址:http://chdpx.baihongyu.com/

你可能感兴趣的文章
分析Nginx 源码 - ngx_palloc文件总结
查看>>
JetBrains C/C++ IDE CLion 安装
查看>>
一个vue的可拖拽的瀑布流布局组件
查看>>
基于SpringCloud的微服务架构实战案例项目
查看>>
ng2-stomp-service ng2 ng4 websocket使用
查看>>
leetcode 438. Find All Anagrams in a String
查看>>
HTML5 拖放(Drag 和 Drop)详解与实例
查看>>
分布式任务调度平台的自动化部署
查看>>
Vue 组件(上篇)
查看>>
Vue-cli
查看>>
通过 JSX Control Statements 编写 JSX
查看>>
JS中的DOM知识概览
查看>>
第3章 Kotlin语言基础 《Kotlin 极简教程》
查看>>
Edraw Max(亿图图示)基本操作图文详解
查看>>
基于 Vue 的 Loading 工具.
查看>>
java开发常见异常
查看>>
ie9下line-height失效
查看>>
Spring boot 测试
查看>>
Redux story-1:who creates it?
查看>>
springboot的HealthAggregator
查看>>