diff options
Diffstat (limited to 'docs/locales/zh/admin/database_maintenance.md')
-rw-r--r-- | docs/locales/zh/admin/database_maintenance.md | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/docs/locales/zh/admin/database_maintenance.md b/docs/locales/zh/admin/database_maintenance.md new file mode 100644 index 000000000..36b0159bb --- /dev/null +++ b/docs/locales/zh/admin/database_maintenance.md @@ -0,0 +1,55 @@ +# 数据库维护 + +无论你选择使用 SQLite 还是 Postgres 来运行 GoToSocial,可能都需要偶尔执行一些维护工作,以保持数据库的良好运作。 + +!!! tip + + 尽管此处提供的维护建议旨在不破坏现有数据,你还是应该在手动执行维护操作之前备份数据库。这样,如果输入错误或意外运行了不当命令,可以恢复备份并重试。 + +!!! danger + + **强烈不建议**手动创建、删除或更新 GoToSocial 数据库中的条目,这里不会提供相关命令。即使你认为自己知道在做什么,运行 `DELETE` 等语句可能会引入非常难以排查的问题。以下维护建议旨在帮助你的实例平稳运行;如果你手动进入数据库并对条目、表和索引进行修改,它们不会拯救你的数据。 + +## SQLite + +要进行手动 SQLite 维护,你首先应该在存储 GoToSocial sqlite.db 文件的机器上安装 SQLite 命令行工具 `sqlite3`。有关 `sqlite3` 的详细信息,请参见[此处](https://sqlite.org/cli.html)。 + +### 分析/优化 + +按照 [SQLite 最佳实践](https://sqlite.org/lang_analyze.html#recommended_usage_pattern),GoToSocial 在关闭数据库连接时运行 `optimize` SQLite pragma,`analysis_limit=1000`,以保持索引信息的更新。 + +在每次数据库迁移后(例如,启动新版本的 GoToSocial 时),GoToSocial 将运行 `ANALYZE`,以确保查询计划器正确考虑迁移新增或删除的索引。 + +`ANALYZE` 命令可能需要大约 10 分钟,具体时间取决于硬件和数据库文件的大小。 + +由于上述自动化步骤,正常情况下你不需要针对 SQLite 数据库文件手动运行 `ANALYZE` 命令。 + +然而,如果你中断了之前的 `ANALYZE` 命令,并发现查询运行缓慢,可能是因为 SQLite 内部表中存储的索引元数据已被删除或不当修改。 + +如果是这种情况,可以尝试手动运行完整的 `ANALYZE` 命令,步骤如下: + +1. 停止 GoToSocial。 +2. 在 `sqlite3` shell 中连接到你的 GoToSocial 数据库文件,运行 `PRAGMA analysis_limit=0; ANALYZE;`(这可能需要几分钟)。 +3. 启动 GoToSocial。 + +[查看更多信息](https://sqlite.org/lang_analyze.html#approximate_analyze_for_large_databases). + +### 清理(Vacuum) + +GoToSocial 当前未启用 SQLite 的自动清理(auto-vacuum)。要将数据库文件重新打包到最佳大小,你可能需要定期(例如每几个月)在 SQLite 数据库上运行 `VACUUM` 命令。 + +可以在[此处](https://sqlite.org/lang_vacuum.html)查看有关 `VACUUM` 命令的详细信息。 + +基本步骤如下: + +1. 停止 GoToSocial。 +2. 在 `sqlite3` shell 中连接到你的 GoToSocial 数据库文件,运行 `VACUUM;`(这可能需要几分钟)。 +3. 启动 GoToSocial。 + +### 副本 + +为数据库设置副本等保护措施是常见做法。SQLite 可以使用外部软件进行副本创建。基本步骤描述在 [配置 SQLite 副本](../advanced/replicating-sqlite.md) 页面。 + +## Postgres + +待完成:Postgres 的维护建议。 |