跳到主要内容

执行数据#

根据您的执行设置与执行量,n8n 数据库可能会容量增长并耗尽存储空间。

为避免此问题,n8n 建议您不要保存不必要的数据,并启用旧执行数据的清理功能。

为此,请配置相应的环境变量

减少保存的数据#

工作流层级配置

您也可以基于单个工作流使用工作流设置来配置这些设置。

您可以选择 n8n 保存哪些执行数据。例如,您可以仅保存结果为 Error 的执行记录。

 # npm
# Save executions ending in errors
export EXECUTIONS_DATA_SAVE_ON_ERROR=all

# Don't save successful executions
export EXECUTIONS_DATA_SAVE_ON_SUCCESS=none

# Don't save node progress for each execution
export EXECUTIONS_DATA_SAVE_ON_PROGRESS=false

# Don't save manually launched executions
export EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
 # Docker
docker run -it --rm \
--name n8n \
-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 \
docker.n8n.io/n8nio/n8n
 # 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

启用执行记录清理#

执行记录清理功能会定期删除已完成的工作流执行记录及其相关执行数据与二进制数据。n8n 默认启用此清理机制。出于性能考量,清理过程会先标记待删除目标,随后永久移除这些数据。

当满足以下任一条件时,n8n 将触发执行记录清理:

  • 时效条件:执行记录完成时间超过 EXECUTIONS_DATA_MAX_AGE 小时(默认值:336小时→14天)
  • 数量条件:执行记录总数超过 EXECUTIONS_DATA_PRUNE_MAX_COUNT(默认值:10,000条)。达到此阈值时,n8n 将按从旧到新的顺序删除执行记录

需要注意以下特性:

  • 处于newrunningwaiting 状态的执行记录不参与清理
  • 带标注的执行记录(如含标签或评分的记录)永远不会被清理
  • 清理机制遵循 EXECUTIONS_DATA_HARD_DELETE_BUFFER 小时的安全缓冲期(默认:1小时),确保用户在构建或调试工作流时近期数据保持可用
 # Enable executions pruning
export EXECUTIONS_DATA_PRUNE=true

# How old (hours) a finished execution must be to qualify for soft-deletion
export EXECUTIONS_DATA_MAX_AGE=168

# Max number of finished executions to keep. May not strictly prune back down to the exact max count. Set to `0` for unlimited.
export EXECUTIONS_DATA_PRUNE_MAX_COUNT=50000
 # Docker
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e EXECUTIONS_DATA_PRUNE=true \
-e EXECUTIONS_DATA_MAX_AGE=168 \
docker.n8n.io/n8nio/n8n
 # 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仅会清理文件系统中的二进制数据。此机制未来可能调整。