透过pageinspect了解PostgreSQl中的page

  • 时间:
  • 浏览:0
  • 来源:uu快3APP_uu快3官方网址

    lsn    | checksum | flags | lower | upper | special | pagesize | version | p

 *

进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

   1 |       2048 |     24 |        |     

 Oid            datum_typeid;  

        TransactionId t_xvac;  

                                         * tuple? */

#define HEAP_XMAX_INVALID       0x04000  /* t_xmax invalid/aborted */

[postgres@localhost bin]$ ./psql

 * Release 8.0 uses 2; it changed the HeapTupleHeader layout again.

} ItemIdData;

#define HEAP_HOT_UPDATED        0x4000  /* tuple was HOT-updated */

psql (9.4.5)

pageinspect分析btree索引价值形式

        在此完后 都要了解的名词:

        page,物理文件的单位,默认大小为8K。

        tuple,PG中物理行。

        xid,事务号,执行操作时的顺序id。

PostgreSQL 垃圾版本引入的索引扫描性能下降诊断

typedef struct DatumTupleFields

/*

PostgreSQL 数据库多列复合索引的字段顺序选取原理

                lp_flags:2,    

typedef struct PageHeaderData

#define HEAP_ONLY_TUPLE         0x40000  /* this is heap-only tuple */

 0/400F4D8 |        0 |     0 |    32 |  8128 |    8192 |     8192 |       4 | 

下拉加载更多

} DatumTupleFields;

                lp_len:15;     

        下面通过例子来对page的PageHeaderDataItemIddata和HeapTupleHeaderData进行说明

        a.建表mvcc

} PageHeaderData;

postgres=# select * from page_header(get_raw_page('mvcc', 'main', 0));

#define HEAP_LOCK_MASK  (HEAP_XMAX_SHR_LOCK | HEAP_XMAX_EXCL_LOCK | \

 *      as well as adding the pd_prune_xid field (which enlarges the header).

} BlockIdData;

#define HEAP_XMAX_KEYSHR_LOCK   0x0010  /* xmax is a key-shared locker */

理解原理的重要性 - 论PostgreSQL merge join 成本评估陷阱 含case

#define HEAP_XMAX_COMMITTED     0x0400  /* t_xmax committed */

震精 - PostgreSQL 10.0 preview 性能增强 - WARM提升一倍性能

typedef struct BlockIdData

#define LP_REDIRECT     2       /* HOT redirect (should have lp_len=0) */

 * Releases 7.3 and 7.4 use 1, denoting a new HeapTupleHeader layout.

#define HEAP_HASVARWIDTH        0x0002  /* has variable-width attribute(s) */

rune_xid

    uint16      pd_pagesize_version;

    ItemIdData  pd_linp[1];    

   1 |       2048 |     24 |        |     

 * Release 8.1 uses 3; it redefined HeapTupleHeader infomask bits.

#define HEAP_HASNULL            0x0001  /* has null attribute(s) */

{

    BlockIdData ip_blkid;

#define PD_HAS_FREE_LINES   0x0001      /* are there any unused line pointers? */

#define HEAP_XMAX_EXCL_LOCK     0x0040  /* xmax is exclusive locker */

    LocationIndex pd_lower;    

PostgreSQL 存储智慧人生 - 空间聚集存储

    TransactionId t_xmin;      

深入浅出PostgreSQL B-Tree索引价值形式

#define HEAP_HASOID             0x0008  /* has an object-id field */

pageinspect介绍

#define HEAP_XMAX_LOCK_ONLY     0x00400  /* xmax, if valid, is only a locker */

Type "help" for help.

         b.PageHeaderData

PostgreSQL 11 preview - 并行排序、并行索引 (性能线性暴增) 单实例400亿TOP-K仅40秒

{

    LocationIndex pd_special;  

    unsigned    lp_off:15,     

如保从PostgreSQL源码分析那此操作都要超级用户权限 - 阿里云rds superuser提供了那此权限

ask2 | t_infomask | t_hoff | t_bits | t_oid

                                         * modified, or tuple deleted */

#define HEAP_XMIN_FROZEN        (HEAP_XMIN_COMMITTED|HEAP_XMIN_INVALID)

#define HEAP_UPDATED            0x4000  /* this is UPDATEd version of row */

#define HEAP_COMBOCID           0x0020  /* t_cid is a combo cid */

    TransactionId pd_prune_xid;

CREATE TABLE

                         HEAP_XMAX_KEYSHR_LOCK)

{

  1 |   81400 |        1 |     28 |   1831 |      0 |        0 | (0,1)  |       

#define HEAP2_XACT_MASK         0xE000  /* visibility-related bits */

#define LP_DEAD         3       /* dead, may or may not have storage */

    uint16      bi_hi;

typedef struct ItemPointerData

postgres=# select lp,lp_off,lp_flags,lp_len from heap_page_items(get_raw_page('mvcc', 'main', 0));

 * handling pages.

pageinsepect分析brin索引

    bits8       t_bits[1];     

#define PD_ALL_VISIBLE      0x0004      /* all tuples on page are visible to

typedef struct ItemIdData

  1 |   81400 |        1 |     28

 lp | lp_off | lp_flags | lp_len

        lp_off:tuple在page中的位置。         lp_flags:tuple的flags,具体为 

 */

#define HEAP_XMIN_COMMITTED     0x0400  /* t_xmin committed */

{

 int32      datum_typmod;  

 *      added the pd_flags field (by stealing some bits from pd_tli),

版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,本来承担相关法律责任。不可能 您发现本社区蕴含涉嫌抄袭的内容,欢迎发送邮件至:

typedef struct HeapTupleFields

PostgreSQL 老湿机图解平安科技遇到的垃圾回收"坑"

struct HeapTupleHeaderData

    {

 * Release 8.3 uses 4; it changed the HeapTupleHeader layout again, and

    union

    OffsetNumber ip_posid;

 lp | lp_off | lp_flags | lp_len | t_xmin | t_xmax | t_field3 | t_ctid | t_infom

#define HEAP_KEYS_UPDATED       0x4000  /* tuple was updated and key cols

    uint16      t_infomask;    

#define HEAP_NATTS_MASK         0x07FF  /* 11 bits for number of attributes */

PostgreSQL 末尾块收缩(如pg_type pg_attribute)异常和patch

 * As of Release 9.3, the checksum version must also be considered when

    LocationIndex pd_upper;    

#define LP_NORMAL       1       /* used (should always have lp_len>0) */

        t_infomask2:表字段的个数以及一点flags,flags如下: 

postgres=# insert into mvcc values (1),(2);

PostgreSQL pageinspect 诊断与优化GIN (倒排) 索引合并延迟原因的查询性能下降问题报告

        t_cid:你这人是指一一好几个 事务内的命令ID,每个事务都有从0刚开始英语 英语 。         t_ctid:你这人是指物理ID,价值形式如下: 

}

        DatumTupleFields t_datum;

    uint16      bi_lo;

postgres=# create table mvcc(id int);

#define HEAP_XMIN_INVALID       0x0400  /* t_xmin invalid/aborted */

};

PostgreSQL 当有多个索引可选时,优化器如保选取

                                         * everyone */

PostgreSQL GIN multi-key search 优化

    uint16      pd_flags;      

 * Page layout version number 0 is for pre-7.3 Postgres releases.

    }           t_field3;

#define HEAP_HASEXTERNAL        0x0004  /* has external stored attribute(s) */

    ItemPointerData t_ctid;    

    PageXLogRecPtr pd_lsn;     

        pg_linp:项指针。

        c.ItemIddata

    uint16      t_infomask2;   

    TransactionId t_xmax;      

postgres=# select * from heap_page_items(get_raw_page('mvcc', 'main', 0));

    uint8       t_hoff;        

(2 rows)

(2 rows)

        HeapTupleFields t_heap;

#define PD_VALID_FLAG_BITS  0x0007      /* OR of all valid pd_flags bits */

#define LP_UNUSED       0       /* unused (should always have lp_len=0) */

{

{

INSERT 0 2

    uint16      pd_checksum;   

  2 |   8128 |        1 |     28

#define HEAP_XMAX_IS_MULTI      0x4000  /* t_xmax is a MultiXactId */

#define HEAP_XMAX_SHR_LOCK  (HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_KEYSHR_LOCK)

如保从零学习PostgreSQL Page价值形式

(1 row)

  2 |   8128 |        1 |     28 |   1831 |      0 |        0 | (0,2)  |       

 int32      datum_len_;    

    {

        d.HeapTupleHeaderData

PostgreSQL 违反唯一约束的插入操作会产品HEAP垃圾吗?

{

#define PD_PAGE_FULL        0x0002      /* not enough free space for new

} HeapTupleFields;

        CommandId   t_cid;     

    }           t_choice;

        pageinspect上方有一一好几个 函数是本文用到的,亲戚亲戚亲戚朋友分别是:

        a.get_raw_page,根据参数表明、数据文件类型(main、fsm、vm)以及page位置,将当前表文件中的page内容返回。还一一好几个 多函数于此同名,只有一一好几个 参数,是将第八个参数省略,直接使用'main'。

        b.page_header,参数是函数get_raw_page的返回值,返回值是将本page价值形式中的PageHeaderData全部信息

        c.heap_page_items,参数是函数get_raw_page的返回值,返回值是将page内的项指针(ItemIddata)以及HeapTupleHeaderData的全部信息。

    union

#define HEAP_MOVED_OFF          0x4000  /* moved to another place by pre-9.0

猜你喜欢

在阿里做了五年技术主管,我有话想说

从支付宝第一位实习生到CTO,他有什么话想说阿里研究员吴翰清:世界须要什么样的智能系统?|7月15号云栖夜读阿里CEO张勇首谈商业未来:大数据将成新能源云无边界,阿里云混合云数

2020-02-22

中文分词算法工具hanlp源码解析

一起去这一 措施速度非常快,插入和查询的时间不是O(1)。doubledTemp=(double)1/MAX_FREQUENCY+0.00001Viterbi最短路径有向图i

2020-02-22

怎么理解<神曲>思想和艺术上的两重性?

展开完整性《神曲》二重性首先表现在何如看待祖国的前途命运。一方面但丁认识到统一意大利是拯救祖国的唯一途径,另一方面他所设想的统一办法却是空想的、错误的,把希望寄托在好皇帝和朋友

2020-02-22

求鬼泣1234游戏剧情中文百度云分享

可选中另另有一个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问提报告 。扫描二维码下载换一换追问有点硬推荐内容通过百度网盘分享,展开详细优酷详细详细都是

2020-02-21

windows server系统,登录系统提示按下 ctrl+alt+delete

4,点击“选着”即可完成设置。WindowsServer系统,为了保证运维人员可靠,除理线程池自动操控,新装的系统往往要求手动输入ctrl+alt+delete实现进入登录页面

2020-02-21