【问题标题】:Btree details on Postgresql关于 Postgresql 的 Btree 详细信息
【发布时间】:2013-10-10 10:12:16
【问题描述】:

我如何知道有关 postgresql 上索引的详细信息,例如有多少节点和树高?

可以访问数据结构本身吗?

我还没有找到任何公开此类详细信息的目录表

提前致谢!

【问题讨论】:

  • 最好在 postgres 邮件列表中询问这些问题。有更多机会找到了解 postgres 内部知识的人。您也可以随时阅读和更改此类的 postgres 源代码。

标签: postgresql indexing b-tree


【解决方案1】:

您可以使用 pgstattuple 扩展。

create extension pgstattuple;
SELECT * FROM pgstatindex('your_index_name');

例如,

ycsb=# select * from pgstatindex('usertable_pkey');
 version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation 
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
       2 |          3 | 5488721920 |         44337 |           4464 |     665545 |           0 |             0 |               52 |                 11
(1 row)

可以参考文档; https://www.postgresql.org/docs/current/static/pgstattuple.html

【讨论】:

    【解决方案2】:

    查看 pageinspect 扩展中的 bt_metap 函数。

    http://www.postgresql.org/docs/current/static/pageinspect.html

    【讨论】: