美文网首页
postgresql实战—分区表

postgresql实战—分区表

作者: 熊猫学猿 | 来源:发表于2022-08-08 16:09 被阅读0次

排它锁(Exclusive locks,X锁):被加锁的对象只能被持有锁的事务读取和修改,其他事务无法在该对象上加其他锁,也不能读取和修改该对象

共享锁(Share locks,S锁):被加锁的对象可以被持锁事务读取,但是不能被修改,其他事务也可以在上面再加共享锁

封锁对象的大小称为封锁粒度

基于锁的并发控制机制要么延迟这一项操作,要么中止发出该操作的事务来保证可串行性。如果每一数据项的旧值副本保存在系统中,问题就可以避免。这种基于多个旧值版本的并发控制即MVCC

基于锁的并发控制机制为悲观机制:一种预防性的机制,读会阻塞写,写也会阻塞读

而把MVCC机制称为乐观机制:后验性的机制,读不阻塞写,写也不阻塞读,等到提交的时候才校验是否有冲突,由于没有锁,所以读写不会相互阻塞

在MVCC中,每一个写操作创建一个新的版本,当事务发出一个读操作时,并发控制管理器选择一个版本进行读取

在psql中数据采用堆表保存,并且MVCC的旧版本和新版本存储在同一个地方,如果更新大量数据,将会导致数据表的膨胀

使用vacuum命令或者autovacuum进程将旧版本的磁盘空间标记为可用,VACUUM没有办法把已经利用的磁盘空间释放给操作系统,VACUUM FULL命令可以回收可用的磁盘空间,但它会阻塞所有其他的操作

pg_repack是一个可以在线重建表和索引的扩展。它会在数据库中建立一个和需要清理的目标表一样的临时表,将目标表中的数据COPY到临时表,并在临时表上建立与目标表一样的索引,然后通过重命名的方式用临时表替换目标表

分区表根据非分区键查询相比普通表性能差距较大,因为这种场景分区表的执行计划会扫描所有分区

分区表根据分区键查询相比普通表性能有小幅降低,而查询分区子表性能比普通表略有提升

constraint_exclusion参数来控制优化器是否根据表上的约束来优化查询

on:所以表都通过约束优化查询

off:所以表都不通过约束优化查询

partition:只对继承表和UNION ALL子查询通过检索约束来优化查询

当往父表上查人数据时,数据会自动根据分区键路由规则插入到分区中,目前仅支持范围分区和列表分区

分区表上的索引、约束需使用单独的命令创建,目前没有办法一次性自动在所有分区上创建索引、约束

不支持定义(全局)主键,在分区表的分区上创建主键是可以的

如果UPDATE语句的新纪录不能违反当前分区键,UPDATE语句的新纪录目前不支持跨分区的情况

相关文章

  • postgresql实战—分区表

    排它锁(Exclusive locks,X锁):被加锁的对象只能被持有锁的事务读取和修改,其他事务无法在该对象上加...

  • pg inherit

    借助表的继承特性PostgreSQL实现了分区表功能,虽然相比Oracle、MySQL的分区表来说其实现过程比较麻...

  • PostgreSQL 内置分区

    内置分区表 在 PostgreSQL10 以前,都是通过表的继承和触发器来完成分区功能,在 PostgreSQL1...

  • postgresql分区表

    原文链接:https://www.bestqliang.com/#/article/13 创建自动分区采用两种方式...

  • postgresql10以上的自动分区分表功能

    postgresql10以上的自动分区分表功能 一.列分表 1.首先创建主分区表: 这里设置的是根据year列进行...

  • PostgreSQL 10 主从(物理-流复制)

    关于更详细的内容,可以从由谭峰、张文升出版的postgresql实战一书里面的第12章查看。 PostgreSQL...

  • postgresql简单实战

    一:创建表 语法: 例子: 二:group bygroup by子句通过多个记录收集数据,并将结果分组到一个或多个...

  • MBR分区与GPT分区

    Linux系统中有两种常见的分区表 MBR分区表(主引导记录分区表)和 GPT分区表(GUID分区表) MBR分区...

  • postgreSQL分区表在rails的应用

    postgerSQL 是通过表继承来实现分区表的。表分区就是把逻辑上的一个大表分割成物理上的几个小块,分区可以提供...

  • Vertica的这些事(九)—— vertica存储统计信息

    vertica存储统计信息: 表数量: 分区表数量: 总表占大小: 分区表总大小: 分区表大小(前10): 分区表...

网友评论

      本文标题:postgresql实战—分区表

      本文链接:https://www.haomeiwen.com/subject/bnnuwrtx.html