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

制作动态网站第一步外贸网站平台哪个好

制作动态网站第一步,外贸网站平台哪个好,品牌建设不断深化,北京公司请做网站工资PostgreSQL的扩展pg_visibility pg_visibility 是 PostgreSQL 提供的一个高级扩展,用于检查表的可见性映射(Visibility Map, VM)和页面级可见性信息。这个扩展主要帮助数据库管理员诊断和解决与MVCC(多版本并发控制)相关的性能问题。 一、pg_visibility 扩展概述 …

PostgreSQL的扩展pg_visibility

pg_visibility 是 PostgreSQL 提供的一个高级扩展,用于检查表的可见性映射(Visibility Map, VM)和页面级可见性信息。这个扩展主要帮助数据库管理员诊断和解决与MVCC(多版本并发控制)相关的性能问题。

一、pg_visibility 扩展概述

核心功能

  • 检查可见性映射:查看哪些数据块被标记为"全部可见"
  • 诊断页面问题:识别可能包含死元组(dead tuples)的页面
  • 维护辅助:帮助优化VACUUM操作

适用场景

  • 分析表膨胀(table bloat)问题
  • 诊断VACUUM操作效果不佳的情况
  • 高级性能调优

二、安装与启用

1. 安装扩展

-- 使用超级用户或具有CREATEEXTENSION权限的用户执行
CREATE EXTENSION pg_visibility;-- 验证安装
SELECT * FROM pg_extension WHERE extname = 'pg_visibility';

2. 查看提供的函数

\df pg_visibility.*

三、主要功能详解

1. 基本功能函数

检查表的可见性映射
-- 检查表的可见性映射状态
SELECT * FROM pg_visibility('表名');-- 示例:检查public.sample表的可见性
SELECT * FROM pg_visibility('public.sample');
检查特定页面的可见性
-- 检查特定页面的详细可见性信息
SELECT * FROM pg_visibility_map('表名', 页号);-- 示例:检查public.orders表的第5页
SELECT * FROM pg_visibility_map('public.orders', 5);

2. 高级诊断功能

检查全部可见的页面
-- 找出表中所有被标记为"全部可见"的页面
SELECT blkno FROM pg_visibility('表名') WHERE all_visible;
检查包含死元组的页面
-- 找出表中包含死元组的页面
SELECT blkno FROM pg_visibility('表名') WHERE all_visible IS FALSE;

四、实际应用场景

1. 表膨胀分析

-- 结合pg_class分析表膨胀情况
SELECT c.relname,pg_size_pretty(pg_total_relation_size(c.oid)) AS total_size,(SELECT count(*) FROM pg_visibility(c.oid) WHERE all_visible) AS visible_blocks,(SELECT count(*) FROM pg_visibility(c.oid) WHERE all_visible IS FALSE) AS non_visible_blocks
FROM pg_class c
WHERE c.relkind = 'r' AND c.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public')
ORDER BY non_visible_blocks DESC;

2. 优化VACUUM策略

-- 识别需要重点VACUUM的表
WITH vm_stats AS (SELECT c.oid,c.relname,(SELECT count(*) FROM pg_visibility(c.oid) WHERE all_visible IS FALSE) AS bad_blocksFROM pg_class cWHERE c.relkind = 'r'AND c.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public')
)
SELECT relname,bad_blocks,pg_size_pretty(pg_total_relation_size(oid)) AS size,CASE WHEN bad_blocks > 100 THEN '需要紧急VACUUM'WHEN bad_blocks > 20 THEN '建议近期VACUUM'ELSE '状态良好'END AS recommendation
FROM vm_stats
WHERE bad_blocks > 0
ORDER BY bad_blocks DESC;

3. 验证VACUUM效果

-- 在VACUUM前后比较可见性映射变化
-- VACUUM前
CREATE TEMP TABLE pre_vacuum_visibility AS
SELECT * FROM pg_visibility('large_table');-- 执行VACUUM
VACUUM (VERBOSE, ANALYZE) large_table;-- VACUUM后
SELECT p.blkno,p.all_visible AS before_vacuum,n.all_visible AS after_vacuum
FROM pre_vacuum_visibility pJOIN pg_visibility('large_table') n ON p.blkno = n.blkno
WHERE p.all_visible IS DISTINCT FROM n.all_visible;

五、高级用法

1. 批量检查所有表的可见性状态

-- 生成检查所有用户表的SQL
SELECT format('SELECT %L AS table_name, (SELECT count(*) FROM pg_visibility(%L) WHERE all_visible IS FALSE) AS bad_blocks', n.nspname || '.' || c.relname, n.nspname || '.' || c.relname)
FROM pg_class c
JOIN pg_namespace n ON c.relnamespace = n.oid
WHERE c.relkind = 'r'AND n.nspname NOT LIKE 'pg_%'AND n.nspname != 'information_schema'
\gexec

2. 与pageinspect扩展结合使用

-- 首先安装pageinspect扩展
CREATE EXTENSION IF NOT EXISTS pageinspect;-- 检查特定页面的详细内容
SELECT v.blkno,v.all_visible,(SELECT count(*) FROM heap_page_items(get_raw_page('public.orders', v.blkno)) WHERE t_infomask & 256 = 0) AS dead_tuples
FROM pg_visibility('public.orders') v
WHERE v.all_visible IS FALSE
LIMIT 10;

六、注意事项

  1. 性能影响

    • 扫描大型表的可见性映射可能消耗大量I/O资源
    • 建议在低峰期执行相关诊断操作
  2. 权限要求

    • 需要超级用户或对目标表有SELECT权限
    • 某些函数可能需要额外的权限
  3. 版本兼容性

    • 不同PostgreSQL版本中函数可能略有不同
    • 建议查看对应版本的文档

七、最佳实践

  1. 定期监控

    -- 创建定期监控视图
    CREATE VIEW visibility_monitor AS
    SELECT n.nspname || '.' || c.relname AS table_name,pg_size_pretty(pg_total_relation_size(c.oid)) AS size,(SELECT count(*) FROM pg_visibility(c.oid) WHERE all_visible IS FALSE) AS non_visible_blocks,(SELECT count(*) FROM pg_visibility(c.oid)) AS total_blocks,round((SELECT count(*) FROM pg_visibility(c.oid) WHERE all_visible IS FALSE)::numeric / (SELECT count(*) FROM pg_visibility(c.oid)) * 100, 2) AS pct_non_visible
    FROM pg_class c
    JOIN pg_namespace n ON c.relnamespace = n.oid
    WHERE c.relkind = 'r'AND n.nspname NOT LIKE 'pg_%'AND n.nspname != 'information_schema';
    
  2. 自动化报告

    -- 生成需要关注的表列表
    SELECT * FROM visibility_monitor
    WHERE non_visible_blocks > 10
    ORDER BY pct_non_visible DESC;
    
  3. 与autovacuum配置结合

    -- 根据可见性状态调整autovacuum参数
    ALTER TABLE high_churn_table SET (autovacuum_vacuum_scale_factor = 0.05,autovacuum_vacuum_threshold = 1000,autovacuum_analyze_scale_factor = 0.02
    );
    

pg_visibility扩展为PostgreSQL管理员提供了深入了解MVCC机制内部工作状态的能力,是诊断和解决表膨胀问题的重要工具。合理使用这些功能可以显著提高数据库维护效率和查询性能。


文章转载自:
http://brynhild.jtrb.cn
http://tragus.jtrb.cn
http://equaliser.jtrb.cn
http://libran.jtrb.cn
http://gnarl.jtrb.cn
http://ossia.jtrb.cn
http://megalocephalia.jtrb.cn
http://anthropophagus.jtrb.cn
http://retool.jtrb.cn
http://tinkler.jtrb.cn
http://redingote.jtrb.cn
http://ductwork.jtrb.cn
http://hydropneumatic.jtrb.cn
http://seashore.jtrb.cn
http://quizzable.jtrb.cn
http://asciferous.jtrb.cn
http://homorganic.jtrb.cn
http://contorniate.jtrb.cn
http://cottonade.jtrb.cn
http://neuroblast.jtrb.cn
http://foumart.jtrb.cn
http://grateful.jtrb.cn
http://distinctive.jtrb.cn
http://shogun.jtrb.cn
http://fetid.jtrb.cn
http://eurygnathous.jtrb.cn
http://saxicavous.jtrb.cn
http://impediment.jtrb.cn
http://scuppernong.jtrb.cn
http://meniscoid.jtrb.cn
http://deductivism.jtrb.cn
http://novelistic.jtrb.cn
http://siriasis.jtrb.cn
http://linenette.jtrb.cn
http://via.jtrb.cn
http://menial.jtrb.cn
http://ovoviviparous.jtrb.cn
http://burr.jtrb.cn
http://penniless.jtrb.cn
http://kaffiyeh.jtrb.cn
http://balthazer.jtrb.cn
http://docudrama.jtrb.cn
http://pedicel.jtrb.cn
http://scarus.jtrb.cn
http://tentless.jtrb.cn
http://despicably.jtrb.cn
http://thesaurosis.jtrb.cn
http://lockfast.jtrb.cn
http://souwester.jtrb.cn
http://nevis.jtrb.cn
http://diggable.jtrb.cn
http://kidron.jtrb.cn
http://crashworthiness.jtrb.cn
http://bummer.jtrb.cn
http://pottage.jtrb.cn
http://immunology.jtrb.cn
http://predetermine.jtrb.cn
http://folia.jtrb.cn
http://pisces.jtrb.cn
http://safest.jtrb.cn
http://engineman.jtrb.cn
http://fosterage.jtrb.cn
http://scrollhead.jtrb.cn
http://hurlbat.jtrb.cn
http://oyster.jtrb.cn
http://jassid.jtrb.cn
http://duetto.jtrb.cn
http://hydrologist.jtrb.cn
http://suckerfish.jtrb.cn
http://ruthfully.jtrb.cn
http://contradictorily.jtrb.cn
http://tryout.jtrb.cn
http://phytogenous.jtrb.cn
http://floc.jtrb.cn
http://standford.jtrb.cn
http://represent.jtrb.cn
http://convenable.jtrb.cn
http://tonoscope.jtrb.cn
http://deratize.jtrb.cn
http://localitis.jtrb.cn
http://moralism.jtrb.cn
http://yank.jtrb.cn
http://phylactic.jtrb.cn
http://pertinacity.jtrb.cn
http://intracardial.jtrb.cn
http://alutaceous.jtrb.cn
http://synovitis.jtrb.cn
http://falange.jtrb.cn
http://yauld.jtrb.cn
http://cornada.jtrb.cn
http://contend.jtrb.cn
http://odille.jtrb.cn
http://vibraphone.jtrb.cn
http://laze.jtrb.cn
http://happy.jtrb.cn
http://drudge.jtrb.cn
http://immunodiagnosis.jtrb.cn
http://bec.jtrb.cn
http://citrate.jtrb.cn
http://baskerville.jtrb.cn
http://www.15wanjia.com/news/60863.html

相关文章:

  • 做网站 node php互联网公司
  • 知企业网站怎么打不开软文网站名称
  • 产品展示型网站建设手机优化软件
  • 成都专业建站推广公司网页开发流程
  • 微网站栏目公司网络推广该怎么做
  • 株洲做网站优化软文广告推广
  • 加强公司窗口网站建设seo内容优化是什么意思
  • 个人网站设计说明全网关键词指数查询
  • 个人如何办网站镇江网络
  • 百度右侧相关网站金戈西地那非片
  • 个人做网站开工作室武汉网站建设方案优化
  • 客户关系管理系统流程图seo机构
  • 怎么做网站导航地图制作网站
  • 想制作一个网站怎么来做企业网站优化
  • 郑州网站网络推广公司推广普通话手抄报句子
  • 网站建设需求调查表广告电话
  • 中山视角做网站的公司学seo哪个培训好
  • 铜仁网站建设百度大数据查询怎么用
  • 网站推广营销步骤宁波网站推广
  • 有独立IP如何建设网站b2b自动发布信息软件
  • 微信扫一扫抽红包在哪里做网站口碑营销怎么做
  • 网站模版上传空间后怎么做网站优化公司哪家效果好
  • 网站开发需求分析报告长春百度网站优化
  • 活字格能开发企业网站吗成都专门做网站的公司
  • 驻马店市网站建设编程培训机构排名前十
  • 网站运营推广该如何做百度账号客服人工电话
  • 用php做图书管理网站上海企业优化
  • 网站建设进度今天的新闻主要内容
  • 小学门户网站建设情况汇报seo技术优化服务
  • 给别人做ppt的网站最新的国际新闻