2020年7月9日

最小锁的情况添加 not null 约束

摘要: 当大表字段添加 not null 时,直接执行 alter column_name set not null, 数据库对表加的是 ACCESS EXCLUSIVE LOCK 锁,会阻塞读写,同时全表扫描检查是否所有记录满足 not null 条件。当表比较小或是使用频率不高时,可以使用这种方式,当表 阅读全文

posted @ 2020-07-09 15:15 Still water run deep 阅读(287) 评论(0) 推荐(0) 编辑

2019年3月13日

pg中删除的页是否仍被访问

摘要: 昨天看到微信群中,有人提问:pg对于标记为删除的页,是否会扫描到? 今天做了一下测试,发现如果删除的是表的最后连续的几个页(根据ctid来确定数据插入先后,只讨论有insert的情况)中的数据,最后几个页经过vacuum后,会被释放回操作系统,自然不会被扫描到,但如果不是最后的页会不会扫描到,下面测 阅读全文

posted @ 2019-03-13 20:21 Still water run deep 阅读(236) 评论(0) 推荐(1) 编辑

2019年3月12日

postgresql 数据库无法启动

摘要: 在数据库无法启动时,一般可以根据报错信息,采取对应措施即可,下面列出一些在数据库启动时报出错误比较严重而解决方式又不那么明显的处理方法。 模拟错误,查到pg_class系统表中一个索引在磁盘中的位置,通过vim任意修改其中内容。 重启数据库。 数据库可以正常启动,日志也没有报错。 但连接数据库时,会 阅读全文

posted @ 2019-03-12 19:23 Still water run deep 阅读(5729) 评论(0) 推荐(1) 编辑

2019年1月13日

pg数据库杀掉连接

摘要: 遇到异常连接时,需要将对应连接杀掉,可能是连接占用了过多CPU或是IO,影响了业务,或是时间过长的空闲事务. pg对于杀掉连接提供了专门的命令,一般情况下使用 就可以,不过操作取消不掉,可以使用 ,如果 命令,仍然无法将连接杀掉,此时可以使用 ,将连接的网络通信连接直接杀掉。 有时候,出现使用 也杀 阅读全文

posted @ 2019-01-13 15:35 Still water run deep 阅读(3339) 评论(0) 推荐(1) 编辑

2019年1月10日

CentOS7防火墙firewalld使用

摘要: 1、firewalld的基本使用 2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。 3.配置firewalld cmd 那怎么开启一个端口呢 IP 封禁: 阅读全文

posted @ 2019-01-10 10:53 Still water run deep 阅读(221) 评论(0) 推荐(0) 编辑

2018年12月17日

pg删除账号,权限的回收问题

摘要: 在pg中删除账号时,一般不能直接删除账号,要先将该账号上所有的对应权限收回,但往往这一步是比较繁琐的,可能当时赋权的对象类型很多,对象也比较多,虽然可以通过sql按照类型来收回针对整个schema的所有权限,但还是有可能漏掉的,可能有使用 定义的默认权限。 实际上pg提供了对应的命令来处理删除用户, 阅读全文

posted @ 2018-12-17 16:04 Still water run deep 阅读(2849) 评论(0) 推荐(0) 编辑

2018年12月7日

Cannot enlarge string buffer containing XX bytes by XX more bytes

摘要: 在ELK的数据库报警系统中,发现有台机器报出了下面的错误: 当看到是发生了OOM时,以为是整个数据库实例存在了问题,线上检查发现数据库正常,后查阅资料了解到,pg对于一次执行的查询语句长度是有限制的,如果长度超过了1G,则会报出上面的错误。 上面日志中的1342177281 bytes是查询的长度。 阅读全文

posted @ 2018-12-07 23:21 Still water run deep 阅读(1957) 评论(0) 推荐(0) 编辑

2018年10月23日

pg_upgrade升级报错:Only the install user can be defined in the new cluster

摘要: 前两天pg11刚出来,打算测试一下,想将测试库升级到pg11,之前测试库的版本是pg9.6,后面我将它升到了pg10,打算在pg10的版本基础上升级到pg11。 但执行时,多次报出: 所以就搜了一下代码,在src/bin/pg_upgrade/check.c中找到该报错的原因 pg_upgrade升 阅读全文

posted @ 2018-10-23 16:59 Still water run deep 阅读(630) 评论(0) 推荐(0) 编辑

2018年9月13日

WARNING: pgstat wait timeout

摘要: 在ELK的邮件报警中,发现了一个 WARNING: pgstat wait timeout 的报错信息,看字面意思是pgstat有关操作等待超时。 通过google查询,发现在pg的邮件列表中提到多数为io不足引起的,通过sar命令,查看当时的io情况,发现io的使用率在80%-100%之间。暂时以 阅读全文

posted @ 2018-09-13 17:05 Still water run deep 阅读(703) 评论(0) 推荐(0) 编辑

2018年9月12日

PostgreSQL 修改字段类型从int到bigint

摘要: 由于现在pg的版本,修改int到bigint仍然需要rewrite表,会导致表阻塞,无法使用。但可以考虑其他方式来做。此问题是排查现网pg使用序列的情况时遇到的。 由于int的最大值只有21亿左右,而且自增列多为主键,当达到最大值时,数据就会无法插入。一般情况是修改类型为bigint,但直接做会锁表 阅读全文

posted @ 2018-09-12 18:18 Still water run deep 阅读(3770) 评论(0) 推荐(0) 编辑

导航