|
![]() |
#1 |
Участник
|
Цитата:
Цитата:
Цитата:
inventItemLocationSelectLocked |
|
![]() |
#2 |
Administrator
|
Цитата:
Сообщение от gl00mie
![]() В частности, замечено, что его оптимизатор, порой, как-то "своеобразно" подбирает "наиболее подходящий" индекс и строит совершенно дикие планы запроса - возможно, как раз из-за перекоса весов различных параметров, используемых им при оценке стоимости использования того или иного плана.
Цитата:
Сообщение от gl00mie
![]() Интересно, а кто-нить заморачивался тем, чтобы посчитать и соотнести затраты на эти вот исследования, перенос данных, на тот же Оракл, на поиск и наем Oracle DBA (а без него у вас "само собой" ничего нормально не заработает) - к примеру, в сравнении с докупкой ндцати гигов памяти под сервер БД с Ms SQL 2005 x64?..А вы разбирались в причинах блокировок? А то ведь бывают случаи, когда сменой СУБД ничего не решить
Кстати, в оракле - есть хороший анализатор выполняющихся запросов. Мы так нашли почему постоянно виснет разноска. Оракл показал на запрос UPDATE NumberSequenceTable. Нехитрые исследования показали, что проблема в непрерывных номерных сериях. Т.к. освобождение номера (в отличие от выделения) идет не в отдельной транзакции. В результате - мы максимально сняли везде галку "Непрерывная" (ессно убедившись, что это не приводит к трассировкам стека) и увеличили кол-во номеров на предварительное выделение у наиболее востребованных номерных серий (типа ваучера). Я по себе скажу - что в SQL 2000 такого механизма в помине не было (формально блокировок не было). Насчет 2005 - не знаю, но есть ощущение - что в Оракл все равно выдавал больше нужной информации.
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#3 |
Участник
|
Цитата:
Кстати, есть всякие дополнительные нашлепки для SQL админов типа dbArtisan |
|
![]() |
#4 |
Administrator
|
Цитата:
Ну... в отношении доп нашлепок не скажу - но стандартная поставка оракла все равно побогаче будет. Нравится мне его Enterprise Manager с веб-интерфейсом.
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#5 |
MCITP
|
![]() Цитата:
Сообщение от sukhanchik
![]() Сия плюшка существует как я понимаю еще со времен 2.5. Но не зная ее - ее обнаружить - для этого нужна доп инфа со стороны БД. В некоторых случаях сам догадываешься (исследуя код), иногда - старшие товарищи помогают... Либо БД указывает. Для моего тогдашнего уровня знаний - эта доп инфа сильно помогла.
Ну... в отношении доп нашлепок не скажу - но стандартная поставка оракла все равно побогаче будет. Нравится мне его Enterprise Manager с веб-интерфейсом. ![]() А насчёт информации о выполняющихся запросах в Оракле и МССКЛ - тут я так понимаю дело в том, что с сиквелом аксапта работает на уровне курсоров, если так можно выразиться, и в итоге со стороны Studio видно, что выполняются операции с курсором (fetch,например), но не видно что конкретно за запрос висит. Это конечно действительно напрягает и не удобно. С Ораклом как-то проще такие моменты отслеживаются, согласен.
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: sukhanchik (2). |
![]() |
#6 |
MCITP
|
![]() Цитата:
Сообщение от sukhanchik
![]() Цитата:
Сообщение от gl00mie
В частности, замечено, что его оптимизатор, порой, как-то "своеобразно" подбирает "наиболее подходящий" индекс и строит совершенно дикие планы запроса - возможно, как раз из-за перекоса весов различных параметров, используемых им при оценке стоимости использования того или иного плана. ![]() Насколько я понимаю, это всё из-за функциональных индексов, с которым оптимизатор (по крайне мере 9i) временами как-то с трудом справляется, даже при наличии самой полной статистики. Я проводил небольшие "исследования", моделируя одинаковые по сути ситуации, но с участием либо FBI, либо и обычных индексов. В результате было очень заметно, что в случае обычных индексов оптимизатор выбирает отличные оптимальные планы, используя по максимуму всё, что нужно по смыслу. В случае же FBI результаты бывают просто непредсказуемые. ![]() Навскидку помню следующие две проблемные ситуации, хотя их, конечно, больше: (правда данные эффекты я наблюдал на оракле на Винде. есть шанс, что на каком-нить *nix-e он себя и лучше поведёт) - Берётся абсолютно левый индекс, иногда даже в котором (кроме компании конечно) нет ни одного поля из запроса! И начинает по нему сканировать. Со всеми вытекающими по производительности. Приходится в таких ситуациях в Аксапте лечиться конкретным индекс-хинтом. - В ситуации, когда имеем запрос типа select a.. что-то ещё .... [not]exists join b ... join c. Предполагаем, что а соединено с b, а b c с по селективных индексам, которые можно и нужно использовать.. С обычными индексами Оракл бы "пропихнул" нужное условие на таблицу "b" в джоин a+b+c и выполнил бы по индексам нестед лупами с минимальной стоимостью и, соответственно, мгновенной скоростью запроса. С FBI же такую красоту он сделать уже отказывается. Рассматривает джоин b+c как независимое представление, которое и "разрешает" отдельно, обычно hash-джоином, естественно включая фулл-скан на обе таблицы (b & c). Стоит ли говорить о том, как страдает скорость, когда вместо доступа к нескольким строчкам по индексу, оракл начинает сканировать 2 большие таблицы. Приходится либо переписывать запросы, если это возможно и допустимо, либо "забивать". ![]()
__________________
Zhirenkov Vitaly |
|
![]() |
#7 |
Участник
|
Цитата:
PS. Лучше действительно в отдельной теме. |
|