Delphi с SQL Server: OLEDB против драйверов Native Client

Мне сказали, что SQL Native Client предполагается быстрее, чем драйверы OLEDB. Итак, я собрал утилиту, чтобы провести нагрузочный тест между ними, и получаю смешанные результаты. Иногда один из них быстрее, иногда другой, независимо от того, каким может быть запрос (простой выбор, предложение where, объединение, сортировка по и т. Д.). Конечно, сервер выполняет большую часть рабочей нагрузки, но меня интересует время, которое проходит между поступлением данных на ПК и моментом, когда данные становятся доступными в приложении.

Нагрузочные тесты состоят из очень маленьких запросов, которые возвращают очень большие наборы данных. Например, я делаю выбираю * из SysTables , и в этой таблице содержится более 50 000 записей. После получения данных я снова просматриваю результаты (используя while not Q.eof ... Q.next ... и т. Д.). Я также попытался добавить некоторые вещи в запрос, например order by Val , где Val - это поле varchar (100) .

Вот образец моего тестера нагрузки, цифры в самом низу - средние ...

enter image description here

Так действительно, в чем разница между ними? Я знаю, что OLE очень гибок и поддерживает множество различных движков баз данных, тогда как Native Client специфичен только для SQL Server.Но что еще происходит за кадром? И как это повлияет на то, как Delphi использует эти драйверы?

Здесь конкретно используется ADO через компонент TADOConnection , а также TADOQuery .

Я не обязательно ищу или спрашиваю, как улучшить производительность - мне просто нужно знать, в чем разница между драйверами.

6
задан Jerry Dodge 1 February 2012 в 00:36
поделиться