小编tuk*_*tuk的帖子

IDLE 状态在一行 pg_stat_activity 中表示什么?

有人可以解决我对pg_stat_activitypostgres 9.5 的以下疑问吗?

  1. 有人可以让我知道state IDLE行中的表示是pg_stat_activity什么吗?它是否像检查所有打开的 postgres 连接,如果连接没有执行任何查询,则IDLE表示该连接执行的最后一个查询?
  2. 在输出select * from pg_stat_activity我看到有行state IDLEquery_start_date超过2天?这意味着什么?我应该担心这个吗?
  3. 有人可以让我知道 pg_stat_activity 是如何填充的吗?如果我正在执行一个查询,比如Select * from pg_stat_activity它是从 postgres 维护的某个快照中生成详细信息,还是检查 postgres 中打开的当前连接以提供详细信息?

postgresql

28
推荐指数
1
解决办法
3万
查看次数

使用 INCLUDE 相对于在 INDEX 中添加列来覆盖索引的优势

Postgres 文档声明了以下有关仅索引扫描和覆盖索引的内容

如果您经常运行类似的查询

SELECT y FROM tab WHERE x = 'key';

加速此类查询的传统方法是仅在 x 上创建索引。然而,索引定义为

CREATE INDEX tab_x_y ON tab(x) INCLUDE (y);

可以将这些查询作为仅索引扫描来处理,因为可以从索引中获取 y 而无需访问堆。

因为列 y 不是索引搜索键的一部分,所以它不必是索引可以处理的数据类型;它仅存储在索引中,并且不被索引机制解释。另外,如果索引是唯一索引,即

CREATE UNIQUE INDEX tab_x_y ON tab(x) INCLUDE (y);

唯一性条件仅适用于 x 列,不适用于 x 和 y 的组合。(INCLUDE 子句也可以用 UNIQUE 和 PRIMARY KEY 约束编写,为设置这样的索引提供替代语法。)

问题1:如果 的数据类型y可以添加到索引中,并且没有唯一性要求,那么使用CREATE INDEX tab_x_y ON tab(x) INCLUDE (y)overCREATE INDEX tab_x_y ON tab(x, y)进行查询有什么优势SELECT y FROM tab WHERE x = 'key';

在向索引添加非键有效负载列(尤其是宽列)时保持保守是明智的做法。如果索引元组超过索引类型允许的最大大小,数据插入将失败。在任何情况下,非键列都会复制索引表中的数据并使索引的大小膨胀,从而可能会减慢搜索速度。 …

postgresql index covering-index

6
推荐指数
2
解决办法
4398
查看次数

标签 统计

postgresql ×2

covering-index ×1

index ×1