我们知道在数据库行数据更新时,索引也需要进行维护,如果是高并发的情况下,索引维护的代价很大,可能造成索引分裂。Pg为了避免这个问题,采用了HOT(堆内元组技术)解决这个问题,下面我们就这个技术详细探讨一下。
很多行业对行业数据的存储都有自己的监管标准,例如: Payment Card Industry Data Security Standard (PCI DSS) Health Insurance Portability and Accountability Act (HIPAA) General Data Protection Regulation (GDPR) California Consumer Protection Act (CCPA) And more
PostgreSQL的功能非常强大,但是要把PostgreSQL用好,需要后端、运维、DBA的协力配合。 本文针对PostgreSQL数据库原理与特性,整理了一份开发规范,希望可以减少大家在使用PostgreSQL数据库过程中遇到的困惑。 你好我也好,大家都好。
在2020-05-21 这个特殊的日子里,PostgreSQL 全球开发组宣布PostgreSQL 13 的Beta 1 正式对外开放,可提供下载。这个版本包含将来PostgreSQL 13正式版本中的所有特性和功能,当然一些功能的细节在正式版本发布时可能会有些变化。 下面我们将详细了解下PostgreSQL 13 版本新的特性和功能。
我们在使用数据库服务时,通常需要使用客户端连接数据库服务端,以 PostgreSQL 为例,常用的客户端有自带的 psql,JAVA 应用的数据库驱动 JDBC,可视化工具 PgAdmin 等,这些客户端都需要遵守 PostgreSQL 的通信协议才能与之 "交流"。所谓协议,可以理解为一套信息交互规则或者规范,最为我们熟知的莫过于 TCP/IP 协议和 HTTP 协议。
锁是实现数据库并发控制必不可少的功能,PostgreSQL数据库通过其特有的多版本属性实现了MVCC,实现了读不阻塞写,写不阻塞读。PostgreSQL中表锁有八个级别,不同的锁对应了不同的排他级别。值得注意的是同一时刻两个事务不能再同一个表上获取相互冲突的锁,但是一个事务是永远不会与自己冲突的,一个事务里连续获取两个有冲突的锁类型是没有问题的。
PostgreSQL 13 Beta版本已Released,尽管没有太多激动人心的新特性,总体在功能上有所增强,本文介绍逻辑复制对分区表的支持。 PostgreSQL 10 版本开始已支持逻辑复制,在12版本之前逻辑复制仅支持普通表,不支持分区表,如果需要对分区表进行逻辑复制,需单独对所有分区进行逻辑复制。
默认创建索引过程中由于需要请求ShareLock级别的锁,将会阻塞对表的修改操作,为了降低索引创建的影响,在PG中支持并发索引创建,该操作请求的锁级别为ShareUpdateExclusiveLock级别的表,允许对表的插入/更新/删除操作。
1. 为什么要使用pl/lua pl/lua是一个插件,可以使用lua语言写PostgreSQL的存储过程和函数,使用lua语言有如下几个好处, 可以大大提升存储过程的性能,特别是循环的性能。 在PostgreSQL中数组或一些json对象都是不可变的,如往数组或json对象中添加元素时,需要把拷贝源对象而生成一个新对象,导致很大的开销。而使用lua语言的list和table对象就没有这个问题了。 lua语言的语法更灵活。 也就是当我们需要在存储过程或函数中做一些密集的运算,使用plpgsql会比较慢,而使用pl/lua会提升10倍以上的性能。这个提升还是很观的,所以建议这些存储过程使用pllua来编写。
PostgreSQL的并发控制以快照隔离(SI)为主,以两阶段锁定(2PL)机制为辅。PostgreSQL对DML(增删改查等命令)使用SI,对DDL(CREATE TABLE等命令)使用2PL。 PostgreSQL有好几类锁,其中最主要的是表级锁与行级锁,此外还有页级锁,咨询锁等等。表级锁通常是各种命令执行时自动获取的,或者通过事务中的LOCK语句显式获取;而行级锁则是由SELECT FOR UPDATE|SHARE语句显式获取的。本文主要介绍PostgreSQL中的表锁。
近期做了套数据库监控系统,搞的还可以,简单给大家介绍一下。
管数据库和管人差不多,都需要定KPI(关键性能指标)。那么数据库的KPI是什么?本文介绍了一种衡量PostgreSQL负载的方式:使用一种单一横向可比,与负载类型和机器类型基本无关的指标,名曰PG Load(PG负载)。
这些年PostgreSQL社区的发展十分迅速,除了社区版本的PG数据库外,国内的各个数据库厂商也纷纷选择PG作为自己数据库产品的原型,这主要也是因为PG的许可授权模式是BSD授权,所授权的代码可以被任何厂家任意使用,包括改一下LOGO就闭源说是自己的产品也是被认可的。
1. 背景 PostgreSQL的HA方案一般都基于其原生的流复制技术,支持同步复制和异步复制模式。 同步复制模式虽然可以最大程度保证数据不丢失,但通常需要至少部署三台机器,确保有两台以上的备节点。 因此很多一主一备HA集群,都是使用异步复制。 在异步复制下,主库宕机,把备节点切换为新的主节点后,可能会丢失最近更新的少量数据。 如果这些丢失的数据对业务比较重要,那么,能不能从数据库里找回来呢? 下面就介绍找回这些数据的方法
最近,在排查PostgreSQL性能问题的时候,两次遇到子事务相关问题。所以,我想这个话题非常适合作为博客内容。
Postgresql由于强大的功能和良好的扩展性,基于postgresql来做的分布式架构也比较多,大部分用于分析类场景,下面比较几种常见的架构特点。
笔者前段时间在写一个个人自用的项目时候,遇到一个需求,要从一个6百多万数量的表中,使用like ‘%keyword%’这种语法来找到需要的结果,虽然默认情况下,也不是不能接受(SSD存储+并行查询让这个事情实际的执行效率比想象中高得多),但毕竟对资源的瞬间消耗很大,让家里的小NAS有点不堪重负,因此对PostgreSQL对like的处理上,进行了诸多调查,来让这个事情的处理,可以看起来更漂亮些。
人脸识别, 人脸支付, 刷脸打卡, 图像识别等 例如, 智能楼宇, 根据人脸识别到是本大楼的员工时, 自动进行打卡, 自动按工作楼层设定电梯. 智能酒店, 根据人脸识别, 自动入住, 根据会员等级自动对接专属服务等等. 电商, 图像识别, 搜索类似商品. 教育, 根据人脸特征, 记录学生的听课状态(打盹, 走神, 小动作, 举手等) 交通, 违规时自动识别驾驶员. 新零售, 根据人脸识别对应后台的会员系统, 做到: 到店提醒, 导购引导, 定制化运营等. 公共交通, 刷脸支付. 游戏, 虚拟现实相关游戏.
PostgreSQL新版本即将发布,因此是时候看看PostgreSQL11提供的最重要新功能之一:并行创建索引(注:原博客发表于2018年)。多年以来,各种商业数据库供应商已经提供该功能,因此很高兴PostgreSQL成为该精英俱乐部的一员,它提供了多核索引创建能力,这将极大的改善大型数据库部署的可用性。
在PostgresSQL9.6中引入了并行查询,从那之后这一功能不断地得到扩展。在PostgreSQL11和PostgreSQL12中,数据库引擎增加了更多的功能。然而,仍然有一些与并行查询相关的问题,这些问题经常出现在培训过程中,因此有必要澄清说明一下。