Posts Tagged ‘Ускорение работы базы данных’

О рулезности ODBC

June 28, 2008

Старый, зато надежный

Оно конечно, статья эта более была бы уместна году эдак в 1993-96. Ныне в наш век повсеместного управляемого кода все и забыли что есть код неуправляемый, который работает на порядок-два быстрей. Так что если что-то надо сделать быстро, выбираем неуправляемый код. Если что-то хотите сделать быстро с базой, например – вызов большого количества хранимых процедур, то лучше ODBC вам не найти.

Кто же добрую скотину гонит со двора

В MS SQL, например, появилась новая клиентская либа – MS Native Client. К ней идет и полнофункциональный, самый современный вариант старого доброго ODBC. Так вот. Помимо прочих достоинств он офигительно, непредставимо быстр. OleDb и .Net провайдеры просто отдыхают по сравнению со связкой Win32-NativeClient- ODBC

Преимущества ODBC

  1. Он прост, хоть и кажется сложным. Честное слово, по сравнению с OLEDB – сама простота.
  2. Он аккуратно написан, в отличие от современного софта. Вы можете сами в этом убедиться, запустив программу, использующую ODBC из-под BoundsChecker’а.
  3. Он очень быстр. Загрузка курсора на борт раз эдак в пять быстрей, чем в ADO.
  4. Он поддерживается в самых современных версиях СУБД (хоть бы тот же MS SQL)
  5. Он переносим на LInux (Unix ODBC)  – я пробовал, все замечательно.
  6. Есть специфические фичи – например, пакетирование вызова процедур. Предствавьте, что Вам надо дернуть хранимую процу 1500 раз с разными параметрами. ADO потратит на это 1500 round – trip’ов. ODBC в режиме пакетирования (Column Wise or Row -wize) – только один. Разница по времени офигенная.

Недостатки ODBC

  1. Вызовы громозкие. Данных типа Variant (object) нет. Въезжать по началу сложно.
  2. Чувствителен к последовательности вызовов, как что не по нему – кричит
  3. Обработка ошибок несколько витиевата.

В общем, потратьте немного времени на изучение этого старого надежного интерфейса – пригодиться.