Конференция "Базы" » TADODataSet.Open() - долго открывается [MSSQL]
 
  • Jetus (17.09.12 16:24) [0]
    MS SQL

    Запрос на выборку на сервере отрабатывает за 2 секунды, а тот же запрос из ADODataSet-а - более 30 секунд (на той же машине).

    В чем может быть причина?
  • Anatoly Podgoretsky © (17.09.12 19:28) [1]
    > Jetus  (17.09.2012 16:24:00)  [0]

    Причин может быть много, от разницы в настройка, до времени извлечения
    данных с сервера, включая антивирус
  • Anatoly Podgoretsky © (17.09.12 19:31) [2]
    > Jetus  (17.09.2012 16:24:00)  [0]

    Инструмент для поиска SQL Server Profiler, Performance Monitor
  • sniknik © (17.09.12 20:29) [3]
    > от разницы в настройка, до времени извлечения данных с сервера
    скорее погрешность вычисления/понимания... судя по "емкости" описания.
    ставлю на то, что "на сервере" это не в его программе которая выполняет с серверным курсором, а "из ADODataSet-а"  естественно с клиентским, по умолчанию.
  • Jetus (18.09.12 09:36) [4]
    2 sniknik:
    "на сервере" - это выполнение скрипта из Management Studio.
    "из ADODataSet-а" - естественно на клиенте, но клиентская программа запущена на той же машине.

    2 Anatoly Podgoretsky: как мне воспользоваться SQL Server Profiler в данной ситуации? Идет выполнение хранимой процедуры, в профайлере строка типа "EXEC ...." Что оно мне даст?
  • Anatoly Podgoretsky © (18.09.12 10:04) [5]
    > Jetus  (18.09.2012 09:36:04)  [4]

    Судя по всему тебе оно ничего не даст.
  • AV © (18.09.12 10:19) [6]
    Прямо вот только выполнение запроса? И никаких иных телодвижений не производится?
    Всегда 2 vs 30? Сколько раз пробовалось?
  • sniknik © (18.09.12 10:21) [7]
    > но клиентская программа запущена на той же машине.
    "курсорам" на это наплевать.
  • Jetus (18.09.12 11:33) [8]

    > Прямо вот только выполнение запроса? И никаких иных телодвижений
    > не производится?
    > Всегда 2 vs 30? Сколько раз пробовалось?


    Не производиться. Ставлю бряк на ADODataSet.Open() и засекаю время.
    Не всегда. Бывает 2 vs 30, бывает 2 vs 34, 2 vs 33
  • Плохиш © (18.09.12 11:50) [9]
    Перед ADODataSet.Open() поставить ADODataSet.DisableControls() и ещё раз замерить время.
  • AV © (18.09.12 12:13) [10]

    > поставить ADODataSet.DisableControls() и ещё раз замерить
    > время.

    это для перебора хорошо
    хотя... можно и попробавать, все-таки думается, что
    иных телодвижений все же производится
    если да - то поможет
  • Ega23 © (18.09.12 13:31) [11]

    > это для перебора хорошо


    Как оказывается - не только для перебора.
  • AV © (18.09.12 13:53) [12]
    имеешь ввиду OnXXX всякие?
  • Ega23 © (18.09.12 14:09) [13]

    > имеешь ввиду OnXXX всякие?


    Даже если ни одного DataSource не подключено, накладные расходы у меня уменьшились на порядок. На DM.net где-то ветка валяется в архиве, примерно середина 2008 года.
  • AV © (18.09.12 14:32) [14]

    > Даже если ни одного DataSource не подключено

    про это знаю. Там (в ADO) всегда идет проверка, которую DisableControls отключает

    Но не помню, что бы она была в Open. Она только при смене записи, вроде
  • Ega23 © (18.09.12 19:47) [15]

    > Но не помню, что бы она была в Open.

    DataSource.ActiveChanged как минимум.
    Впрочем, в данном конкретном топике проблема с большой долей вероятности не в DisableConrols, это я просто уточнение на [10] дал.
 
Конференция "Базы" » TADODataSet.Open() - долго открывается [MSSQL]
Есть новые Нет новых   [119503   +126][b:0][p:0]