Вопрос

Я работаю с Sybase 15 в своем приложении, и есть проблема с производительностью, связанная с вложенными соединениями.У меня есть хранимая процедура, которая выбирает 2 столбца из 2 таблиц и сравнивает равенства более чем 10 столбцов между этими 2 таблицами.Но когда я запускаю эту историю.процесс получения результата занимает 40 минут.Я добавил инструкцию "set merge-join off" в начало моей процедуры, тогда результат займет 22 секунды.но мне нужно еще одно решение без этого.Раньше я использовал sybase 12.5, и не было никаких подобных проблем, и моей процедуре потребовалось 3 минуты для получения результата.

Я сравнил конфигурации сервера с sp_configure между 15 и 12.5, и конфигурации сервера sybase15 (параметры ввода-вывода и конфигурации памяти) больше, чем у сервера sybase12.5.

Информация:системные ресурсы компьютера, расположенного в sybase15, действительно хороши.

Это было полезно?

Решение

Я только что провел 14 часов на работе, устраняя критические проблемы с производительностью, возникшие в результате миграции на Sybase 15 на выходных.

Оптимизатор запросов принял (для нас) некоторые очень странные решения.

Возьмите пример,

select a, b, c from table1, table2, table3 where ...

против

create table #temp (col1 int, col2 int, ... etc)

insert #temp
select a, b, c from table1, table2, table3 where ...

Мы провели первый прогон вовремя и не смогли заставить его принять правильное решение во втором случае, несмотря на обширную переработку.Мы даже разобрали запрос на временные таблицы, но все равно получили необычные результаты.

В конце концов мы прибегли к SET FORCEPLAN ON для некоторых запросов - это после 10 часов работы наших администраторов баз данных и Sybase.Решение также пришло от разработчиков приложений, а не от советов инженеров Sybase.

Поэтому, чтобы сэкономить время, я предлагаю пойти по этому маршруту.

Другие советы

Как и у других, у меня скорее сочувствие, чем реальный ответ!Мы наблюдаем проблему, когда планировщик запросов ASE 15 сильно недооценивает стоимость сканирования таблицы и аналогичным образом переоценивает стоимость использования кластерного индекса.В результате предлагаемым планом является объединение слиянием.Отключение объединений слиянием или установка optgoal allrows_oltp иногда приводит к улучшению плана запроса.Оценочные затраты еще далеки от реальности, но, исключив один вариант из таблицы, планировщик запросов может найти хорошее решение, хотя и с помощью неправильного анализа.

В документах ASE 15 говорится, что у него гораздо более чистый набор алгоритмов, тогда как в планировщике ASE 12 было множество особых случаев.Возможно, особый случай, в котором говорится: «Если у вас есть столбец кластеризованного индекса в объединении, это будет быстрее, чем сканирование таблицы», было бы не такой уж плохой идеей...:(

Sybase фактически переписала механизм запросов для версии 15, а это означает, что запросы, которые выполнялись очень быстро в версии 12.x, могут выполняться намного медленнее в более новой версии, и наоборот.Единственный способ отладить это — сравнить план запроса 12.x с планом запроса 15 и посмотреть, что происходит по-другому.

Все, кого волнует этот вопрос, должны прочитать этот документ:

http://www.sybase.com/files/White_Papers/ASE15-Optimizer-Best-Practices-v1-051209-wp.pdf

В нем есть откровенное предупреждение о переходе с Sybase 12 на Sybase 15.

Цитирует:

...не относитесь к Асе 15 как "просто другого выхода".Как бы нам ни хотелось сказать, что вы могли бы просто обновить и указать своим приложениям на обновленные серверы, глубину и размах изменений в одной из самых фундаментальных областей базы данных - запросе выполнение требует более целенаправленной режим тестирования.Этот документ предназначен для того, чтобы предоставить вам четкие факты и наилучшие методы сокращения этих усилий настолько, насколько это практически возможно.

Далее рассказывается о новом оптимизаторе запросов ASE 15 по отношению к запросам OLTP и DSS (системе поддержки принятия решений).

Однако, там есть хорошие новости:в марте 2009 года в Sybase 15.0.3 был введен режим совместимости.Смотрите следующий документ:

http://www.sybase.com/detail?id=1063556

В этом режиме вам не нужно анализировать запросы, чтобы решить, соответствуют ли они профилям OLTP или DSS.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top