fix(pool): 优化批量删除性能,使用 SQL 批量删除替代逐条 ORM 删除

- 后端批量删除改用 sa_delete 直接执行 SQL,避免逐条加载和删除
- 前端删除操作批次大小从 2000 减小到 50,防止大批量删除超时
- 增加前端批量操作失败时的错误日志输出
This commit is contained in:
fawney19
2026-03-08 03:08:27 +08:00
parent ef0f8dd4d0
commit 124c4ca403
2 changed files with 90 additions and 70 deletions

View File

@@ -620,9 +620,8 @@ async function executeAction(): Promise<void> {
progressDone.value = Math.min(i + BATCH_SIZE, targetIds.length)
}
} else if (['delete', 'enable', 'disable', 'clear_proxy', 'set_proxy'].includes(selectedAction.value)) {
// 使用 batch-action API每批最多 2000 个
const targetIds = selectedKeys.map((key) => key.key_id)
const BATCH_SIZE = 2000
const BATCH_SIZE = selectedAction.value === 'delete' ? 50 : 2000
const totalBatches = Math.ceil(targetIds.length / BATCH_SIZE)
for (let i = 0; i < targetIds.length; i += BATCH_SIZE) {
@@ -643,7 +642,9 @@ async function executeAction(): Promise<void> {
...(payload ? { payload } : {}),
})
successCount += result.affected
} catch {
} catch (err) {
// eslint-disable-next-line no-console
console.error(`batch ${selectedAction.value} failed (batch ${batchIndex}/${totalBatches}):`, err)
failedCount += batch.length
}