В процессе попытки помочь группе разработчиков приложений решить проблемы с производительностью на сервере SQL 2000 (из множество приложений Java на отдельных серверах приложений), я запустил трассировку SQL и обнаружил, что все вызовы базы данных заполнены операторами курсора сервера API (sp_cursorprepexec, sp_cursorfetch, sp_cursorclose).
Похоже, они определяют некоторые свойства строки подключения, которые заставляют использовать курсоры на стороне сервера, извлекая только 128 строк данных за раз: свойства установлены на любое другое чем по умолчанию, OLE DB поставщик для SQL Server и SQL Серверный драйвер ODBC использует сервер API курсоры вместо результата по умолчанию наборы. Каждый вызов функции API который выбирает строки, генерирует туда и обратно на сервер, чтобы получить строк из курсора сервера API.
UPDATE : рассматриваемая строка подключения - это параметр строки подключения JDBC, selectMethod = cursor
(который включает курсоры на стороне сервера, которые мы обсуждали выше), а не альтернатива selectMethod = direct
. Они использовали selectMethod = cursor
в качестве стандартной строки подключения для всех приложений.
С моей точки зрения администратора баз данных это просто раздражает (это загромождает трассировку бесполезным мусором) и (я бы предположил) приводит к множеству дополнительных циклов обмена между приложением и SQL-сервером, что снижает общую производительность.
Они, по-видимому, провели тестовое изменение (только одно из примерно 60 различных подключений приложений) на selectMethod = direct
, но возникли некоторые проблемы (подробностей у меня нет) и обеспокоены нарушением работы приложения.
Итак, мои вопросы:
selectMethod = cursor
снизить производительность приложения, как я пытался спорить? (за счет увеличения количества циклов приема-передачи, необходимого на сервере SQL, который уже имеет очень большое количество запросов в секунду) selectMethod =
прозрачным для приложения параметром соединения JDBC? Может ли это сломать их приложение, если мы его изменим? курсор
или прямой
? Также перекрестно размещен в SF .
EDIT : Получены актуальные технические подробности, которые требуют значительного редактирования заголовка, вопроса и тегов.
РЕДАКТИРОВАТЬ : добавлено вознаграждение. Также добавлено вознаграждение за вопрос SF (этот вопрос сосредоточен на поведении приложения, вопрос SF сосредоточен на производительности SQL). Спасибо !! У меня небольшой вопрос. Допустим, у меня есть таблица HTML, подобная следующей:
value | & ...
value | text |
В приведенном выше примере я знаю идентификатор строки и хочу изменить значение второго столбца строки с этим конкретным идентификатором.
Мне нужен результат вроде следующее:
value
ChangedText
Итак, мой вопрос: как я могу выбрать 2 nd столбец первой строки с заданным идентификатором, чтобы изменить значение?