From c516ee93aa906a8b81c4c58844e2042713f71b83 Mon Sep 17 00:00:00 2001 From: huyuchengus Date: Tue, 11 Feb 2025 11:51:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=BD=E5=8D=9A=E6=96=87=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CSDN博文备份/Discourse数据库重建索引-113933398.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 CSDN博文备份/Discourse数据库重建索引-113933398.md diff --git a/CSDN博文备份/Discourse数据库重建索引-113933398.md b/CSDN博文备份/Discourse数据库重建索引-113933398.md new file mode 100644 index 0000000..193ddeb --- /dev/null +++ b/CSDN博文备份/Discourse数据库重建索引-113933398.md @@ -0,0 +1 @@ +

在 Discourse 数据库进行升级后的主要特性就是对 Discourse 数据库中使用的索引进行优化。


Discourse 中的索引主要使用的是post_timings 表和数据库的索引。


当对数据库升级完成后,需要针对数据库运行下面的命令来对数据库的索引进行优化和重建。



cd /var/discourse
./launcher enter app
su postgres
psql
\connect discourse
REINDEX SCHEMA CONCURRENTLY public;
\q
exit
exit

当完成上面的命令后,可以检查下 post_timings 的大小来查看数据库重构索引后的数据库数据大小变化。




2025-02-10_22-22-15



也可以使用下面的命令来对数据库进行查询,下面的 SQL 查询将会返回你当前运行 Discourse 实例中 20 个最大的数据对象。


可以在索引重建之前和之后都运行下来比较大小。



WITH RECURSIVE pg_inherit(inhrelid, inhparent) AS
(select inhrelid, inhparent
FROM pg_inherits
UNION
SELECT child.inhrelid, parent.inhparent
FROM pg_inherit child, pg_inherits parent
WHERE child.inhparent = parent.inhrelid),
pg_inherit_short AS (SELECT * FROM pg_inherit WHERE inhparent NOT IN (SELECT inhrelid FROM pg_inherit))
SELECT table_schema
, TABLE_NAME
, row_estimate
, pg_size_pretty(total_bytes) AS total
, pg_size_pretty(index_bytes) AS INDEX
, pg_size_pretty(toast_bytes) AS toast
, pg_size_pretty(table_bytes) AS TABLE
FROM (
SELECT *, total_bytes-index_bytes-COALESCE(toast_bytes,0) AS table_bytes
FROM (
SELECT c.oid
, nspname AS table_schema
, relname AS TABLE_NAME
, SUM(c.reltuples) OVER (partition BY parent) AS row_estimate
, SUM(pg_total_relation_size(c.oid)) OVER (partition BY parent) AS total_bytes
, SUM(pg_indexes_size(c.oid)) OVER (partition BY parent) AS index_bytes
, SUM(pg_total_relation_size(reltoastrelid)) OVER (partition BY parent) AS toast_bytes
, parent
FROM (
SELECT pg_class.oid
, reltuples
, relname
, relnamespace
, pg_class.reltoastrelid
, COALESCE(inhparent, pg_class.oid) parent
FROM pg_class
LEFT JOIN pg_inherit_short ON inhrelid = oid
WHERE relkind IN ('r', 'p')
) c
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
) a
WHERE oid = parent
) a
ORDER BY total_bytes DESC LIMIT 20;

Discourse 数据库重建索引 - Discourse - iSharkFly在 Discourse 数据库进行升级后的主要特性就是对 Discourse 数据库中使用的索引进行优化。 Discourse 中的索引主要使用的是post_timings 表和数据库的索引。 当对数据库升级完成后,需要针对数据库运行下面的命令来对数据库的索引进行优化和重建。 cd /var/discourse./launcher enter appsu postgrespsql\connect discourseREI…icon-default.png?t=O83Ahttps://www.isharkfly.com/t/discourse/16904 

\ No newline at end of file