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

南京建设网站公司网站游戏怎么制作

南京建设网站公司,网站游戏怎么制作,nas可以做网站服务器吗,网站模板与网站定制版的区别VACUUM 剖析 为什么需要 Vacuum MVCC MVCC#xff1a;Multi-Version Concurrency Control#xff0c;即多版本并发控制。 PostgreSQL 使用多版本并发控制#xff08;MVCC#xff09;来支持高并发的事务处理#xff0c;同时保持数据的一致性和隔离性。MVCC 是一种用于管…VACUUM 剖析 为什么需要 Vacuum MVCC MVCCMulti-Version Concurrency Control即多版本并发控制。 PostgreSQL 使用多版本并发控制MVCC来支持高并发的事务处理同时保持数据的一致性和隔离性。MVCC 是一种用于管理数据库并发操作的技术它允许多个事务同时访问同一数据而不会产生冲突或阻塞。 MVCC 的工作原理 版本化 PostgreSQL 为表中的每行数据存储多个版本。当一个事务更新一行数据时它不会立即覆盖原始数据而是创建该数据的新版本。 事务ID 每个事务被分配一个唯一的事务IDXID该ID 用于跟踪数据的变更。 快照 当一个事务开始时它会创建一个快照该快照是数据库在某一时刻的状态。即使其他事务在该事务进行时对数据进行了更改该事务仍然可以看到它开始时的数据库状态。 可见性规则 MVCC 通过一组可见性规则来确定事务可以看到哪些数据版本。通常一个事务只能看到在它开始之前已经提交的其他事务所做的更改。 垃圾回收 PostgreSQL 使用 VACUUM​ 命令来清理不再需要的数据版本释放空间。VACUUM​ 操作由系统自动调度也可以手动执行。 MVCC 的关键特点 无锁读取 MVCC 允许其他事务在读取数据时不被锁定因为它们可以访问数据的旧版本。写入时复制 当数据被更新时PostgreSQL 会复制旧版本的数据并创建新版本而不是直接在原地修改。隔离级别 PostgreSQL 支持不同的事务隔离级别如读未提交Read Uncommitted、读已提交Read Committed、可重复读Repeatable Read和串行化Serializable。隔离级别决定了事务可以看到其他事务更改的时间点。性能 MVCC 可以提高数据库的性能因为它减少了锁的争用和事务间的阻塞。一致性 通过使用快照MVCC 确保了事务在整个过程中看到的是一致性的数据视图。 MVCC 的挑战 表膨胀 由于多版本的存在表可能会膨胀需要定期维护。长事务 长事务可能导致较旧的数据版本长时间不被回收从而影响性能和空间。系统资源 MVCC 需要额外的系统资源来管理多个数据版本。 MVCC 是 PostgreSQL 强大并发控制机制的核心它使得数据库能够高效地处理大量的并发事务同时保持数据的一致性和隔离性。 表膨胀 多版本并发控制机制MVCC的原理在于当它需要更改某块数据的时候它不会直接去更改而是会创建这份数据的新版本在新版本进行更改所以会存储多份版本每个事务能看见哪一份版本的数据由事务隔离级别控制。 MVCC引入了一个问题如何消除老旧的、没有使用的无用数据版本目前主流上有3种处理实现方式 来看看各种数据库的解决方式 以Oracle为代表的把旧版本数据放入UNDO新数据放入REDO然后更改数据。这种方式旧版本的数据放入了UNDO所以可以有效避免膨胀。 以SQL Server为代表的把旧版本的数据写入专门的临时表空间新数据写入日志然后去更改数据。这种方式旧版本的数据放入了专门的临时表空间所以也可以有效地避免膨胀。 以PostgreSQL为代表的把旧版本标示为无效新数据写入日志成功后把新版本的数据写入新的位置。这种实现机制是导致数据膨胀严重的一个重要原因因为旧版本的数据虽然表示为无效状态但是没被回收前还是占据存储空间。 Vacuum 工作原理 PostgreSQL的表膨胀清理就需要依赖vacuumvacuum的主要任务就是清理表和索引中不需要的数据dead tuples为新加入的数据清理出来空间。 Vacuum PostgreSQL中的VACUUM​命令是一种数据库维护任务用于清理数据库中的无用空间也称为“dead tuples”或“ghost tuples”并防止表膨胀。VACUUM​还更新数据库的统计信息这些信息由查询优化器用来选择最有效的查询计划。以下是VACUUM​如何工作的详细步骤 标记删除 PostgreSQL使用一种称为标记-清除mark-sweep的垃圾收集机制。当DELETE或UPDATE命令删除或修改表中的数据行时原始数据行不会被立即从存储中移除而是被标记为“已删除”。这意味着这些行仍然占用空间但对查询来说是不可见的。移除元组 这里的移除dead tuples只是标记为可重用该空间并没有真正物理删除。所以vacuum清理表后表的实际空间并没有减小。dead tuples在做移除标记后vacuum会重新排列剩余的元组以进行碎片化整理。然后需要更新目标表的VM可见性映射文件和FSM空闲空间映射文件。更新统计信息 ​VACUUM​收集有关表和索引中数据分布的统计信息并将这些信息存储在系统目录中。这些统计信息对于查询优化器来说是至关重要的因为它们帮助优化器决定如何执行查询。 ​VACUUM ​在这段时间删除的数据并不会从此磁盘上删除只是将数据标为可删除这部分可删除的空间会出现以下两种情况 当有新的数据进行新数据会写入至这部分可删除的空间中即老数据从磁盘上移除了系统执行 vacuum full​ PgSql 会重新整理所有的元组(Tuples)最终将数据从磁盘上移除这一步比较耗费资源和时间有可能锁表生产环境慎用 Vacuum Full Vacuum Full和Vacuum最大的不同就是Vacuum Full是物理删除dead tuples并把释放的空间重新交给操作系统所以在vacuum full后表的大小会减小为实际的空间大小。其处理过程和 vacuum 大不相同处理步骤如下 创建排它锁 vacuum full 开始执行时系统会先对目标创建一个AccessExclusiveLock 不允许外界再进行访问为后面拷贝做准备。 创建新表 系统会创建一张表结构和源表一模一样的新表方便后续做数据操作。 复制数据 扫描目标表把表中的live tuples 拷贝到新表中。 替换数据表 删除目标表在新表上重新创建索引更新VM FSM以及统计信息相关系统表等。 综上所述vacuum full的本质是生成一个新的数据文件然后把原有表的live tuples存放到该数据文件中。对比vacuum vacuum full缺点就是在执行期间不能对表进行访问由于需要往新表中导入live tuples数据其执行效率也会很慢。优点是执行后表空间只存放live tuples没有冗余的dead tuples在执行查询效率上会有所提高。 但是vacuum full 也有存在的问题在执行过程中它会block所有对表的访问不只是写操作读操作也会全部block。很多情况下这是不可接受的尤其是生产环境。 Vacuum 的好处 PostgreSQL中的VACUUM​命令具有多个好处主要包括 回收空间VACUUM​可以清理数据库中的无用空间即那些被标记为“已删除”的行占用的空间从而释放这些空间供其他数据使用。更新统计信息VACUUM​会更新数据库的统计信息这些信息对于查询优化器选择最有效的查询计划至关重要。维护索引VACUUM​还会维护索引删除索引中指向已删除数据行的条目并可能重建索引以优化性能。防止表膨胀随着时间推移表中的死元组会越来越多这会导致存储空间利用率下降VACUUM​可以防止这种情况。提高查询性能通过清理无用的元组VACUUM​可以减少查询需要遍历的数据量从而提高查询性能。自动回收空间VACUUM​可以自动回收已经释放的空闲空间减少了数据库管理员的手动干预。 ​VACUUM​是PostgreSQL数据库维护和性能优化的重要组成部分正确理解和运用VACUUM​命令及其变种对于保持数据库的良好运行状态具有重要意义。 Vacuum 的最佳实践 PostgreSQL中的VACUUM​操作是数据库维护的重要组成部分以下是一些最佳实践 定期执行VACUUM根据业务负载和表的更新频率制定合理的VACUUM策略特别是对于频繁更新的大表。启用并调优Autovacuum依赖Autovacuum来自动维护数据库健康。通过调整autovacuum_vacuum_threshold​和autovacuum_vacuum_scale_factor​等参数可以更精确地控制自动VACUUM的触发时机。考虑使用VACUUM FULL虽然VACUUM FULL​可以最大程度地释放磁盘空间但由于它可能会锁定表并需要较长时间执行建议在业务低峰期使用并确保有足够的磁盘空间来创建表的新副本。监控Vacuum活动利用pg_stat_user_tables​视图或其他监控工具了解Vacuum操作的状态和效果以便及时调整相关参数。不要无故运行手动VACUUM或ANALYZEAutovacuum通常可以很好地管理数据库除非有特殊情况否则不必频繁手动执行这些操作。在数据批量加载后运行ANALYZE在大量新数据被插入数据库后运行ANALYZE以确保统计信息的准确性从而帮助查询优化器制定更有效的查询计划。收集数据库信息在调整参数或实施手动VACUUM/ANALYZE之前收集有关数据库的足够信息如表的行数、死元组数、最后一次VACUUM/ANALYZE的时间等以便做出更明智的决策。 通过遵循这些最佳实践可以确保数据库的性能和健康状况得到良好的维护。 ‍ 参考文档 Kimi.ai - 帮你看更大的世界 PostgreSQL的表膨胀与Vacuum和Vacuum Full - 明矾 - 博客园 深入浅出 PostgreSQL VACUUM 流程全面掌控数据健康与性能 - ByteZoneX社区 blog/202405/20240530_01.md at master · digoal/blog · GitHub ‍
http://www.w-s-a.com/news/789615/

相关文章:

  • 成都建站程序苏州市建设局招标网站首页
  • 自助建网站市场公司起名大全2020最新版的
  • dede网站模板北京 网站开发 大兴
  • 网站优化师招聘建设牌安全带官方网站
  • 南京网站建设网站做视频网站用什么格式
  • 普陀做网站价格wordpress接入qq互联
  • 网站2级页面怎么做杭州哪家做外贸网站
  • 做了静态网站怎么显示在互联网上营销策划与运营方案
  • 常见的英文网站国内军事新闻大事件
  • 傻瓜式做网站程序微信怎么开公众号
  • c2c电商网站wordpress仿36kr主题
  • 网站建设公司开发免费图纸网站
  • 一个网站页面设计多少钱做预算查价格的网站是哪个
  • 鳌江哪里有做网站百度短链接在线生成
  • 有没有什么做水利资料的网站杭州建设信用平台
  • 电子商务网站建设及推广方案论文wordpress无法显示文章
  • 建设工程监理网站前端和后端分别需要学什么
  • 公司网站制作效果国内最好的在线网站建设
  • 徐州好点的做网站的公司有哪些wordpress 工具插件下载
  • 如何用云服务器建设网站微网站免费开发平台
  • 官网的网站设计公司做网站需要准备哪些东西
  • 程序员和做网站那个好找工作wordpress二维码 插件
  • 湖南城市建设技术学院官方网站青海省建设局网站
  • 响应式网站有什么区别百度网站官网
  • 金华企业自助建站系统长沙建站公司模板
  • 云主机 做网站友情链接网站
  • 定制型网站设计天津网站模板建站
  • 为什么公司网站打开很慢wordpress汉化插件
  • 用dw做教学网站做网站用什么配置笔记本
  • 秦皇岛网站制作服务无网站无产品链接如何做SOHO