Мне сказали, что SQL Native Client предполагается быстрее, чем драйверы OLEDB. Итак, я собрал утилиту, чтобы провести нагрузочный тест между ними, и получаю смешанные результаты. Иногда один из них быстрее, иногда другой, независимо от того, каким может быть запрос (простой выбор, предложение where, объединение, сортировка по и т. Д.). Конечно, сервер выполняет большую часть рабочей нагрузки, но меня интересует время, которое проходит между поступлением данных на ПК и моментом, когда данные становятся доступными в приложении.
Нагрузочные тесты состоят из очень маленьких запросов, которые возвращают очень большие наборы данных. Например, я делаю выбираю * из SysTables
, и в этой таблице содержится более 50 000 записей. После получения данных я снова просматриваю результаты (используя while not Q.eof ... Q.next ...
и т. Д.). Я также попытался добавить некоторые вещи в запрос, например order by Val
, где Val
- это поле varchar (100)
.
Вот образец моего тестера нагрузки, цифры в самом низу - средние ...
Так действительно, в чем разница между ними? Я знаю, что OLE очень гибок и поддерживает множество различных движков баз данных, тогда как Native Client специфичен только для SQL Server.Но что еще происходит за кадром? И как это повлияет на то, как Delphi использует эти драйверы?
Здесь конкретно используется ADO через компонент TADOConnection
, а также TADOQuery
.
Я не обязательно ищу или спрашиваю, как улучшить производительность - мне просто нужно знать, в чем разница между драйверами.