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