Appearance
数据库
Memos 的 SQLite、MySQL、和 PostgreSQL 配置。
Memos 支持三种数据库后端:
sqlite:单实例安装的默认选项
mysql用于托管的或大型部署
postgres用于托管的或大型部署
SQLite
SQLite 对于大多数的个人或是小团队,只运行单个节点的部署时,是默认的也是最适合的选择。
Memos 有很实用的默认设置,包括 WAL 模式和忙碌超时,这有助于减少常见的锁争用问题。
典型的 SQLite 设置:
bash
MEMOS_DRIVER=sqlite MEMOS_DATA=/var/opt/memos memos如果你需要显示指定文件路径:
bash
MEMOS_DRIVER=sqlite MEMOS_DSN=/opt/memos/memos.db memos如下条件下,SQLite 通常够用:
- 一个实例处理所有的写操作。
- 数据集不大。
- 操作的便捷性比集群扩展更重要。
MySQL 和 PostgreSQL
下列时候,你可以使用 MySQL 或 PostgreSQL:
- 你希望管理备份和工具
- 你有正在运行的数据库服务
- 你希望拥有更大的数据集,或是更多可选的控制项
- 你不希望数据库文件在宿主机本地存储
举例:
bash
MEMOS_DRIVER=mysql \
MEMOS_DSN="memos_user:password@tcp(db:3306)/memos?charset=utf8mb4&parseTime=True&loc=Local" \
memosbash
MEMOS_DRIVER=postgres \
MEMOS_DSN="postgres://memos_user:password@db:5432/memos?sslmode=disable" \
memos如何选择
- 单节点选择 SQLite,一切从简
- 选择 MySQL 或 PostgreSQL,为了灵活性
- 确保备份与您选择的数据库保持一致。
- 如果将附件存储在数据库之外,请单独备份这些附件。
性能表现影响
数据库的选择会影响出现瓶颈的时机:
- SQLite 通常会先暴露出写入争用问题
- MySQL 和 PostgreSQL 则将复杂性推向了网络数据库操作和性能优化的方向
- 即使数据库运行状况良好,附件存储也可能导致恢复和备份时间过长