当前位置: 首页 > news >正文

学习制作网页的网站深圳市住房建设部官方网站

学习制作网页的网站,深圳市住房建设部官方网站,cmsinitiatingoccupancyfraction,网站营销 海外专栏内容#xff1a;postgresql内核源码分析个人主页#xff1a;我的主页座右铭#xff1a;天行健#xff0c;君子以自强不息#xff1b;地势坤#xff0c;君子以厚德载物#xff0e; 目录 前言 表数据膨胀的由来 什么时候产生膨胀 首先是update 还有delete 如何消…  专栏内容postgresql内核源码分析个人主页我的主页座右铭天行健君子以自强不息地势坤君子以厚德载物 目录 前言 表数据膨胀的由来 什么时候产生膨胀 首先是update 还有delete 如何消除膨胀 结尾 前言 本文是基于postgresql 15的代码进行分析解读演示是在centos8系统上进行。 在我们使用postgresql数据库时总会产生一些数据膨胀导致查询变慢索引失效为什么会有数据膨胀呢产生后我们怎么做才能让数据库恢复正常呢 表数据膨胀的由来 话说数据库的四大特性ACIDpostgresql采用了一种MVCC(Multi Version Concurrency Control)机制来保证事务的原子性和隔离性。 那什么是MVCC呢简单说就是利用事务号递增性来标识tuple的新旧版本达到不同事务内看到的tuple隔离下面我们用一个例子来看一下 查看一张表的当前数据 postgres# select ctid,xmin,xmax,id from t1;  ctid  | xmin | xmax | id -----------------------  (0,1) | 1699 |    0 |  1  (0,2) | 1700 |    0 |  2 (2 rows) 我们在一个事务中执行更新并回滚 postgres*begin; BEGIN postgres*# select txid_current();  txid_current --------------          1702 (1 row) postgres*update t1 SET namea where id1; UPDATE 1 postgres*rollback; ROLLBACK 我们在插入数据 insert into t1(id) values(3); insert into t1(id) values(4);   postgres# select ctid,xmin,xmax,id from t1;  ctid  | xmin | xmax | id -----------------------  (0,1) | 1699 | 1702 |  1  (0,2) | 1700 |    0 |  2  (0,4) | 1703 |    0 |  3  (0,5) | 1704 |    0 |  4 (4 rows) 发现ctid为03的位置被跳过了因为有一个id1的tuple版本占了只是它可见性判断时被判定为不可见所以我们看不到它但确实是占用了一个位置。 什么时候产生膨胀 那些常见情况下为产生多版本数据呢 首先是update 我们来看一下update的演示 我们update一条数据后它的位置变到了最后说明又一条旧版本详细表的update代码解析详见我的专栏 postgres# update t1 SET namea where id1; UPDATE 1 postgres# select ctid,xmin,xmax,id from t1;  ctid  | xmin | xmax | id -----------------------  (0,2) | 1700 |    0 |  2  (0,4) | 1703 |    0 |  3  (0,5) | 1704 |    0 |  4  (0,6) | 1705 |    0 |  1 (4 rows) 还有delete 这里不会产生多版本但是delete后tuple并不会从表里真正删掉而是打了一个标记这样做的目的其它和多版本是一致的因为可能还有其它事务在引用。 下面我们看一下例子 postgres# delete from t1 where id 1; DELETE 1 postgres# select ctid,xmin,xmax,id from t1;  ctid  | xmin | xmax | id -----------------------  (0,2) | 1700 |    0 |  2  (0,4) | 1703 |    0 |  3  (0,5) | 1704 |    0 |  4 (3 rows) postgres# insert into t1(id) values(5); INSERT 0 1 postgres# select ctid,xmin,xmax,id from t1;  ctid  | xmin | xmax | id -----------------------  (0,2) | 1700 |    0 |  2  (0,4) | 1703 |    0 |  3  (0,5) | 1704 |    0 |  4  (0,7) | 1707 |    0 |  5 (4 rows) 我们delete后又insert发现空闲06没有被利用而是从07开始 如何消除膨胀 postgresql在运行过程中采用了两种方式 一是页面裁剪; 二是autovacuum; 那它们是如何做的呢请看本专栏内容。 结尾 作者邮箱studysenllang.onaliyun.com 如有错误或者疏漏欢迎指出互相学习。 注未经同意不得转载
http://www.hkea.cn/news/14445647/

相关文章:

  • 网站制作没有原创图片怎么办如何做网站同步
  • 上海英文网站建设公司怎么改变wordpress首页
  • 能查个人信息的网站创一家网站
  • 南庄网站开发怎么找专业的营销团队
  • 知识付费网站搭建南通城乡住房建设厅网站首页
  • 合作建站协议青岛建设网站的公司
  • 网站导航栏特效海城网站制作
  • 网上销售网站建设策划做网站来联盟怎么样
  • 免费word文档模板下载网站柳州网站制作工作室
  • wordpress建影视网站做网站卖什么发财
  • 网站内页模板四年级下册数学优化设计答案
  • 企业网站建设组织人员可行性分析网页制作公司背景介绍
  • 佛山那里有做苗木销售网站哪个网站可以做前端项目
  • 萧山城区建设有限公司网站如何做强一个网站的品牌
  • 网站设计规划信息技术教案云南网站制作需求
  • 电商网站设计思想中国建设协会网站首页
  • 庆安建设局网站公司网站开发部署
  • 可以做推广东西的网站青建设厅官方网站
  • 网站建设监理制作网页最简单的软件
  • 求职上海关键词优化方法
  • 网页设计免费网站推荐郑州微网站建设
  • 黄石公司网站建设广州网站开发技术
  • 吉林省网站建设公司wordpress边栏显示头像
  • 创建网站的目的是什么意思wordpress底部导航代码
  • 建设部网站规范下载网页设计图片旋转
  • 驻马店做网站优化沈阳php网站
  • 专业外包网站建设公司排名建设茶网站发布与推广方案
  • 企业网站优化服务主要围绕什么如何开发小程序微信
  • 被黑网站查询影视网站建设源码
  • 做英文网站2014自己做的网站如何上传网上