巨大 SQL 服务器批量插入的最佳策略 - 高频或低频
Best strategy for gigantic SQL Server bulk Insert - high-frequency or low-frequency
批量加载 N 批 1 MB 数据(高频率)还是批量加载 1 批 X MB 数据(低频率)更好?
我的问题是解析和处理数据也需要时间,所以并行解析、处理和持久化一个巨大的数据集似乎不是最好的方法,因为它会导致高频批量插入。
相反,解析和处理应该累积成 X 大小的大批次,然后调度该批次的(并行的)批量插入?
这是正确的吗?如果是这样,X 的推荐大小是多少?
批处理的最佳大小取决于您的硬件、您正在进行的处理以及现有数据量。只有你自己知道。
智能算法会尝试插入几批大小 N
并测量性能,然后几批大小 2*N
,然后几批大小 4*N
,等等。直到性能开始下降并自动确定最佳批量大小。
随着数据库的增长,批处理的最佳大小也会发生变化,因此算法应随时间进行自我调整。
如果这是一次性任务,请手动进行少量不同批量大小的测试。
批量加载 N 批 1 MB 数据(高频率)还是批量加载 1 批 X MB 数据(低频率)更好?
我的问题是解析和处理数据也需要时间,所以并行解析、处理和持久化一个巨大的数据集似乎不是最好的方法,因为它会导致高频批量插入。
相反,解析和处理应该累积成 X 大小的大批次,然后调度该批次的(并行的)批量插入?
这是正确的吗?如果是这样,X 的推荐大小是多少?
批处理的最佳大小取决于您的硬件、您正在进行的处理以及现有数据量。只有你自己知道。
智能算法会尝试插入几批大小 N
并测量性能,然后几批大小 2*N
,然后几批大小 4*N
,等等。直到性能开始下降并自动确定最佳批量大小。
随着数据库的增长,批处理的最佳大小也会发生变化,因此算法应随时间进行自我调整。
如果这是一次性任务,请手动进行少量不同批量大小的测试。