小编Con*_*bil的帖子

如何判断 Postgres 表何时聚集以及使用了哪些索引

集群实现的性能改进给我留下了深刻的印象,但不知道它需要多长时间。

我知道如果在集群之后更改了表或分区,则需要重新构建集群,但是除非我记下了上次对表进行集群的时间,否则我怎么知道什么时候需要再次进行集群?

我可以使用这个查询来告诉我哪些表有一个或多个聚集索引

SELECT *
FROM   pg_class c
JOIN   pg_index i ON i.indrelid = c.oid
WHERE  relkind = 'r' AND relhasindex AND i.indisclustered 
Run Code Online (Sandbox Code Playgroud)

我的问题是。

  • 如何判断哪些索引已被聚集?
  • 有没有办法准确找出表最后一次聚集的时间?
  • 我如何判断聚集索引是否仍然“有效”,或者换句话说,如何判断表/索引发生了多少变化,以至于我需要重新构建集群。

我注意到重新构建聚集索引所需的时间与最初构建它所需的时间一样长(即使在此期间没有触及表)。所以我想避免重新聚类,除非我知道表需要它。


更新为清晰(我希望)

如果我使用这个命令......

CLUSTER tableA USING tableA_idx1;
Run Code Online (Sandbox Code Playgroud)
  • 我怎样才能在以后找出引用了哪个索引,即 tableA_idx1(该表定义了多个索引)?
  • 难道随时随地记录运行此命令?
  • 我知道当表发生更改时,有时可能需要使用CLUSTER tableA重建/刷新/重新创建集群(不确定正确的用语)。有没有知道什么时候表发生了如此大的变化以至于聚类不再有帮助?

postgresql query-performance

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

如何将 PSQL 命令行拆分为多行?

我正在使用 Windows 批处理文件通过 psql 连接到 postgres。我发出这样的命令......

SET PGPASSWORD=postgres
psql -U postgres -d postgres -c "DROP USER IF EXISTS foo;"
Run Code Online (Sandbox Code Playgroud)

这对于针对数据库运行一个简短的 SQL 命令非常有效。但我遇到了两个相关问题

  1. 如何在多行上继续执行单个长 SQL 命令,以及
  2. 如何运行多个命令。

示例1......

psql -U postgres -d postgres -c "CREATE DATABASE foo
WITH OWNER = bar
ENCODING = 'UTF8' 
TABLESPACE = mytabspace;"
Run Code Online (Sandbox Code Playgroud)

示例2......

psql -U postgres -d postgres -c "
ALTER TABLE one ALTER COLUMN X TYPE INTEGER;
ALTER TABLE two ALTER COLUMN Y TYPE INTEGER;"
Run Code Online (Sandbox Code Playgroud)

这些都不会如图所示工作,我做了一些谷歌搜索,发现了一些使用 linux 执行此操作的建议,并尝试了各种克拉、反斜杠和下划线,但似乎无法跨行分割命令。

我知道运行文件的 -f 选项,但我试图避免这种情况。

有什么建议么?

postgresql batch-file psql

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

如何在运行 powershell 进程时阻止 Windows 10 计算机进入睡眠/休眠状态?

我有一个 powershell 进程,它从远程服务器读取记录并将其复制到本地数据库中。运行时,可能会运行 8-12 小时。

如何防止计算机在此期间关闭(或进入睡眠/休眠模式)?我知道我可以调整“电源和睡眠设置”以将计算机设置为从不睡眠,但这不是我想要的 - 我确实希望它在进程不睡眠时进入睡眠状态

我知道如果 netflix 或 youtube 视频正在运行,睡眠/休眠会被暂停,我希望计算机在 powershell 进程运行时执行相同的操作。

powershell 进程在桌面上的命令窗口中运行 - 我很高兴屏幕保护程序能够激活,但我不希望发生的是我在 8 小时后唤醒机器并发现该进程只运行了电脑进入睡眠状态前10分钟!

powershell sleep windows-10

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