PostgreSQL 14 pageinspect 新增 gist 索引支持
pageinspect插件可以用来查看表和索引的内部结构,但并不是所有的索引类型都支持,PG14中增加了三个函数用来支持对gist索引的支持。
function gist_page_items(bytea,regclass)
function gist_page_items_bytea(bytea)
function gist_page_opaque_info(bytea)
例子:
创建测试表和索引:
bill@bill=>CREATE TABLE test_gist AS SELECT point(i,i) p, i::text t FROM bill-# generate_series(1,1000) i; SELECT 1000 bill@bill=> CREATE INDEX test_gist_idx ON test_gist USING gist (p); CREATE INDEX
使用pageinspect观察gist索引结构:
bill@bill=> SELECT * FROM gist_page_opaque_info(get_raw_page('test_gist_idx', 0)); lsn | nsn | rightlink | flags -----+-----+------------+------- 0/1 | 0/0 | 4294967295 | {} (1 row) bill@bill=> SELECT * FROM gist_page_opaque_info(get_raw_page('test_gist_idx', 1)); lsn | nsn | rightlink | flags -----+-----+------------+-------- 0/1 | 0/0 | 4294967295 | {leaf} (1 row) bill@bill=> SELECT * FROM gist_page_opaque_info(get_raw_page('test_gist_idx', 2)); lsn | nsn | rightlink | flags -----+-----+-----------+-------- 0/1 | 0/0 | 1 | {leaf} (1 row) bill@bill=> SELECT * FROM gist_page_items(get_raw_page('test_gist_idx', 0), 'test_gist_idx'); itemoffset | ctid | itemlen | dead | keys ------------+-----------+---------+------+------------------- 1 | (1,65535) | 40 | f | (p)=((166,166)) 2 | (2,65535) | 40 | f | (p)=((332,332)) 3 | (3,65535) | 40 | f | (p)=((498,498)) 4 | (4,65535) | 40 | f | (p)=((664,664)) 5 | (5,65535) | 40 | f | (p)=((830,830)) 6 | (6,65535) | 40 | f | (p)=((996,996)) 7 | (7,65535) | 40 | f | (p)=((1000,1000)) (7 rows) bill@bill=> SELECT * FROM gist_page_items(get_raw_page('test_gist_idx', 1), 'test_gist_idx') LIMIT 5; itemoffset | ctid | itemlen | dead | keys ------------+-------+---------+------+------------- 1 | (0,1) | 40 | f | (p)=((1,1)) 2 | (0,2) | 40 | f | (p)=((2,2)) 3 | (0,3) | 40 | f | (p)=((3,3)) 4 | (0,4) | 40 | f | (p)=((4,4)) 5 | (0,5) | 40 | f | (p)=((5,5)) (5 rows) bill@bill=> SELECT * FROM gist_page_items(get_raw_page('test_gist_idx', 2), 'test_gist_idx') LIMIT 5; itemoffset | ctid | itemlen | dead | keys ------------+--------+---------+------+----------------- 1 | (1,10) | 40 | f | (p)=((167,167)) 2 | (1,11) | 40 | f | (p)=((168,168)) 3 | (1,12) | 40 | f | (p)=((169,169)) 4 | (1,13) | 40 | f | (p)=((170,170)) 5 | (1,14) | 40 | f | (p)=((171,171)) (5 rows) bill@bill=> SELECT * FROM gist_page_items_bytea(get_raw_page('test_gist_idx', 0)); itemoffset | ctid | itemlen | dead | key_data ------------+-----------+---------+------+------------------------------------------------------------------------------------ 1 | (1,65535) | 40 | f | \x00000100ffff28000000000000c064400000000000c06440000000000000f03f000000000000f03f 2 | (2,65535) | 40 | f | \x00000200ffff28000000000000c074400000000000c074400000000000e064400000000000e06440 3 | (3,65535) | 40 | f | \x00000300ffff28000000000000207f400000000000207f400000000000d074400000000000d07440 4 | (4,65535) | 40 | f | \x00000400ffff28000000000000c084400000000000c084400000000000307f400000000000307f40 5 | (5,65535) | 40 | f | \x00000500ffff28000000000000f089400000000000f089400000000000c884400000000000c88440 6 | (6,65535) | 40 | f | \x00000600ffff28000000000000208f400000000000208f400000000000f889400000000000f88940 7 | (7,65535) | 40 | f | \x00000700ffff28000000000000408f400000000000408f400000000000288f400000000000288f40 (7 rows) bill@bill=> SELECT * FROM gist_page_items_bytea(get_raw_page('test_gist_idx', 1)) LIMIT 5; itemoffset | ctid | itemlen | dead | key_data ------------+-------+---------+------+------------------------------------------------------------------------------------ 1 | (0,1) | 40 | f | \x0000000001002800000000000000f03f000000000000f03f000000000000f03f000000000000f03f 2 | (0,2) | 40 | f | \x00000000020028000000000000000040000000000000004000000000000000400000000000000040 3 | (0,3) | 40 | f | \x00000000030028000000000000000840000000000000084000000000000008400000000000000840 4 | (0,4) | 40 | f | \x00000000040028000000000000001040000000000000104000000000000010400000000000001040 5 | (0,5) | 40 | f | \x00000000050028000000000000001440000000000000144000000000000014400000000000001440 (5 rows) bill@bill=> SELECT * FROM gist_page_items_bytea(get_raw_page('test_gist_idx', 2)) LIMIT 5; itemoffset | ctid | itemlen | dead | key_data ------------+--------+---------+------+------------------------------------------------------------------------------------ 1 | (1,10) | 40 | f | \x000001000a0028000000000000e064400000000000e064400000000000e064400000000000e06440 2 | (1,11) | 40 | f | \x000001000b0028000000000000006540000000000000654000000000000065400000000000006540 3 | (1,12) | 40 | f | \x000001000c0028000000000000206540000000000020654000000000002065400000000000206540 4 | (1,13) | 40 | f | \x000001000d0028000000000000406540000000000040654000000000004065400000000000406540 5 | (1,14) | 40 | f | \x000001000e0028000000000000606540000000000060654000000000006065400000000000606540 (5 rows)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
OPSLI 1.4.0 发布,低代码快速开发平台
低代码快速开发平台 OPSLI 1.4.0 已经发布,此版本更新内容包括: 一、重构 重构代码生成器 重构非对称加密工具类,抽象为非对称插件 重构邮件服务 二、新增 新增代码生成器模版 新增对称加密插件 新增docker和docker-compose部署 新增用户密码强度检测 新增代码生成器反响生成菜单功能 新增SMTP邮件服务在线配置化 新增参数配置模块 新增登录Token续命模式 新增菜单是否总是显示选项 新增树状结构工具类 新增租户启用接口,一键启用租户 新增云存储OSS服务(目前支持又拍云... 持续增加中) 三、优化 前端:响应式UI兼容 手机、Pad、PC端 前端:调整主题颜色 前端:Dialog 弹出高斯模糊蒙层 前端:优化 RSA加解密(支持长字符) 前端:优化个人中心相关显示,更改个人中心不受菜单控制 后端:优化Redis反序列化容错性 后端:优化登录鉴权验证 后端:优化 伪穿透过滤器,防止一次直接锁死,给予3次 穿透nil机会 后端:优化行锁错误提示 后端:规范化菜单路径 后端:工具类增加初始化异常,防止在未初始化前使用 后端:优化文件上传功能,为后续OSS服务做足...
- 下一篇
Eolinker 加入 TARS 基金会|推动微服务开源技术
TARS基金会是Linux基金会下的非营利性、微服务基金会,旨在建设一个强大而灵活的微服务生态系统,今天很高兴地宣布Eolinker作为普通会员加入TARS基金。Eolinker是业内领先的API全生命周期管理解决方案的领军者,帮助企业快速构建 API 研发、测试、监控、安全、开放能力。 Eolinker是国内最大的在线API管理服务供应商,旨在满足各行业客户在不同应用环境中对API管理全生命周期的个性化需求,提供API开发管理、开发团队协作、自动化测试、网关以及监控等服务,帮助企业实现开发运维一体化,提升开发速度并且降低运维成本。 Eolinker致力于开发和推进开源微服务生态系统。作为TARS的成员,他们支持开源技术,并在一个供应商中立的环境中与全球社区合作,推动开源微服务平台的发展。这是在加强API的影响和帮助全球开发者方面迈出的一大步。 TARS基金会的董事会主席单致豪说:“我们很高兴Eolinker加入TARS基金会,期待今后共同塑造API工作流的未来,并促进API与微服务之间的协作。” “Eolinker作为一家专业的API全生命周期服务商,一直坚信微服务与API的协同将能...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用