小编Fra*_*k59的帖子

尝试从 PostgreSQL 文档中理解 TID 定义

我试图了解什么是 TID 以及它是如何工作的。我在文档中找到了TID的2个定义:

1)来自https://www.postgresql.org/docs/11/datatype-oid.html

系统使用的最终标识符类型是tid,或元组标识符(行标识符)。这是系统列 ctid 的数据类型。元组 ID 是一对(块编号、块内的元组索引),用于标识行在其表中的物理位置。

2)来自https://www.postgresql.org/docs/11/storage-page-layout.html

事实上,PostgreSQL 创建的每个指向项目的指针(ItemPointer,也称为 CTID)都由页码和项目标识符的索引组成。

我理解第二个定义,它对我来说很清楚,但我对第一个定义及其使用的术语感到困惑。

block 中的块索引和元组索引是什么?它们如何与页面和第二个定义匹配?

请帮助并澄清哪个定义是正确的以及我应该如何理解第一个定义中的术语。

postgresql

5
推荐指数
1
解决办法
3575
查看次数

为什么 EXPLAIN 不显示索引扫描的堆提取

我试图比较覆盖 b 树索引和简单 b 树索引之间的潜在性能差异,并与EXPLAIN(ANALYZE,BUFFERS)输出混淆。

测试环境

-- function to fill test table
CREATE OR REPLACE FUNCTION fillTable (n INTEGER)
   RETURNS INTEGER AS $rowsCount$
DECLARE
   counter INTEGER := 0 ;
BEGIN

   IF (n < 1) THEN
      RETURN 0 ;
   END IF;

   LOOP
      EXIT WHEN counter = n ;
      counter := counter + 1 ;
      insert into key_value_test(key, value) VALUES (counter,counter);
   END LOOP ;

   return counter;

END ;
$rowsCount$
LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

简单b-tree索引的测试用例

drop table key_value_test;
create table key_value_test
(
    key …
Run Code Online (Sandbox Code Playgroud)

postgresql performance postgresql-11 postgresql-performance

5
推荐指数
1
解决办法
534
查看次数