PostgreSql HOT 技术

news/2024/7/9 20:40:09 标签: postgresql, 数据库

摘自唐成的《PostgreSQL修炼之道:从小工到专家(第2版)》。

一、概述

  因为多版本的原因,当 PostgreSQL 中更新一行时,实际上原数据行并不会被删除,只是插入了一个新行。如果表上有索引,而更新的字段不是索引的键值时,由于新行的物理位置发生了变化,仍然需要更新索引,这将导致性能下降,为了解决这一问题,PostgreSQL 自 8.3 版本之后引入了一个名为“Heap-Only Tuple”的新技术,简称 HOT。

二、原理

  使用 HOT 技术之后,如果更新后的行与原数据行在同一个数据块内时,原数据行会有一个指针,指向新行,这样就不必更新索引了,当从索引访问到数据行时,会根据这个指针找到新行。
  HOT 的详细说明见下图,图中表上有一个索引,其中“索引项 n”指向某个数据块的第3行。

在这里插入图片描述

  更新第3行后使用HOT技术,索引项仍然指向原数据行(第3行),而第3行原数据行中有一个指针指向新数据行(第6行),见下图:

在这里插入图片描述

三、使用示例

  原先的数据块中无法放下新行就不能使用 HOT 技术了,即 HOT 技术中的行之间的指针只能在同一个数据块内,不能跨数据块。所以为了使用 HOT 技术,应该在数据块中留出较大的空闲空间,其方法是可以把表的填充因子“fillfactor”设置为一个较小值。该参数的含义是插入数据时,表中的空间占用率到达多少后就不再插入数据了,默认值为“100”,表示不预留空间,但对于删除、插入、更新等操作较多的表来说,需要设置一个较低的值,如50%。该参数可以在建表时设置,命令如下:

CREATE TABLE mytest01(id int primary key, col2 text, col3 text, col4 text) WITH (fillfactor=50);

也可以使用ALTER TABLE命令来修改该参数配置:

ALTER TABLE mytest01 SET (fillfactor=50);

http://www.niftyadmin.cn/n/5239176.html

相关文章

语音识别从入门到精通——1-基本原理解释

文章目录 语音识别算法1. 语音识别简介1.1 **语音识别**1.1.1 自动语音识别1.1.2 应用 1.2 语音识别流程1.2.1 预处理1.2.2 语音检测和断句1.2.3 音频场景分析1.2.4 识别引擎(**语音识别的模型**)1. 传统语音识别模型2. 端到端的语音识别模型基于Transformer的ASR模型基于CNN的…

2024北京酵素展,4月,中国(北京)国际酵素产业展览会

促进酵素产业融合发展 推动健康中国2030建设 2024第11届中国(北京)国际酵素产业展览会 The 2024 eleventh China (Beijing) International enzyme industry Expo 2024年04月10日—12日 北京亦创国际会展中心 承办单位:北京联诚国际展览有限…

软件工程 单选多选补充 复刻

原文 软件的主要特性:无形、高成本、包括程序和文档 软件工程三要素:方法、工具、过程 螺旋模型包含风险分析 软件工程的主要目标:风险分析 面向对象开发:Booch、UML、Coad、OMT 软件危机的主要表现:软件成本太高…

Vue --第四天

1.自定义指令 a.自定义指令: 自己定义的指令,可以封装一些dom 操作,扩展额外功能 全局注册: 局部注册: 指令值:自定义指令 v-loading: 本质: 插槽: 1.定制插槽 2.插槽作用 组件封…

技术深度解析:构建高效、安全的知识付费小程序教学

构建高效且安全的知识付费小程序是一个技术挑战,本文将深入解析如何在教学领域中实现这一目标。 ​ 一、小程序架构选择 微信小程序、支付宝小程序等平台提供了不同的开发框架,开发者可以根据需求选择。微信小程序框架的组件化开发方式使得代码结构清晰…

QT QStringList类常见用法

0. 实例化方式 QStringList fonts { "Arial", "Helvetica", "Times" }; 1. 三种遍历方式 QStringList fonts { "Arial", "Helvetica", "Times" };// 类STL迭代器for(auto f: fonts){qDebug() << f;}// …

数据产品经理常用的ChatGPT通用提示词模板

介绍&#xff1a; ChatGPT 是一种自然语言处理技术&#xff0c;可以自动回答用户的问题和提供相关信息。在数据产品经理的日常工作中&#xff0c;ChatGPT 可以作为一种智能助手&#xff0c;帮助快速获取所需的信息和知识。 输入提示词&#xff1a; 提示词1&#xff1a;请介绍数…

GORM gorm.DB 对象剖析

文章目录 1.GORM 简介2.gorm.DB 简介2.1 定义2.2 初始化2.3 查询方法2.4 事务支持2.5 模型关联2.6 钩子&#xff08;Hooks&#xff09;2.7 自定义数据类型 3.为什么不同请求可以共用一个 gorm.DB 对象&#xff1f;4.链式调用与方法5.小结参考文献 1.GORM 简介 GORM 是一个流行…