阵列DML命令(FireDAC)的性能
介绍
如何准备测试环境
本教程中使用的代码:FireDAC\Samples\Comp Layer\TFDQuery\ExecSQL\AD03-ArrayDML。 基本代码示例:FireDAC\Samples\Comp Layer\TFDQuery\ExecSQL\Batch。
数组DML命令的主要元素
FD查询1 . SQL语言 . 文本 := '插入ADQA_Batch_test(tint,tstring)值(:f1,:f2)' ;
FD查询1 . 参数 . 阵列大小 := 100 ;
...
对于 我 := 0 到 FD查询1 . 参数 . 阵列大小 做 开始
FD查询1 . 参数 [ 0 ] . 作为整数 [ 我 ] := 我 ;
FD查询1 . 参数 [ 1 ] . AsStrings(作为字符串) [ 我 ] := “测试” + IntToStr公司 ( 我 ) ;
结束 ;
FD查询1 . 执行 ( FD查询1 . 参数 . 阵列大小 ) ;
使用提示
可用于任何使用参数(INSERT、UPDATE、DELETE…)的SQL命令。 错误处理在记录级别上得到支持,并在单独的文章中进行了描述。 FireDAC统一了不同服务器类型的Array DML(无需深入研究API)。
阵列DML测试运行的典型结果
性能提示
它们在慢速网络上的速度明显更快,因为这些命令创建的TCP/IP包更少。 它们减少了客户端的CPU负载,因为服务器大部分时间都必须处理数组命令。 由于服务器通常必须评估触发器和索引,因此通常不会达到大于10万rec/sec的理论速度。 对于非常大的批插入(例如,>1’000'000条记录),您应该考虑删除并重新创建非主键索引,以达到最佳性能。