Как я могу улучшить производительность SQLFETCH/SQLFETCHSCROLL Использование Driver 18 ODBC для SQL Server в сценариях вC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу улучшить производительность SQLFETCH/SQLFETCHSCROLL Использование Driver 18 ODBC для SQL Server в сценариях в

Сообщение Anonymous »

У нас есть приложение C ++, которое использует ODBC для подключения к MS SQL Server и Oracle. Мы заметили, что извлечение больших объемов данных становится действительно медленным, когда задержка между клиентом, в которой работает программа, и база данных высока. < /P>
Отказ от ответственности: если я не говорю об этом, я говорю о драйвере ODBC 18 для SQL Server. Измерение времени, которое каждый выберет, приводит меня к выводу, что у драйвера ODBC есть внутренний буфер сборов, и всякий раз, когда этот буфер используется, драйвер получит следующую партию данных из базы данных. Так, например, для одной таблицы я измерил, что примерно каждые 30 -й выборки занимали много времени (задержка + еще больше), в то время как между ними были близки. Поэтому я ищу способ ускорить извлечение больших объемов данных. В целях тестирования я использовал таблицу с 3 столбцами, 1 int и 2 струнами длины 100 и добавил в нее 100 000 рядов. В этой таблице примерно каждые 650 -й выборки вызывали задержку задержки при использовании отдельных избранных. Основные выборки выполняются с использованием SQLFetchScroll с SQL_FETCH_NEXT, поскольку драйвер не соблюдает спецификацию и не выполняет объемные извлечения с SQLFETCH, даже если SQL_ATTR_ROW_BIND_TYPE и SQL_ATTR_ROW_ARRAY_SIZE установлены (драйвер ORACLE Profectly Fetches с множеством Rows с SQLETCH). /> Это заставляет меня поверить, что объемное извлечение по -прежнему использует тот же самый внутренний буфер избирателей и не меняет своего размера для объемного извлечения. Таким образом, объемное извлечение с этим драйвером - это всего лишь какой -то синтаксический сахар, чтобы заполнить несколько переменных одновременно, но ничего не меняет в том, как работает подтяжка под капюшоном. Есть ли способ увеличить размер буфера для выбора и, таким образом, уменьшить количество раз, когда драйвер должен связаться с базой данных по сети? Или что -нибудь еще я могу сделать? И хотя существует уменьшающаяся доходность, увеличение размера с 64 тыс. До 640 тыс. Или 6,4 м снижает время, чтобы получить эти 100 тыс. Рекордов с 28 секунд до 4 соответствующих. 2 секунды в сценарии с примерно 50 мс задержки.

Подробнее здесь: https://stackoverflow.com/questions/795 ... c-driver-1
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Невозможно открыть библиотеку «ODBC Driver 17 для SQL Server»: файл не найден
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Driver 18 ODBC для SQL Server] SSL Provider: [Ошибка: 1416F086]
    Anonymous » » в форуме Php
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • ODBC_CONNECT (): SQL ERROR: [UNIXODBC] [Driver Manager] SQLalloChandle Driver на SQL_Handle_HENV Не удалось, SQL State I
    Anonymous » » в форуме Php
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • ODBC_CONNECT (): SQL ERROR: [UNIXODBC] [Driver Manager] SQLalloChandle Driver на SQL_Handle_HENV Не удалось, SQL State I
    Anonymous » » в форуме Php
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • SQLAlchemy не подключается к SQL Server с помощью драйвера ODBC 18 для SQL Server, но pyodbc делает это.
    Anonymous » » в форуме Python
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»