执行数据#
根据您的执行设置和执行量,n8n 的数据库可能会不断增长并耗尽存储空间。 为避免此问题,n8n 建议您不要保存不必要的数据,并启用对旧执行数据的自动清理(pruning)。 为此,请配置相应的 环境变量。
减少保存的数据#
您还可以在工作流级别单独配置这些设置,使用 工作流设置 即可实现。
您可以选择 n8n 保存哪些执行数据。例如,仅保存以 Error 结束的执行记录。
`` 1 2 3 4 5 6 7 8 9 10 11 12
| ```
# npm
# 保存以错误结束的执行
export EXECUTIONS_DATA_SAVE_ON_ERROR=all
# 不保存成功的执行
export EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# 不保存每次执行的节点进度信息
export EXECUTIONS_DATA_SAVE_ON_PROGRESS=false
# 不保存手动触发的执行
export EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false---|---
1
2
3
4
5
6
7
8
9| ```
Docker
docker run
-p 5678:5678
-e EXECUTIONS_DATA_SAVE_ON_ERROR=all
-e EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
-e EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
-e EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
n8nio/n8n
---|---1 2 3 4 5 6 7
| ```
# Docker Compose
n8n:
environment:
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false---|---
启用执行数据清理(Enable executions pruning)#
执行数据清理会按定期计划删除已完成的执行及其相关的执行数据和二进制数据。n8n 默认已启用该功能。出于性能考虑,清理操作会先将目标标记为待删除,稍后再永久移除。
当满足以下任意一个条件时,n8n 将开始清理执行记录:
- 时间(Age):执行完成时间超过
EXECUTIONS_DATA_MAX_AGE小时(默认值:336 小时 → 14 天)。 - 数量(Count):总执行次数超过
EXECUTIONS_DATA_PRUNE_MAX_COUNT(默认值:10,000)。此时,n8n 将从最旧的执行开始依次删除。
请注意:
- 状态为
new、running或waiting的执行不会被清理。 - 被标注(annotated)的执行将永久豁免于清理。
- 清理机制会保留一个安全缓冲期
EXECUTIONS_DATA_HARD_DELETE_BUFFER(默认值:1 小时),以确保用户在构建或调试工作流时,最近的数据仍然可用。
1
2
3
4
5
6
7
8| ```
启用执行数据清理
export EXECUTIONS_DATA_PRUNE=true
# 已完成执行记录在符合软删除条件前的保留时长(小时)
exportEXECUTIONS_DATA_MAX_AGE=168
# 保留的已完成执行记录的最大数量。实际清理时可能不会严格精确到该最大值。设为 `0` 表示无限制。
exportEXECUTIONS_DATA_PRUNE_MAX_COUNT=50000---|---
1
2
3
4
5
6
7| ```
Docker
docker
5678:5678
EXECUTIONS_DATA_PRUNE=true
EXECUTIONS_DATA_MAX_AGE=168\
---|---1 2 3 4 5 6
| ```
# Docker Compose
n8n:
environment:
-EXECUTIONS_DATA_PRUNE=true
-EXECUTIONS_DATA_MAX_AGE=168
-EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000---|---
SQLite
如果你使用默认的 SQLite 数据库运行 n8n,被清理的数据所占用的磁盘空间不会自动释放,而是会被后续的执行数据重新利用。若要释放这部分空间,请配置 DB_SQLITE_VACUUM_ON_STARTUP 环境变量,或手动执行 VACUUM 操作。
二进制数据清理
二进制数据清理仅作用于当前激活的二进制数据存储模式。例如,如果你的实例之前将数据存储在 S3 中,之后切换到了文件系统模式,n8n 只会清理文件系统中的二进制数据。此行为未来可能会发生变化。