测试环境的WinCC设置为1秒1次变量记录,查询两天的数据,共158039行,以下测试查询内容相同。注意图片右下角查询时间和查询行数。
查询对比
从WinCC过程值归档数据库中查询出的变量是以列呈现的,一般还需再做二次查询对数据进行转换,把变量值变成二维表格。这里不对数据进行转换,只把查询的数据保存到临时表变量再二次查询,模拟实际使用的过程。
(1)用WinCC提供的存储过程查询,查询的数据先保存在临时表变量中,然后再从临时表变量中查询所有数据,耗时20秒。
(2)用WinCC建立的链接数据库查询,查询的数据先保存在临时表变量中,然后再从临时表变量中查询所有数据,耗时20秒。
(3)用WinCC建立的链接数据库查询,查询的数据直接显示,耗时14秒。
(4)用WinCC提供的OLEDBProvider查询,查询的数据直接显示,耗时14秒。
(4)直接查询SQL Server数据库,该表是用上面方法查询出数据后写入其中建立的测试表,耗时1秒。
结论
序号 |
查询方式 |
耗时(秒) |
1 |
存储过程查询,保存到表变量再显示。 |
20 |
2 |
链接服务器查询,保存到表变量再显示。 |
20 |
3 |
链接服务器查询,直接显示。 |
14 |
4 |
WinCCOLEDBProvider查询,直接显示。 |
14 |
5 |
SQL Server表查询。 |
1 |
从WinCC过程值归档数据库中查询158039行数据耗时14秒,每秒查询到11288行数据,如果临时保存到表变量需再耗费6秒,如果从SQL Server数据库中查询数据保存到表变量只需1秒。
存储过程内所使用的接口正是链接服务器,而链接服务器也是通过WinCCOLEDBProvider创建,所以以上结果WinCC的存储过程、链接服务器和WinCCOLEDBProvider的查询速度一样,但是都比查询SQL Server表要慢许多。