小编Ama*_*rus的帖子

有没有办法在 PostgreSQL 中显示索引的创建语句

我需要在 PostgreSQL 中重新创建一个索引膨胀的索引。因为我需要索引在创建时可用,所以我不能使用 REINDEX。我将使用新名称重新创建索引,然后删除旧名称。有什么方法可以查看用于创建索引的 SQL 语句,以便我可以复制它?

postgresql index

22
推荐指数
1
解决办法
8836
查看次数

在 PostgreSQL 中检测 CREATE INDEX CONCURRENTLY 何时完成

如果我在 PostgreSQL 中同时创建了一个索引,我如何才能看到它何时完成?

我正在尝试重建索引以解决索引膨胀问题,我需要将旧索引保留一段时间直到新索引完成,所以我需要知道它何时完成。

这是 PostgreSQL 9.2/3ish

postgresql index concurrency

11
推荐指数
2
解决办法
5908
查看次数

验证 postgresql 配置文件的命令?

我通过ansible生成postgresql配置文件,并将它们放入/etc/postgresql/XX/main/conf.d/whatever.conf. 我不小心犯了一个语法错误并破坏了我的 postgresql,需要手动修复。

是否有任何 postgresql 命令来验证文件是否是有效的 postgresql.conf 文件?

sudoers文件可以通过 进行验证/usr/sbin/visudo -cf path/to/file。有没有postgresql的东西?

我目前正在运行 Ubuntu 18.04 和 20.04,以及 PostgreSQL 10、12 等(是的,有几个不同的版本)。

postgresql deployment configuration

6
推荐指数
1
解决办法
8026
查看次数

为什么在 OPTIMIZE TABLE 后 MySQL (InnoDB) 表变得更快,但随后不起作用?

我有一个 Django Web 应用程序,它在 MySQL InnoDB 数据库中存储数据。在 django admin 上有一个特定页面被大量访问,并且查询需要很长时间(~20 秒)。由于它是 Django 内部结构,因此无法更改查询。

有 3 个表AB、 和C。查询如下所示:

SELECT * 
FROM A 
   INNER JOIN B ON (A.b_id = B.foo) 
   INNER JOIN C ON (B.foo = C.id) 
ORDER BY A.id DESC 
LIMIT 100
Run Code Online (Sandbox Code Playgroud)

一个简单的 join-3-tables 在一起。

这些id字段是主键并具有索引。A.b_idB.foo两者都有自己的索引。

然而,查询计划看起来不对,并说它没有在 B 上使用任何键(但它正在使用其他连接的键)。从阅读大量 MySQL 性能资料来看,理论上应该使用索引,因为它是各种可能“失败”的 const 连接。它说它必须扫描所有大约 1,200 行 B。

奇怪的是,我OPTIMIZE在本地机器上编辑了每个查询并重新运行查询(使用SQL_NO_CACHE),它快得多,0.02 秒与原始 20 秒。EXPLAIN在同一个查询上给出了不同的、更合理的结果,表明它可以在每个查询上使用一个索引,并且它不必扫描整个批次。一位同事OPTIMIZE在测试机器上用大致相同的数据(最近从加载的转储文件中重新创建)为每个人运行,并且还显示速度增加,并且解释合理。

所以我们在实时系统上运行它......它没有改变任何东西(速度或解释)。我重新创建了我的 …

mysql innodb performance index

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

如何在 PostgreSQL 上查找表/索引所在的表空间?

如何使用 PostgreSQL (9.3) 找出表(或索引)所在的表空间?

postgresql tablespaces postgresql-9.3

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

在 PostgreSQL 中将 unix/epoch 值解析为“TIMESTAMP”

PostgreSQL 的COPY命令对于快速导入大量数据非常有用,并且数据必须采用数据类型的文本表示形式。

我正在导入大量数据,包括一timestamp,但它存储为“unix time”,即自纪元以来的秒数。我可以将其转换为ISO 8601(例如2010-01-01 00:00:00,并且 PostgreSQL 接受 a 的转换timestamp。它不接受原始纪元值整数。

是否可以让 postgres 接受纪元整数值并将其解释/转换为时间戳?这将使我的代码更简单(也许更快)。

这适用于psql

create temporary table test1 ( v1 timestamp );
copy test1 from stdin ;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF     signal.
>> 2010-01-01 00:00:00
>> \.
COPY 1
Run Code Online (Sandbox Code Playgroud)

但这些没有:

copy test1 from stdin …
Run Code Online (Sandbox Code Playgroud)

postgresql optimization import timestamp copy

2
推荐指数
1
解决办法
1958
查看次数