|
|
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Проблема вероятно противоположная обычной. Оракл на сервере отказывается загружать процессор выше 25% Любой тяжелый запрос не может нагрузить процессор, сижу по 30 минут и жду выполнения запроса при этом загрузка ЦП в диспетчере задач не поднимается выше 25%. такое ощущение что где-то жёстко прописана эта планка. сервер на базе xeon e5606, физически установлен один из двух возможных процессоров. тоесть в наличии имеется 4 ядра память 24 Гб ось 2008 R2 Oracle Database 11g Release 11.2.0.1.0 - 64bit объём базы слегка меньше 100 Гб Куда копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2017, 20:22 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, запусти еще 10 запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2017, 20:51 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, 100%/4=? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2017, 22:14 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Vadim Lejnin, так и что делать? есть варианты как-то заставить оракл использовать несколько ядер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2017, 23:11 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
пара ллель, если запустить два клиента и в каждом клиенте запустить что-то тяжёлое, то суммарная загрузка выше 25%. четырьмя клиентами поднял суммарную загрузку под 70% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2017, 23:17 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
на сервере крутится Global-EAM, система управления графиками работ. я пытаюсь понять, это изначальная база данных такая, что она не будет работать сразу на всех ядрах, или это сервер неправильно сконфигурирован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2017, 23:23 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypПроблема вероятно противоположная обычной. Оракл на сервере отказывается загружать процессор выше 25% Любой тяжелый запрос не может нагрузить процессор, сижу по 30 минут и жду выполнения запроса при этом загрузка ЦП в диспетчере задач не поднимается выше 25%. такое ощущение что где-то жёстко прописана эта планка. сервер на базе xeon e5606, физически установлен один из двух возможных процессоров. тоесть в наличии имеется 4 ядра память 24 Гб ось 2008 R2 Oracle Database 11g Release 11.2.0.1.0 - 64bit объём базы слегка меньше 100 Гб Куда копать? Копать в сторону от процесора . Очевидно что 30 минут ждешь ты не процессор а что то другое, чтение скорее всего . План запроса посмотри же . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2017, 00:04 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
или Viewing Database Resource Manager Configuration and Status , что маловероятно . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2017, 00:07 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
XE ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2017, 01:17 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
уже спрашивали про нагрузку проца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2017, 08:24 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypна сервере крутится Global-EAM, система управления графиками работ Обратиться в службу поддержки данной системы. Вроде же логично? Ну или решать проблему самому lonely_myp...сижу по 30 минут и жду выполнения запроса ... Куда копать? Тут как всегда, 2-а решения. 1) Аппаратное все дело в скорости электронов они просто медленно в процессоре двигаются нужно купить линейный ускоритель и запитать компьютер от него - более быстрые электроны, быстрее выполняются запросы странно, что еще производители серверов и источников питания этот рынок не освоили ((( 2) Программное, нужно настроить Oracle в файле init.ora есть недокументированный параметр __fast=true нужно его включить. К сожалению, его название от версии к версии и от компьютера к компьютеру меняется ((( Т.ч. может потребоваться пригласить специалиста, который сможет выяснить, как данный параметр точно называется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2017, 10:02 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypна сервере крутится Global-EAM, система управления графиками работ. я пытаюсь понять, это изначальная база данных такая, что она не будет работать сразу на всех ядрах, или это сервер неправильно сконфигурирован. 25% - нагрузка одного ядра или всей системы? Если нужно быстро выполнить один запрос, используя все ресурсы компа, и узким местом является именно CPU (что далеко не факт, нужно смотреть план и ожидания запроса), то некоторые операторы можно распараллелить, за это отвечает "parallel query option", но данная опция входит только Oracle Enterprise Edition (У Вас какая лицензия?) Что решить эти задачи, нужны знания так что предлагаю решать задачи по мере поступления: 1) Определить чем занимается система (ключевые слова: AWR report (EE) или utlbstat/utlestat (SE)) 2) Получить план запроса и посмотреть возможна ли оптимизация 3) Принять решение, нужно ли использовать PQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2017, 10:34 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevОбратиться в службу поддержки данной системы. Вроде же логично?вполне разработчик сказал что наша БД выросла раз в 10 больше чем они могли представить. поэтому они согласны с тем что всё может тормозить но ничем помочь не могут, никто не рассчитывал на такой объём данных. мы единственный клиент с таким объёмом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 11:42 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Vadim Lejnin25% - нагрузка одного ядра или всей системы? загрузка всей системы постоянно 25%, а по ядрам загрузка разная и постоянно прыгает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 12:15 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Диск у вас дрищевый значит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 12:22 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypVadim Lejnin25% - нагрузка одного ядра или всей системы? загрузка всей системы постоянно 25%, а по ядрам загрузка разная и постоянно прыгает. не верю: 20500541 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 14:12 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Vadim Lejninlonely_mypзагрузка всей системы постоянно 25%, а по ядрам загрузка разная и постоянно прыгает.не верю:А с чего бы это процессу, потребляющему 100% ядра, закрепляться за одним ядром? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 14:20 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Дерзкий ДжоинДиск у вас дрищевый значит. был, очередь изредка выше 1 была, поставили SSD, очередь диска около нуля, на глаз разницы не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 17:05 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
На картинке выше - результат работы 3х минутного селекта из базы. общая загрузка ровно 25% все 3 минуты страдания, после выполнения падает в район нуля. я был бы супер рад если бы там была загрузка 100% и запрос длился 45 секунд. но где-то явно проблема (помимо генетических) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 17:19 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, alter table xxx parallel 8; alter system set parallel_max_servers=8; alter system set parallel_servers_target=8; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 17:48 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypя был бы супер рад если бы там была загрузка 100% и запрос длился 45 секунд. но где-то явно проблема (помимо генетических)В последнем ты, скорее всего, заблуждаешься. Не понимая базовых вещей. И, зачем-то, распускаешь слюни в форум. Не имея возможности включить мозг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 20:55 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, Пока не покажешь отчет oracle что там у тебя происходит, гадать бесполезно Поверим что ты не разобрался из-за неопытности (Но прочитать что такое SMP Симметричная мультипроцессорность — Википедия все равно придется) Для тебя важно, что Oracle - продукт изначально многопользовательский, и каждый запрос выполняет ровно один процесс, чтобы обработать как можно больше пользователей (если не указано другое) Получить отчет о здоровье Oracle: Если у тебя Oracle EE, можешь попробовать получить отчет через sql developer (он бесплатный) Нужно только зарегистрироваться на oracle.com Качаешь вместе с JDK (так проще устанавливать) Вкладка DBA Добавляешь Соединение Perfomance Automatic Diagnostic Monitor -> ADDM Report - Save report И AWR - Но для одиночного запуска получить адекватную информацию трудно Поэтому перед запуском Perfomance -> snapshot -> правая кнопка мыши -> create snapshot Запуск select Perfomance -> snapshot -> правая кнопка мыши -> create snapshot AWR -> выбираешь два последних Start ID - End Id Кнопка Generate Report (Зеленый треуголник) или Ctrl-G Save Report (дискетка) Полученные файлы (не screenshot) пакуешь и прикладываешь получаешь отчет Если Oracle SE ( или XE) то Код: plsql 1. 2. Из другой сессии запускаешь свой отчет По окончанию в первой сессии: Код: plsql 1. Результат report.txt пакуешь и прикладываешь сюда Это как в больнице, пока кровь/мочу не сдашь, болезнь точно не определят. Либо обращайся к экстрасенсам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 21:53 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Vadim Lejnin, Готово =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2017, 21:59 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, standard edition, запрос нагружает одно ядро из четырех, итого 25%. так и должно быть. один запрос в тории мог быть распараллелен, если были бы у таблиц были бы партиции и EE edition. Лучше смотри что за план у запроса, что он по 30 минут работает, база крошечная, в tablespace users 45G, явно кривой план запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 07:34 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, Отчет уже прокомментировали Oracle честно лопатит, то что Вы попросили, дисковых ожиданий нет, загружен только процессор То что (возможно) не оптимально, то у Вас: 1) Статистика для cost-base собрана и актуальна? 2) Версия сервера сырая и не пропатчена 3) "грамотно" написанный простейший запрос, может полностью загрузить самый мощный сервер Осталось показать запрос и explain plan ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 10:31 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
запрос... вот "маленький" запрос на 3 минуты. выполняется при открытии окна с перечнем бригад и графиком работ за выбранный период(месяц). то есть юзер нажимает кнопку "открыть" и может идти курить, а если за 3 месяца открыть, то может ещё в магазин сбегать. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. function GetManHour Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. function GetWorks Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 12:16 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, ну да, студенческий дизайн. для каждого сотрдуника, на каждый день, долбишь двумя функциями, которые в свою очередь почти наверняка тоже долбят nested loop. 3 минуты еще по божески с таким дизайном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 12:55 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
подобных запросов в базе множество в разных местах, есть шаблон запроса и по необходимости из шаблонов собирается один эпический запрос. http://www.global-eam.ru/ "система, обобщающая лучшие мировые и отечественные практики ТОиP" ответ разработчика я приводил, им искренне жаль вопрос стоит как имея вот это вот всё, ускориться? я например могу добавить ядер, расшириться с 4 до 12 ядер. но что толку, если на каждого юзера одно ядро :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 13:13 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!lonely_myp, ну да, студенческий дизайн. для каждого сотрдуника, на каждый день, долбишь двумя функциями, которые в свою очередь почти наверняка тоже долбят nested loop. 3 минуты еще по божески с таким дизайном. Лично я особого криминала не вижу Функции в select листе, т.ч. если там честный nested loop, а не какие нибудь hash join'ы и никто не пытается сделать полный фетч всего результата на клиента - то все будет нормально. Конечно, красивым кодом это не назовешь, но и обзывать говнокодом, не зная как предполагалось функционирование приложения целиком - я бы тоже не стал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 13:20 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypподобных запросов в базе множество в разных местах, есть шаблон запроса и по необходимости из шаблонов собирается один эпический запрос. http://www.global-eam.ru/ "система, обобщающая лучшие мировые и отечественные практики ТОиP" ответ разработчика я приводил, им искренне жаль вопрос стоит как имея вот это вот всё, ускориться? я например могу добавить ядер, расшириться с 4 до 12 ядер. но что толку, если на каждого юзера одно ядро :( посмотри что за индекс на EAM_PlanRepairMAP.dbegin в функции фигурирует trunc(a.dbegin), если индекс не FBI то это заставляет фуллсканить EAM_PlanRepairMAP. по хорошему для начала надо пересобрать статистику (exec DBMS_STATS.gather_schema_stats('schema_name') например) и смотреть план, что там эти функции такого cpu интенсив делают. апгрейд железа не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 14:22 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Вот я, честно говоря, никаким AWR и прочем премудростям не обучен Т.ч. делаю по простому, запускаю PL/SQL developer и смотрю current (last) statement в сессии. Тот который там мелькает чаще всего - копи-пастю. По закону вероятности, скопи-пастить удается ровно тот селект, который занимает больше всего времени. Разбираюсь с ним, смотрю его план. Потом копи-пастю следующий.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 17:47 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!... и смотреть план, что там эти функции такого cpu интенсив делают. апгрейд железа не поможет. +100500 На самом деле, чисто визуально все не выглядит "сильно запущенным". Достаточно элементарные select'ы. Тут два подозрения: 1) Клиническое и не лечится. Клиентский софт всегда фетчит все записи из результата, вот здесь может быть печалька. Если данных много, а интерфейс сделан программистами страдающими "hibernate головного мозга" и по принципу "пагинация делается двумя строчками" ( C ), то вполне возможно, что на экран показывается 20-40 записей, а фетчится и обрабатывается чуть ли не вся база Тут только лечить "hibernate головного мозга" у разработчиков, по методу доктора Жозе́ф Игн́ас Гильоте́на (написание взято из вики). 2) Все не настолько запущено и затыки именно на стороне сервера. Слетели (не хватает) индексы, кривой план... тут мне кажется уже можно пытаться как-то это дело лечить, разбираться и оптимизировать. Конечно, было бы оптимально, если бы разработчики были бы готовы прислушаться к рекомендациям и переписать запросы в своем приложение. Запрос на 3-и таблички с тремя подзапросами внутри - выглядит сильно по детски. Ну и лично я, глядя на запросы, даже могу сходу предложить изменение структуры (создание индексов), которые как минимум в 2-4 раза скорость повысят, а может и больше. Только, конечно, желательно все же систему видеть. AFAIK Куча мелких запросов, которые оперируют 2-3 полями. Я бы все эти поля (и из where и из select list'а) включил в индексы. Что бы при обработке запроса вообще избавиться от обращения к основной таблице (вся информация из индекса). Больно много в статистике "table fetch by rowid". Сталкивался с похожей ситуацией (в системе Oracle Customer Care & Billing), где в таблице (CI_FI) были данные по клиентам + дата. И агрегировали данные по клиенту. Получалась полная фигня. Данные по одному клиенту оказывались "размазанными" по всей таблице, фактически таблица получалась жутко фрагментированная. А в отсортированном индексе, все данные по клиенту рядом. Скорость агрегирования возросла в десяток раз. Хотя пришлось городить достаточно жутко выглядящие индексы. Пытались использовать index organized (cluster) table, но "не взлетело". Просто сделали очень широкие индексы. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2017, 19:34 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.! посмотри что за индекс на EAM_PlanRepairMAP.dbegin в функции фигурирует trunc(a.dbegin), если индекс не FBI то это заставляет фуллсканить EAM_PlanRepairMAP. посмотрел, тип NORMAL Yo.!по хорошему для начала надо пересобрать статистику (exec DBMS_STATS.gather_schema_stats('schema_name') например) запустил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 13:03 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevчто на экран показывается 20-40 записей, а фетчится и обрабатывается чуть ли не вся база при открытии окна программы например с перечнем оборудования происходит селект на несколько тыщ записей, результат кэшируется в клиенте. при этом на экран юзера влезает максимум первые 20-30 строчек из всего перечня. зато работает сортировка и фильтры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 13:10 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypYo.!посмотри что за индекс на EAM_PlanRepairMAP.dbegin в функции фигурирует trunc(a.dbegin), если индекс не FBI то это заставляет фуллсканить EAM_PlanRepairMAP. посмотрел, тип NORMAL значит функции фулсканят из-за "and trunc(a.dbegin) = dpDate", если бы индекс был по TRUNC(dbegin) то было бы FUNCTION-BASED NORMAL можно попробовать сделать FBI индекс Код: plsql 1. будет у вас два индекса, чуток тормозов при инсерте может дабавить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 14:47 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Может у него там ограничение висит dbegin=trunc(dbegin) Тогда вполне себе сможет подхватиться и обычный индекс по dbegin ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 14:59 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!, два индекса не даёт сделать, ORA-01408: such column list already indexed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 15:17 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровМожет у него там ограничение висит dbegin=trunc(dbegin) Тогда вполне себе сможет подхватиться и обычный индекс по dbegin может, но похоже не наш случай ... lonely_mypYo.!, два индекса не даёт сделать, ORA-01408: such column list already indexed значит FBI индекс с trunc() уже существует. раз догадались повесить FBI индекс, то совсем детских ошибок вероятно не наделали, надо видеть SQL план, тогда будет диагноз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 16:02 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!, я посмотрел список всех индексов, такого FB индекса там точно нет я так понимаю что не даёт создать второй индекс, так как уже есть обычный индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 17:34 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypя посмотрел список всех индексов, такого FB индекса там точно нет я так понимаю что не даёт создать второй индекс, так как уже есть обычный индекс. не должно, помню я так в 9 или 10 версии выкручивался, только что проверил в 11.2 мне позволил. смотри все индексы так select * from all_indexes where table_name = 'EAM_PLANREPAIRMAP' а вообще давай планы тех запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 18:11 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypпри открытии окна программы например с перечнем оборудования происходит селект на несколько тыщ записей, результат кэшируется в клиенте. при этом на экран юзера влезает максимум первые 20-30 строчек из всего перечня. зато работает сортировка и фильтры. Ну хоть кэшируют и потом сами делают сортировку. А вот фильтры - должна делать БД Тогда, отправить поздравительную телеграмму разработчиков как сделал Кот Матроскин "Шарик, ты балбес" То, как они пишут SELECT'ы может быть и допустимо, но не в ситуации "все фетчим, потом сами сортируем и фильтруем". Их подход "не взлетит". Или как минимум писать нормально запросы или БД должна заниматься тем, чем она и должна занимать: обработкой данных, фильтрацией и сортировкой, а клиент тем, чем должен заниматься, отображением данных. Последнее, скорее всего у них вызовет жуткий батхерд и срыв шаблонов: поэтому реально можно предложить только первый способ. Нормально писать SELECT'а... Поскольку, те расчеты которые они хотят выполнять, одним SELECT'ом делать не удобно, как вариант: временные таблицы, заполнять данные в PL/SQL процедуре, вызывать процедуру + SELECT * из временной таблице. Их портянка из SELECT + PL/SQL функции... IMHO "не взлетит"... Но что бы говорить предметно, нужно знать систему целиком Пока, судя по тому, что видно: нарезать индексы. Поскольку есть код и пакетах, можно попытаться и сами ф-ции оптимизировать. На мой взгляд, 2-3 кратного ускорения достигнуть можно. База не большая (вроде она у Вас вся в память поместилась), т.ч. расход места под индексы вряд ли будет существенным фактором. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 19:20 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!можно попробовать сделать FBI индекс Код: plsql 1. .... Нафига? Для какого запроса? Индексы нужно строить под запросы, т.ч. начинать вот ровно с этого: Yo.!а вообще давай планы тех запросов. +тут полностью плюсуюсь Если мы говорим про Вот этот запрос (подзапрос): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. То лично я бы: 1) его бы переписал и вместо count(*) поставил count(1) 2) нарезал бы индекс на EAM_PlanRepairMAP idobject + trunc(a.dbegin) + idtyperepair а не индекс по trunc() без idobject ! смысла в раздельных индексах по двум колонкам нет никакого ! AFAIK 3) нарезал бы индекс на Eam_ShiftrepairMAP idresponsible + idplanrepair Не уверен, что нигде не ошибся. Хорошо все же иметь доступ к БД и к системе. Но я бы думал в таком направлении. Для запросов такого вида (к одной-двум колонкам), вообще за счет индексов убрать обращение к таблицам. IMHO & AFAIK А вообще, озвучить бюджет. Дать доступ к системе или оплатить командировку. И можно говорить что-то предметно ))) А так... лечение экстрасенсами по фотографии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2017, 19:30 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
вот этот план имеется в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 15:27 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
GetManHour ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 15:43 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
GetWorks ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 15:48 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Насчет первого ничего сказать не могу Последний и предпоследний - полный шлак. Индексов нет. От сочетания слов "совсем нет". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 16:44 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Разработчикам - ссылку на данную тему. А в данную тему - фотки разработчиков. Страна должна знать своих героев. Ну и тем, кто в БД для этой системы нарезал индексы, срочно читать тему: http://www.sql.ru/forum/941371/studentam-zhelaushhim-pomoshhi Мое такое мнение. Если я не прав, пусть меня кто нибудь поправит. p.s. Про первый план где сплошной Full table scan ничего говорить не буду ))). Тут часто утверждают, что full table scan и hash join это хорошо, и вообще "Oracle умный, ему виднее" ))) Не хожу вступать в полемику по этому поводу ))) Но предпоследний и последний - это шлак, за гранью добра и зла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 16:57 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
CREATE INDEX EAM_PlanRepairMAP_z1 ON EAM_PlanRepairMAP ( idobject, trunc(dbegin) ); CREATE INDEX Eam_ShiftrepairMAP_z2 ON Eam_ShiftrepairMAP ( idresponsible, idplanrepair ); CREATE INDEX Eam_Typerepair_z3 ON Eam_Typerepair ON (id); Странно это, что бы не было по ID индекса на Eam_Typerepair... Странно все как-то. Очень странно ((( Или действительно все так запущенно или "если вдруг увидел люк, не волнуйся это глюк" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 17:17 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypвот этот план имеется в виду? да, первый. покажи полностью. ты все интересное обрезал но уже ясно, что там в цикле на каждого работягу, на каждый день долбит фуллсканами. вместо железа наймите на пару часов ораклойда, 100% можно затюнить без вмешательства в код программки Leonid KudryavtsevМое такое мнение. Если я не прав, пусть меня кто нибудь поправит. а я теперь не вижу совсем явного криминала. основные индексы видно есть, IDX_EAM_PLANREPAIRM_DTRBEGIN явно FBI индекс с TRUNC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 17:20 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevСтранно это, что бы не было по ID индекса на Eam_Typerepair... Странно все как-то. Очень странно ((( Или действительно все так запущенно или "если вдруг увидел люк, не волнуйся это глюк" не факт. там табличка 1.5 мб, 100% закеширована. обращаться по индексу к такой мелкой может быть просто дороже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 17:25 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!...а я теперь не вижу совсем явного криминала. основные индексы видно есть, IDX_EAM_PLANREPAIRM_DTRBEGIN явно FBI индекс с TRUNC БессовкаХотелось бы сказать много и нецензурно, но так как этого делать нельзя- соответствующие термины Вы можете добавить сами ,во время чтения,согласно Вашему воображению Вот зачем там индекс с Trunc ??? В условие where, что написано ??? Так и индекс такой должен быть, как минимум из ДВУХ полей. Два индекса по одному полю, это совсем НЕ ТОЖЕ САМОЕ, что индекс по двум полям. IMHO & AFAIK А вообще, конечно, что бы что-то советовать, нужно видеть систему и иметь доступ к экране и клавиатуре. Хотя бы по скайпу или team viewer'У. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 17:28 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!...не факт. там табличка 1.5 мб, 100% закеширована. обращаться по индексу к такой мелкой может быть просто дороже По опыту из Oracle 8.1.5, даже на крохотных табличках (а не 1.5 mb) с парой полей и парой десятков (меньше сотни) записей, индекс творит чудеса )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 17:31 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Там HASH JOIN быть не должно. Как факт не должно. Тупые Nested Loop'ы Я бы, даже, раз есть проблема со скоростью, не остановился бы пока даже table access из плана не убрал бы. Таблички маленькие, запросы простые, проблемы со скоростью - все по индексам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 17:34 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevТак и индекс такой должен быть, как минимум из ДВУХ полей. Два индекса по одному полю, это совсем НЕ ТОЖЕ САМОЕ, что индекс по двум полям. я ничего не знаю о системе, может там мульоны таких вот функций, плодить индексы заточенные на две функции из миллиона тоже может быть не лучшее решение. ну и составной индекс по двум полям в лучшем случае лишь слегка ускорит какую-то часть, а тут явно провал в 2-3 порядка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 17:49 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!я ничего не знаю о системе, может там мульоны таких вот функций, плодить индексы заточенные на две функции из миллиона тоже может быть не лучшее решение. Полностью согласен Поэтому я уже третье сообщение заканчиваю словами "нужно видеть систему" Но кроме как плодить индексы под запросы - ничего не остается. Код системы не поменяешь. А пара лишних индексов, может и не есть хорошо, но при размере БД топик стартера, и не так уж плохо. IMHO Yo.!...в лучшем случае лишь слегка ускорит какую-то часть... СЛЕГКА ???? Если привести в разумный вид, а не этот ужас, который сейчас в плане, я думаю в 5-50 раз ускориться "легко" Т.е. если сейчас "вот маленький запрос на 3 минуты" потребляет 25 % CPU, то будет 10-15 секунд при 10% CPU. Как-то так. "Быстро" при таком дизайне системы - не будет. Но судя по приведенным планам, сделать более-менее терпимо - вполне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2017, 18:03 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, Я так понял селекты переписать нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 00:25 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevCREATE INDEX EAM_PlanRepairMAP_z1 ON EAM_PlanRepairMAP ( idobject, trunc(dbegin) ); CREATE INDEX Eam_ShiftrepairMAP_z2 ON Eam_ShiftrepairMAP ( idresponsible, idplanrepair ); снизили время запроса с 3 минут до 2:22 =) третий индекс не создался, CREATE INDEX Eam_Typerepair_z3 ON Eam_Typerepair ON (id); ORA-00906: missing left parenthesis я попробовал CREATE INDEX Eam_Typerepairmap_z3 ON Eam_Typerepairmap (IDOBJECT); но он уже есть ORA-01408: such column list already indexed планы запросов, изменились, у GetManHour стоимость ЦПУ упала вдвое, а у GetWorks ЦПУ стоимость мало изменилась. план GetManHour : ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:35 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
план GetWorks: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:36 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
MaximaXXL, переписать можно, доступ к конфигурации нам предоставлен, но на данный момент смысла в этом мало, т.к. я у нас самый умный оракловщик. Leonid Kudryavtsev"нужно видеть систему" я над этим думаю, по идее я могу выставить демо версию базы которую присылал разработчик, но там нет такого объёма данных чтобы ощутить адские тормоза и оценить принимаемые меры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:47 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevНо кроме как плодить индексы под запросы - ничего не остается. Код системы не поменяешь.поменять можно, просто некому))) я щас в процессе осознавания как пользоваться планом запроса, конечно это не единственный запрос который можно ускорить. если я разберусь с планами и индексами уже что-то, тогда пробегусь по остальным часто используемым операциям в программе и хотябы слегка её ускорю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:51 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypснизили время запроса с 3 минут до 2:22 =) ну это ожидаемо. range scan по двум индексам в лучшем случае в двое медленее, чем с одного составного, а это лишь часть запроса, который явно можно в 50 раз затюнить. покажи план первого запроса, а не составных функций. там ответы. только найди как в текст этот план вытащить текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:52 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp...планы запросов, изменились, у GetManHour стоимость ЦПУ упала вдвое... Это все не то (((, там никакой порнографии с Hash join быть не должно, ну или я что-то не понимаю. Скайп есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 18:02 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!в текст этот план вытащить Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 16:38 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypMaximaXXL, переписать можно, доступ к конфигурации нам предоставлен, но на данный момент смысла в этом мало, т.к. я у нас самый умный оракловщик. Давно я такой ... не страдал А попробуй вот так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 19:05 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Как Вы братцы круто взялись. Я бы сначала с маленьких, с простых запросов начал ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 19:26 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Да какая крутость, для каждой строчки запускать 31 запрос (31 проход) да ще и поле транкейтить (а там может быть мульен записей) вместо разброса с и по. Индексы по транкейченому полю как по мне - лишнее. Как по мне, сразу переписать в 1 запрос тут делов на 30 мин. Только бы понять на сколько ускорился/замедлился. Без базы, в оффлайне (вспоминаю институт и програмки на бумажке) ускорять что-то - сущий ад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 20:13 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
MaximaXXLКак по мне, сразу переписать в 1 запрос тут делов на 30 мин. у меня есть смутное подозрение, что данный запрос авто-генеренный MaximaXXLБез базы, в оффлайне (вспоминаю институт и програмки на бумажке) ускорять что-то - сущий ад аналогичного мнения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2017, 23:29 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, Вот это должно работать ... Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. хотя я и не понимаю что это такое Код: plsql 1. и зачем передавать знак "-" а потом его реплейсить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 09:05 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev данный запрос авто-генеренныйда, собирается на нужное число дней. более общий вид Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 12:59 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Взять и переписать. Система не так уж и плоха, как кажется на первый взгляд. Функции, генерация кода тоже на сторед-процедурах... Т.ч., в принципе, все понятно. Взять и переписать. Те куски, которые работают анормально большое кол-во времени. Малой кровью, ф-ции GetAllManHour, GetAllQty. Делов на пару часов, если иметь доступ хотя бы к экрану компьютера (скайп, TeamViewer). Будет быстрее раз в 5-50 Чуть побольше, подумать и переделать всю эту сборки, как предлагает MaximaXXL. Отказаться от ф-ций и все данные доставать одним запросом (или With...select... ). Это уже посложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 13:24 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, хм ... я уже и забыл как план с UDF выглядит, думал на картинках план обрезан... не думаю что переписывать чужой sql хорошая идея, по хорошему надо докопаться чего сбивает оптимизатор. все таблички выглядят крошечными, может это как-то сбивает его с толку. для начала я бы просто посмотрел с хинтом /*+ RULE */ , он должен nested loop по индексам врубить Код: sql 1. 2. 3. если хинт RULE даст ожидаемые 10-30 сек, попробовал бы участвующие таблицы ALTER TABLE ... CACHE; в теории это может от фулскана избавить. плюс пересобрал бы системную статистику, может у оптимизатора неверные данные о скорости дисков/процессора exec dbms_stats.gather_system_stats(gathering_mode=>'start') ; тут часик нагрузки ... exec dbms_stats.gather_system_stats(gathering_mode=>'stop') ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 10:27 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!...по хорошему надо докопаться чего сбивает оптимизатор... IMHO бесконечно вложенные один в другой подзапросы что бы добавить hint, я так подозреваю, на SE все равно придется код запроса править У авторов запросов очень не традиционное мышление. Очень изощренный способ с помощью вложенного подзапроса, group by и join изобразить in (select...) IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 14:21 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypLeonid Kudryavtsev данный запрос авто-генеренныйда, собирается на нужное число дней. более общий вид Вы бы не могли написать подходит ли Вам скорость/загрузка для предложенного мной селекта из 20551953 сообщения, сделать его автогенерируемым, не составит большого труда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 19:42 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevчто бы добавить hint, я так подозреваю, на SE все равно придется код запроса править не, хинт зашивать в код я не предлагаю. хинт чисто посмотреть даст ли nested loop ожидаемые 10-30 секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 20:08 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!если хинт RULE даст ожидаемые 10-30 сек Yo.!не, хинт зашивать в код я не предлагаю. хинт чисто посмотреть даст ли nested loop ожидаемые 10-30 секунд. Ну RULE и nested loop как бы вещи достаточно не связанные. Вангую, что при RULE там тоже NL не будет тогда надо ORDERED и USE_NL ==> но тогда как минимум нужно подзапросы местами переставлять ==> тогда уж посмотреть, какой будет план и скорость с нормальными запросами с in и exists ==> тогда уж посмотреть и попытаться понять, что за информация в табличках, что лучше in или exists исходя из логики был бы доступ к экрану или, на худой конец, skype - делов на полчаса (или несколько часов). Но через форум... слишком много надо наводящих вопросов для простейшего запроса из 2-х табличек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 02:40 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
MaximaXXLВы бы не могли написать подходит ли Вам скорость/загрузка для предложенного мной селекта из 20551953 сообщения не запустился, какой-то группировки не хватает? :( ORA-00937: not a single-group group function ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 11:15 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!для начала я бы просто посмотрел с хинтом /*+ RULE */ , он должен nested loop по индексам врубить Код: sql 1. 2. 3. если хинт RULE даст ожидаемые 10-30 сек, попробовал бы участвующие таблицы ALTER TABLE ... CACHE; в теории это может от фулскана избавить. план запроса с RULE Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. тоже самое без RULE Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. [/SRC] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 11:42 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, какое время с хинтом rule ? без хинта время это после ALTER TABLE ... CACHE ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 11:47 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
MaximaXXLДавно я такой ... не страдал А попробуй вот так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. такой запрос отработал за 77 секунд, штатный запрос работает 154 секунды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 11:48 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!lonely_myp, какое время с хинтом rule ?время выполнения запроса с хинтом такое же как без хинта, 154 секунды. ALTER TABLE ... CACHE не делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 11:51 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypвремя выполнения запроса с хинтом такое же как без хинта, 154 секунды. ALTER TABLE ... CACHE не делал. если у RULE то же время, то танцы с ALTER TABLE ... CACHE или не имеют смысла. значит надо лезть в логику запросов, избавляться от функций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 12:03 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypMaximaXXLВы бы не могли написать подходит ли Вам скорость/загрузка для предложенного мной селекта из 20551953 сообщения не запустился, какой-то группировки не хватает? :( ORA-00937: not a single-group group function Попробуй пока так и скажи время: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 13:06 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, и покажи плиз эти функции 1. straggrd 2. straggrdargs ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 13:10 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Предлагаю поедать осетра по частям. Начав с самого просто ))) GetManHour - проста как 3-и копейки Как я понимаю, народ просто пытается подсчитать сумму по PlanRepairMAP на заданную дату если idobject присутствует в Eam_ShiftrepairMAP с нужным idresponsible. Просто join не сделать, т.к. у них могут быть дубли Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Я бы этот селект написал так (into выкинул): Код: sql 1. 2. 3. 4. 5. 6. 7. или так (правильный вариант зависит от распределения данных по таблицам) Код: sql 1. 2. 3. 4. 5. 6. 7. Чисто эстетически, мне вариант с in нравится больше. Дополнительно воткнул там проверку на b.idplanrepair is not null. Я такого обычно не делаю, воткнул на всякий случай. Соответственно, сюда нужны индексы (колонки из select list тоже включил, для максимум performance): 1) Для первого варианта с in: create index z11 on Eam_ShiftrepairMAP (idresponsible, idplanrepair); create index z12 on EAM_PlanRepairMAP (trunc(dbegin), idobject, nmanhour) 2) Для второго варианта с exists create index z21 on Eam_ShiftrepairMAP (idresponsible, idplanrepair); create index z22 on EAM_PlanRepairMAP (trunc(dbegin), nmanhour); IMHO & AFAIK Надеюсь не ошибаюсь. Смотрим на план и радуемся. Индексы лучше называть пока как нибудь бредово, что бы потом легко в базе было эксперементы найти и удалить. Как автор топика собирается все свои доработки оформлять и документировать, я не знаю ))) подозреваю, кранты базе и саппорту ))) Лично я со стороны разработчика на это бы смотрел крайне настороженно Но это дело автора и его работодателей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 13:33 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
с exists немного ошибся (copy/past), но не принципиально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 13:38 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevЯ бы этот селект написал так (into выкинул): Код: sql 1. 2. 3. 4. 5. 6. 7. с ним тестовый запрос прошёл за 78 секунд (штатно 154 с.) Leonid KudryavtsevКак автор топика собирается все свои доработки оформлять и документировать, я не знаю ))) подозреваю, кранты базе и саппорту ))) Лично я со стороны разработчика на это бы смотрел крайне настороженно Но это дело автора и его работодателей. договор саппорта закончился года 3 назад. как иногда бывает, интерес разработчика угас сразу же после подписания договора, доработка оценённая в 3 человекочаса могла тянуться несколько месяцев, включая такие грязные приёмы как "мы вам ещё вчера всё сделали, не знаем почему у вас ничего не изменилось, завтра программист ещё раз перепроверит" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 08:23 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
MaximaXXLlonely_myp, и покажи плиз эти функции 1. straggrd 2. straggrdargs Код: plsql 1. 2. 3. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 08:37 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypдоговор саппорта закончился года 3 назад. как иногда бывает, интерес разработчика угас сразу же после подписания договора, доработка оценённая в 3 человекочаса могла тянуться несколько месяцев, включая такие грязные приёмы как "мы вам ещё вчера всё сделали, не знаем почему у вас ничего не изменилось, завтра программист ещё раз перепроверит" ну если договора саппорта нет, тогда в общем претензий предъявлять некому другое дело, есть ли исходные коды в собираемом виде lonely_mypс ним тестовый запрос прошёл за 78 секунд (штатно 154 с.) "тестовый запрос" - это который весь огромный? тогда это крайне не плохо, одно узкое место убралось, осталось второе но лучше - в скайпе, правда до сегодняшнего дня я был свободен, а сегодняшя-завтра новая работа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 08:39 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
В GetWorks соответственно аналогично. Ну и планы хорошо бы видеть, исчезли ли hash join'ы и доступ к таблицам А лучше экран с pl/sql developer через skype [spoiler] Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ==> group by & join на in count(*) заменить на count(1) Код: sql 1. 2. 3. 4. 5. 6. 7. [spoiler] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 08:49 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
В GetWorks соответственно аналогично. Ну и планы хорошо бы видеть, исчезли ли hash join'ы и доступ к таблицам А лучше экран с pl/sql developer через skype Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ==> group by & join на in count(*) заменить на count(1) Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 08:53 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
MaximaXXLПопробуй пока так и скажи время: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. вот именно этот не работает, ORA-00937: not a single-group group function а вот этот вот работает: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 09:09 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevВ GetWorks соответственно аналогично. Ну и планы хорошо бы видеть, исчезли ли hash join'ы и доступ к таблицам А лучше экран с pl/sql developer через skype Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ==> group by & join на in count(*) заменить на count(1) Код: sql 1. 2. 3. 4. 5. 6. 7. ускорилось с 78 секунд до 51 секунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 09:32 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Я так понимаю что бяда моя непоправима, тормоза заложены разработчиками в самой базе Здорово конечно что в 3 раза ускорился один запрос, но к моему сожалению там везде так... банальная операция, просто открыть для просмотра перечень оборудования и то занимает 7 секунд. тоесть юзер нажимает кнопку "открыть" и лишь через 7 секунд отображается окно с двадцатью строчками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 09:39 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypЯ так понимаю что бяда моя непоправима, тормоза заложены разработчиками в самой базе Здорово конечно что в 3 раза ускорился один запрос, но к моему сожалению там везде так... банальная операция, просто открыть для просмотра перечень оборудования и то занимает 7 секунд. тоесть юзер нажимает кнопку "открыть" и лишь через 7 секунд отображается окно с двадцатью строчками. да, с таким дизайном системы, функция в функции, запускает функцию, мало чего можно придумать. все у вас упирается в процы. апгрейд процессоров, типа с 2.13Ghz на 3.8Ghz в лучшем случае в двое ускорит, т.е. особо не поможет. если бы упиралось в и/о, можно было бы жонглировать райдами, ssd, кешами ... но тут и/о считай и нет. но я бы прежде чем принимать окончательное решение все таки пригласил бы ораклового спеца, который бы все таки глянул живую систему и подтвердил бы диагноз. у меня все равно ощущение что на столь крошечных табличках, которые в памяти, все должно шустрее шевелиться, но очевидных косяков вроде уже не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 11:13 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
в смысле даже с таким дизайном, с хинтом RULE, который почти гарантировал nested loops и юлозание по индексам и почти без и/о, не должно имхо 154 секунд занимать. не на столько уж страшные функции и космических вычислений в них вроде там нет. куда девается процессорное время мне до конца не ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 11:20 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp, ох уж эти самописные агрегаторы ... а можешь проверить вот этот селект будет работать? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. в переменную :idObject поставь EAM_ShiftMAP.idObject который выбирался в диапазоне с 01.05.2017 - 05.05.2017 Я думаю (если все получиться) твой селект можно в 10 сек вогнать без проблемм З.Ы. если работать не будет, сразу попробуй вместо строки Код: plsql 1. написать Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 12:19 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
[quot Yo.!]lonely_mypапгрейд процессоров, типа с 2.13Ghz на 3.8Ghz в лучшем случае в двое ускоритна барахолке взял пару X5650 за 3 тыщи рулей, для эксперимента. время запроса ещё немного упало, до 37 секунд, заодно и пропылесосил. раньше загрузка системы была 25%, теперь загрузка системы 4% :D один единственный процесс оракла скачет по ядрам... неужели оракл никаким образом не умеет многопоточность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 19:06 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
alter table xxx parallel 8; alter system set parallel_max_servers=8; alter system set parallel_servers_target=8; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 19:31 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
девять женщин могутalter table xxx parallel 8; alter system set parallel_max_servers=8; alter system set parallel_servers_target=8; http://www.dba-oracle.com/art_so_oracle_standard_enterprise_edition.htm У автора вроде SE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 20:27 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypнеужели оракл никаким образом не умеет многопоточность?Твой - нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 21:43 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_myp... неужели оракл никаким образом не умеет многопоточность? За деньги умеет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 22:10 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
lonely_mypна барахолке взял пару X5650 за 3 тыщи рулей, для эксперимента. время запроса ещё немного упало, до 37 секунд, заодно и пропылесосил. имхо это странно. разница в частоте и размере кеша не должны были дать такую разницу. попробуй вернуть E5606, вернулись 3 минуты ? lonely_mypнеужели оракл никаким образом не умеет многопоточность? никто толком не умеет. мнгопоточно они все умеют читать с диска, но у тебя таблички крошечные и итак в памяти и standard редакция которая параллелить ничего не умеет. по настоящему параллелят всякие mpp и бигдата базы данных, но они все сугубо аналитические и многое полезное приносят ради этого в жертву. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 08:06 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
Yo.!имхо это странно. разница в частоте и размере кеша не должны были дать такую разницу. попробуй вернуть E5606, вернулись 3 минуты ? Я так понимаю, он время "не оригинального" запроса приводит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 08:45 |
|
||
|
Низкая загрузка ЦП ораклом. не выше 25% всегда.
|
|||
|---|---|---|---|
|
#18+
[quot Yo.!]lonely_mypимхо это странно. разница в частоте и размере кеша не должны были дать такую разницу. попробуй вернуть E5606, вернулись 3 минуты ? разница на уже оптимизированным запросе, замена проца ускорила дополнительно с 58 секунд до 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 11:56 |
|
||
|
|

start [/forum/moderation_log.php?user_name=%D0%91%D1%80%D0%B0%D1%82]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
get settings: |
8ms |
get forum list: |
9ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 981ms |
| total: | 1296ms |

| 0 / 0 |
