gpt4 book ai didi

sql-server - Delphi 与 SQL Server : OLEDB vs. native 客户端驱动程序

转载 作者:行者123 更新时间:2023-12-03 14:55:09 26 4
gpt4 key购买 nike

有人告诉我,SQL Native Client应该比 OLEDB 驱动程序更快。因此,我组合了一个实用程序来在两者之间进行负载测试 - 并且得到了混合的结果。有时一个更快,有时另一个更快,无论查询是什么(简单的 select、where 子句、连接、order by 等)。当然,服务器承担了大部分工作负载,但我感兴趣的是数据进入 PC 到在应用程序中访问数据之间所花费的时间。

负载测试由返回非常大数据集的非常小的查询组成。例如,我select * from SysTables该表有 50,000 多条记录。收到数据后,我又对结果进行了一次循环(使用 while not Q.eof ... Q.next ... 等)。我还尝试在查询中添加一些内容 - 例如 order by Val哪里Valvarchar(100)字段。

这是我的负载测试器的示例,最底部的数字是平均值...

enter image description here

那么,两者之间到底有什么区别呢?我确实知道 OLE 非常灵活并且支持许多不同的数据库引擎,而 Native Client 仅特定于 SQL Server。但幕后还发生了什么?这对 Delphi 使用这些驱动程序的方式有何影响?

这是专门通过 TADOConnection 使用 ADO组件和TADOQuery也是如此。

我不一定在寻找或寻求提高性能的方法 - 我只需要知道驱动程序之间的差异是什么。

最佳答案

stated by Microsoft :

SQL Server Native Client is a stand-alone data access application programming interface (API), used for both OLE DB and ODBC, that was introduced in SQL Server 2005. SQL Server Native Client combines the SQL OLE DB provider and the SQL ODBC driver into one native dynamic-link library (DLL).

根据我的理解,ADO 只是 OleDB 上的一个面向对象的应用程序级数据库层。在所有情况下它将使用 OleDB。变化的是所使用的提供者。如果您指定 SQLNCLI10 提供程序,您将使用该协议(protocol)的最新版本。如果指定 SQLOLEDB 提供程序,您将使用通用 SQL Server 2000 + 协议(protocol)。

因此:

  ADO -> OleDB -> SQLNCLI10 provider -> MS SQL Server (MSSQL 2000, 2005 or 2008 protocol)
ADO -> OleDB -> SQLOLEDB provider -> MS SQL Server (MSSQL 2000 protocol)

关于性能,我认为不会有太大区别。与往常一样,这将取决于处理的数据。

但恕我直言,建议为您的数据库使用最合适的提供商。某些类型的数据(例如 var(maxchar)Int64)被告知最好进行处理。并且 SQLNCLI10 提供程序已更新,因此我猜它更加优化。

关于sql-server - Delphi 与 SQL Server : OLEDB vs. native 客户端驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com