n8n Environment variables-Executions
在n8n平台不論手動或自動執行workflow,都會將執行紀錄紀錄在資料庫。隨著使用時間增加,n8n資料庫可能會不斷增長並影響執行效能。
為避免這種情況,n8n建議不要保存不必要的數據,並啟用對舊資料的清理。
依據官網文件
Executions environment variables
Execution data
進行設定。
主機環境
Ubuntu 24.04.3 LTSDocker version v28.5.1
Docker compose version v2.40.3
n8n Community Edition version 1.118.1 (n8nio/n8n)
設定過程
1.手動刪除
檢查執行紀錄手動刪除紀錄
參數說明
# 儲存結束於錯誤的執行
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
# 不要保存成功执行
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# 不要為每次執行保存節點進度
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
# 不要保存手動啟動的執行
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
# 儲存結束於錯誤的執行
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
# 不要保存成功执行
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# 不要為每次執行保存節點進度
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
# 不要保存手動啟動的執行
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
於docker-compose.yml增加以下設定
---
# Reduce saved data
# Save executions ending in errors
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
# Don't save successful executions
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# Don't save node progress for each execution
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
# Don't save manually launched executions
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
---
以上是全平台的設定,也可以參考工作流程設置, 針對單一工作流程配置這些設定。
---
# Reduce saved data
# Save executions ending in errors
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
# Don't save successful executions
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# Don't save node progress for each execution
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
# Don't save manually launched executions
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false
---
以上是全平台的設定,也可以參考工作流程設置, 針對單一工作流程配置這些設定。
3.定期刪除資料
n8n預設啟用executions pruning,會定期刪除已完成的執行及其執行資料和二進位資料。出於效能考慮,刪除會先標記要刪除的目標,然後再將其永久移除。參數說明
# 啟用executions pruning
- EXECUTIONS_DATA_PRUNE=true
# 執行完成時間超過設定的時間,n8n會刪除超過設定時間的資料。預設值:336小時,單位為小時。
# 啟用executions pruning
- EXECUTIONS_DATA_PRUNE=true
# 執行完成時間超過設定的時間,n8n會刪除超過設定時間的資料。預設值:336小時,單位為小時。
- EXECUTIONS_DATA_MAX_AGE=336
# 執行總數超過 EXECUTIONS_DATA_PRUNE_MAX_COUNT 設定值,n8n會從最早到最新刪除執行記錄。預設值:10000。如果設為0則為無限制。
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000
# 執行總數超過 EXECUTIONS_DATA_PRUNE_MAX_COUNT 設定值,n8n會從最早到最新刪除執行記錄。預設值:10000。如果設為0則為無限制。
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000
記住事項:
a.處於new、running或 waiting 狀態的執行不符合刪除條件。
b.帶有註釋的執行(例如,帶有標籤或評分的執行)永遠不會被刪除。
C.定時刪除時,設定參數EXECUTIONS_DATA_HARD_DELETE_BUFFER 安全緩衝期(預設值:1小時),以確保在使用者建置或偵錯工作流程時,最近的資料仍然可用。
a.處於new、running或 waiting 狀態的執行不符合刪除條件。
b.帶有註釋的執行(例如,帶有標籤或評分的執行)永遠不會被刪除。
C.定時刪除時,設定參數EXECUTIONS_DATA_HARD_DELETE_BUFFER 安全緩衝期(預設值:1小時),以確保在使用者建置或偵錯工作流程時,最近的資料仍然可用。
可以自行設定EXECUTIONS_DATA_MAX_AGE及EXECUTIONS_DATA_PRUNE_MAX_COUNT的數字,來保持資料完整
於docker-compose.yml增加以下設定
---
# Clear EXECUTIONS_DATA
# Enable executions pruning
- EXECUTIONS_DATA_PRUNE=true
# How old (hours) a finished execution must be to qualify for soft-deletion
- EXECUTIONS_DATA_MAX_AGE=168
# Max number of finished executions to keep.
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000
---
---
# Clear EXECUTIONS_DATA
# Enable executions pruning
- EXECUTIONS_DATA_PRUNE=true
# How old (hours) a finished execution must be to qualify for soft-deletion
- EXECUTIONS_DATA_MAX_AGE=168
# Max number of finished executions to keep.
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000
---
docker-compose.yml
注意項目
官方文件提到,如果使用預設SQLite資料庫執行n8n,則任何已清理資料的磁碟空間不會自動釋放,而是會重新用於後續執行的資料。
若要釋放此空間,請設定環境變數(DB_SQLITE_VACUUM_ON_STARTUP=true)或手動執行 VACUUM 操作。
官方文件提到,如果使用預設SQLite資料庫執行n8n,則任何已清理資料的磁碟空間不會自動釋放,而是會重新用於後續執行的資料。
若要釋放此空間,請設定環境變數(DB_SQLITE_VACUUM_ON_STARTUP=true)或手動執行 VACUUM 操作。



沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。