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