diff --git a/server/internal/constants/constants.go b/server/internal/constants/constants.go index ebcfc4b..974bf30 100644 --- a/server/internal/constants/constants.go +++ b/server/internal/constants/constants.go @@ -63,7 +63,7 @@ var ExportThresholds = struct { // XlsxMaxRows xlsx格式最大行数,超过则强制使用csv XlsxMaxRows int64 }{ - MaxRowsPerFile: 300000, + MaxRowsPerFile: 500000, // 修改:单个文件最大5万行数据 PassScoreThreshold: 60, ChunkDays: 10, ChunkThreshold: 50000, @@ -85,16 +85,19 @@ var BatchSizes = struct { LargeDataset int // HugeDataset 超大数据集批次 HugeDataset int + // MassiveDataset 海量数据集批次 (用于 5000万+ 数捥) + MassiveDataset int }{ - CSVDefault: 10000, - XLSXDefault: 5000, - SmallDataset: 10000, - MediumDataset: 20000, - LargeDataset: 50000, - HugeDataset: 100000, + CSVDefault: 10000, + XLSXDefault: 5000, + SmallDataset: 10000, + MediumDataset: 20000, + LargeDataset: 50000, + HugeDataset: 200000, // 上汪一一次 + MassiveDataset: 500000, // 新增:海量数据集专用 } -// ChooseBatchSize 根据估算行数和格式选择合适的批次大小 +// ChooseBatchSize 根据估算行数和格式选择合適的批次大小 func ChooseBatchSize(estimate int64, format FileFormat) int { if format == FileFormatXLSX { return BatchSizes.XLSXDefault @@ -111,6 +114,9 @@ func ChooseBatchSize(estimate int64, format FileFormat) int { if estimate < 500000 { return BatchSizes.LargeDataset } + if estimate >= 50000000 { // 5000万+ 数据 + return BatchSizes.MassiveDataset + } if estimate >= 2000000 { return BatchSizes.HugeDataset } diff --git a/server/internal/repo/export_repo.go b/server/internal/repo/export_repo.go index 467b63c..86ddc84 100644 --- a/server/internal/repo/export_repo.go +++ b/server/internal/repo/export_repo.go @@ -459,8 +459,8 @@ func NewProgressTracker(jobID uint64, metaDB *sql.DB) *ProgressTracker { lastSyncRows: 0, lastSyncTime: time.Now(), metaDB: metaDB, - syncInterval: 10000, // 每10000行同步一次 - timeLimitMS: 5000, // 最长5秒同步一次 + syncInterval: 100000, // 每100000行同步一次 + timeLimitMS: 5000, // 最长5秒同步一次 } }