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

用腾讯云做网站黄埔五屏网站建设

用腾讯云做网站,黄埔五屏网站建设,aspcms网站图片不显示,企业网站建设原则有哪些VACUUM操作在PostgreSQL中的底层原理涉及几个关键概念#xff0c;包括MVCC#xff08;多版本并发控制#xff09;、事务ID包裹、以及垃圾回收机制。我们逐一解析这些概念#xff0c;以及它们是如何与VACUUM操作相互作用的。 关键概念 1. MVCC#xff08;多版本并发控制包括MVCC多版本并发控制、事务ID包裹、以及垃圾回收机制。我们逐一解析这些概念以及它们是如何与VACUUM操作相互作用的。 关键概念 1. MVCC多版本并发控制 PostgreSQL使用MVCC来支持高并发允许数据读取操作在不加锁的情况下进行从而不会被写入操作阻塞。在MVCC模型中每一次数据的更新或删除操作都会生成数据的一个新版本即新的行版本或称为行快照而不是直接在原始数据上进行修改。这意味着表中的数据在某一时刻可能存在多个版本。 2. 事务ID和事务ID包裹 在PostgreSQL中每个事务都会被分配一个唯一的事务IDXID用于标识数据行版本的创建和失效时间。因为事务ID是有限的一个32位的计数器约有40亿个可能的值所以存在所谓的事务ID包裹的风险。当事务ID达到上限后它会回绕到最小值可能导致数据版本的可见性判断出错。为了防止这种情况PostgreSQL引入了VACUUM操作来冻结旧的行版本的事务ID避免事务ID包裹问题。 3. 垃圾回收 由于MVCC机制当数据行被更新或删除时旧的数据版本不会立即被移除而是留在表中作为历史版本直到不再被任何事务所需要。这些不再需要的行版本称为垃圾。随着时间的推移这些垃圾会累积占用磁盘空间降低查询性能。 VACUUM操作的工作原理 在PostgreSQL中VACUUM操作的主要目的是清理这些不再需要的行版本回收被占用的空间并且更新表的统计信息以优化查询性能。当你删除或更新表中的数据时这些旧数据不会立即从磁盘上删除而是被标记为废弃数据等待后续的回收。VACUUM操作就是负责这一回收过程的。具体来说 回收空间 VACUUM遍历表中的所有行查找那些被标记为已删除的行版本。如果这些行版本不再被任何事务所需要即没有任何活跃的事务会看到这些行版本VACUUM就会将这些空间标记为可重用以供未来的INSERT操作使用。 防止事务ID包裹 VACUUM会冻结旧的行版本的事务ID即将它们标记为在任何情况下都可见从而防止事务ID包裹问题。 更新统计信息 VACUUM还会收集表和索引的统计信息帮助PostgreSQL的查询优化器制定更有效的查询计划。 具体操作 基本VACUUM VACUUM [表名]; 不指定表名将对整个数据库的所有表进行VACUUM操作。这个操作不需要锁定表因此不会对正常的数据库操作产生太大影响。 带参数的VACUUM VACUUM (VERBOSE, ANALYZE) [表名]; VERBOSE提供详细的VACUUM操作日志。 ANALYZE在VACUUM操作后收集表和索引的统计信息帮助优化查询。 VACUUM FULL VACUUM FULL [表名]; VACUUM FULL会重写表到一个新的磁盘文件以此彻底回收空间但它会对表加上排他锁影响表的并发访问。 与普通的VACUUM操作不同VACUUM FULL会对表进行重写删除表中所有未使用的空间并可能改变表中行的物理顺序。这种操作会对表加上排他锁影响并发性能但可以回收更多的空间。 总的来说VACUUM操作是PostgreSQL中维持数据库性能和防止事务ID包裹的关键工具。通过定期的VACUUM操作可以确保数据库的健康运行和高效性能。 自动VACUUM 什么时候会触发自动 VACUUM 1.基于阈值当表中的更新、删除操作导致的死元组即不再对任何事务可见的行版本数量达到一定阈值时自动 VACUUM 会被触发。这个阈值由几个配置参数决定主要是 autovacuum_vacuum_threshold 和 autovacuum_vacuum_scale_factor。例如如果一个表有 10000 行autovacuum_vacuum_threshold 设置为 50autovacuum_vacuum_scale_factor 设置为 0.2那么当表中至少有 50 10000 * 0.2 2050 个死元组时自动 VACUUM 会被触发。 2.基于事务ID的包裹防护为了防止事务ID包裹wraparound问题PostgreSQL 会自动执行 VACUUM 操作以冻结旧版本的行即将它们的事务ID标记为永久可见以避免事务ID耗尽。   自动 VACUUM 会执行哪些操作 1.垃圾回收自动 VACUUM 会清理表中不再需要的行版本即死元组释放被这些行版本占用的空间以供将来的插入操作使用。 2.防止事务ID包裹通过冻结旧的行版本自动 VACUUM 帮助避免事务ID包裹问题确保数据库能长期稳定运行。 3.更新统计信息自动 VACUUM 还会更新表和索引的统计信息这对于查询优化器planner/optimizer制定有效的查询计划非常重要。 4.索引维护自动 VACUUM 会清理和维护索引移除指向已删除行的索引项保持索引的效率和准确性。 配置自动 VACUUM PostgreSQL 提供了多个配置选项来控制自动 VACUUM 的行为包括但不限于 1.autovacuum启用或禁用自动 VACUUM 功能。 2.autovacuum_vacuum_scale_factor 和 autovacuum_vacuum_threshold这两个参数合作决定了触发自动 VACUUM 的死元组数量阈值。 3.autovacuum_vacuum_cost_delay 和 autovacuum_vacuum_cost_limit这些参数用于控制自动 VACUUM 对系统资源的使用以减少它对数据库其他活动的影响。 自动 VACUUM 旨在减少数据库管理员的维护工作确保数据库性能和稳定性但在某些高负载或特殊需求的场景下可能还需要手动调整 VACUUM 的配置或执行手动 VACUUM。 注意事项 性能影响 虽然普通的VACUUM操作对数据库操作的影响较小但VACUUM FULL操作可能会显著影响数据库性能因为它需要对表加锁。 自动VACUUM PostgreSQL有自动VACUUM的机制可以自动回收废弃空间和更新统计信息。但在某些情况下手动执行VACUUM可能更为必要例如在大量删除操作后手动执行VACUUM以快速回收空间。 安全性 在执行VACUUM FULL时必须确保有足够的磁盘空间因为它会临时需要额外空间来重写表文件。 综上所述VACUUM操作是PostgreSQL数据库管理中的一个重要环节合理的使用VACUUM能够帮助维护数据库的健康状态和优化性能。
http://www.w-s-a.com/news/592677/

相关文章:

  • 有赞商城网站建设企业管理咨询是做什么的
  • 提供衡水网站建设中国石化工程建设有限公司邮政编码
  • 大芬地铁站附近做网站工业设计公司报价
  • 建设网站最强永年网站建设
  • 网站分站代理加盟wordpress国内工作室主题
  • 东营远见网站建设公司服装网站建设内容
  • 互助平台网站建设费用百度seo优化怎么做
  • lol英雄介绍网站模板工商局网上注册
  • 电商网站运营策划什么样的网站容易做seo
  • 网站备案需要什么流程怎么创建小程序卖东西
  • 陇西网站建设 室内设计持啊传媒企业推广
  • 连云港做网站制作首选公司如何让单位网站做防护
  • wordpress企业网站源码开发网站用什么工具做设计
  • 网站负责人不是法人seo神马网站推广器
  • 网站建设绩效考核方案wordpress支付宝付款
  • 高要区住房和城乡建设局网站如何网上注销自己的公司
  • 哪种技术做网站容易论文答辩图片做记录片的是哪个网站
  • 怎样在微信中做网站网站的备案号在哪
  • 返利淘网站怎么做wordpress htnl短代码
  • 网站 手机 appwordpress管理账户
  • 徐州网站建设 网站制作做招商网站的前景怎么样
  • 网站开发就业岗位鹧鸪哨网站1v1深度开发
  • 在线手机动画网站模板网站登录注册怎么做
  • 苏州品牌网站设计晋江论坛兔区是什么
  • 怎么利用代码做网站重庆网络营销网站建设销售
  • 用dw怎么做网站留言板百度举报网站
  • 成都微网站设计企业为什么要做网络营销推广
  • 双桥区网站制作企业网站一般内容包括哪些
  • 莆田外贸专业建站做app 需要先做网站吗
  • 网站怎么用北京口碑最好的装修公司