PostgreSQL内存使用增长观察
磨砺技术珠矶,践行数据之道,追求卓越价值
回到上一级页面:PostgreSQL内部结构与源代码研究索引页 回到顶级页面:PostgreSQL索引页
[作者 高健@博客园 luckyjackgao@gmail.com]
说是内存增长,其实未必是。但是客户有时候喜欢用free命令来查看,为何更好地了解,进行以下试验。
运行PostgreSQL前:
[root@server ~]# free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[root@server ~]#
启动PostgreSQL后:
[root@server ~]# free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[root@server ~]#
然后,在同一台机器上开启一个psql之后:
[root@server ~]# free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[root@server ~]#
一次插入100M数据:
postgres=# \d test01;
Table "public.test01"
Column | Type | Modifiers
--------+-----------------+-----------
id | integer |
val | character() | postgres=# \d test02;
Table "public.test02"
Column | Type | Modifiers
--------+-----------------+-----------
id | integer |
val | character() | postgres=#
单纯地查询已经耗费内存了:
postgres=# select count(*) from test01;
count
-------- ( row) postgres=#
[root@server ~]# free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[root@server ~]#
插入100M数据看看:
postgres=# insert into test01 (select * from test01 limit );
INSERT
postgres=#
[root@server ~]# free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[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:
-/+ buffers/cache:
Swap:
[root@server ~]#
再折腾几次,多次连续插入100M数据后:
[root@server ~]# free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[root@server ~]#
还不过瘾,再来一次插入1200M数据:
仍然艰难地转下去了:
postgres=# insert into test01 (select * from test01);
INSERT
postgres=#
[root@server ~]# free -m
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[root@server ~]#
重新启动来看看:
现在,数据已经有2400M了,再次插入,会如何?要知道我的shared_buffers很小,才32MB:
由于插入数据量过大,导致系统崩溃,发生OOM错误。
[作者 高健@博客园 luckyjackgao@gmail.com]
回到上一级页面:PostgreSQL内部结构与源代码研究索引页 回到顶级页面:PostgreSQL索引页
磨砺技术珠矶,践行数据之道,追求卓越价值
PostgreSQL内存使用增长观察的更多相关文章
- SqlServr进程内存使用增长的解决办法
SqlServr进程使用的内存缓慢增长是正常的现象,但在服务器长时间不重启或sql服务不重启的情况下,最终,这个进程会耗尽所有的内存,导致所有终端无法正常与数据库交互. 1.设置数据库最大使用内存的值 ...
- Cesium 一个导致浏览器内存一直增长的方法
为了实时更改模型的位置,给模型附上ID,后面判断如果传来的数据中没有已经创建的模型,删掉该模型时用到方法:viewer.entities.removeById(modelId);和viewer.ent ...
- 从内存的角度观察 堆、栈、全局区(静态区)(static)、文字常量区、程序代码区
之前写了一篇堆栈的,这里再补充下内存其他的区域 1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap) — 一般由程 ...
- PostgreSQL内存配置记录
PostgreSQL内存配置,参考了其他人的总结,再加上自己的一些体会,做个记录. postgresql的内存分配主要由shared_buffers.temp_buffers.work_mem.mai ...
- 华为云数据库GaussDB(for Cassandra)揭秘第二期:内存异常增长的排查经历
摘要:华为云数据库GaussDB(for Cassandra) 是一款基于计算存储分离架构,兼容Cassandra生态的云原生NoSQL数据库:它依靠共享存储池实现了强一致,保证数据的安全可靠. 本文 ...
- 当master down掉后,pt-heartbeat不断重试会导致内存缓慢增长
最近同事反映,在使用pt-heartbeat监控主从复制延迟的过程中,如果master down掉了,则pt-heartbeat则会连接失败,但会不断重试. 重试本无可厚非,毕竟从使用者的角度来说,希 ...
- PostgreSQL内存结构图示
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL内部结构与源代码研究索引页 回到顶级页面:PostgreSQL索引页 作者:高健@博客园 luckyjackgao@ ...
- postgresql 内存分配
postgresql的内存分配主要由shared_buffers.temp_buffers.work_mem.maintenance_work_mem参数控制. shared_buffers又可以叫做 ...
- PostgreSQL内部结构与源代码研究索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 luckyjackgao@gmail.com 返回顶级页:PostgreSQL索引页 本页记录所有本人所写的PostgreSQL的内部结构和源代码研究相关文摘 ...
随机推荐
- MySQL->>innodb_autoinc_lock_mode参数控制auto_increment 插入数据时相关锁的模式
转自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2141640/ ---------------------------------- ...
- Oracle 客户端库时引发 BadImageFormatException
程序提示错误: 试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题. 出现场 ...
- 微信自定义菜单的emoji图标
微信公众号自定义菜单添加emoji表情图标 第一步:打开微信公众平台接口调试工具,点击前往接口调试工具: 第二步:把这段代码 {"button":[{"sub_butt ...
- CMD命令行窗口 复制黏贴
1.在cmd命令窗口空黑处,单击鼠标右键——选择[标记]——单击鼠标左链拖动选择要复制的文字,[再按一下Eenter键]就完成了命令的复制了. 2.粘贴就更简单了,窗口内单击右键——选择[粘贴],就将 ...
- 北美PM活着的攻略
http://www.followmedoit.com/bbs/forum.php?mod=viewthread&tid=47&extra=page%3D1 在北美,做PM不易,需要交 ...
- Windows:删除图标缓存
适用于桌面快捷方式图标丢失或图标变成白色的情况,批处理代码如下: rem 关闭explorer.exe taskkill /f /im explorer.exe attrib -h -i %userp ...
- Zabbix日常监控之lvs监控
参考博文:http://blog.51cto.com/kaibinyuan/1711863 监控环境的搭建请参考:https://www.cnblogs.com/huangyanqi/p/918780 ...
- windows命令行大全
命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在使用,所以一 ...
- November 10th 2016 Week 46th Thursday
Live like you were dying, love because you do. 生如将逝,爱自本心. When faced with our darkest hour, hope is ...
- in有两种用法:
# in有两种用法: 1. 在for中. 是把每一个元素获取到赋值给前⾯的变量. 2. 不在for中. 判断xxx是否出现在str中. #len() 为内置函数,输出为1,2,3,4....., 长度 ...