|
|
|
Оценка длительности выполнения SQL запроса
|
|||
|---|---|---|---|
|
#18+
MasterZivИ то, и другое -- весьма непросто. Второе довольно просто. Хотя, может, не во всех СУБД. Первое - да, может потребоваться изрядно поломать голову, но задача в принципе решаемая. В отличие от. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:31 |
|
||
|
Оценка длительности выполнения SQL запроса
|
|||
|---|---|---|---|
|
#18+
On 26.05.2014 20:25, Кот Матроскин wrote: > Это невозможно - в этом согласились все ответившие Вам. Реальные минуты > с секундами зависят не только от запроса, но и от текущего состояния > сервера - загруженности другими запросами, состояния кэша и т.п. Кроме того, основной принцип составления планов -- это относительное вычисление стоимостей разных планов одного и того же запроса и сравнение стоимостей. При этом стоимости несут лишь относительную оценку, в абсолютных цифрах эти стоимости не значат ничего. У запроса может быть высокая стоимость, но меньшая из всех рассмотренных, и он будет выбран как лучший, но при этом на деле запрос может выполниться очень быстро. Задача оптимизатора -- не предсказать время и стоимость выполнения запроса, а выбрать из набора возможных планов лучший по стоимости, при этом абсолютные значения стоимостей ему не нужны. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:33 |
|
||
|
Оценка длительности выполнения SQL запроса
|
|||
|---|---|---|---|
|
#18+
On 28.05.2014 13:31, softwarer wrote: > И то, и другое -- весьма непросто. вывести ему некий индикатор прогресса и дать возможность прервать процесс. > Второе довольно просто. Хотя, может, не во всех СУБД. Первое - да, может > потребоваться изрядно поломать голову, Первая задача сводится к исходной задаче топикстартера -- нужно оценить весь объём работы для выполнения запроса, чтобы взять за 100% но задача в принципе решаемая. В > отличие от. Я и не говорил, что нерешаемая. В некоторых СУБД только можно оборвать соединение и дать возможность приложению присоединиться и начать всё заново, но СУБД при этом будет старательно выполнять уже никому не нужный запрос. Даже твой любимый oracle при разрыве продолжает (я не хочу сказать, что это какая-то проблема, это вообще в общем случае сделать невозможно, потому что сетевые разрывы не всегда обнаруживаются). Так что это всё весьма непросто. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:39 |
|
||
|
Оценка длительности выполнения SQL запроса
|
|||
|---|---|---|---|
|
#18+
MasterZivЗадача оптимизатора -- не предсказать время и стоимость выполнения запроса, а выбрать из набора возможных планов лучший по стоимости.... Я бы даже ехидно добавил " попытаться выбрать...", т.к. это ему не всегда удается ))). VovkaMorkovka...Отсюда вопрос: как вообще делают, когда нужно решить сабжевую задачу: предупредить пользователя, что его данные будут скорее всего считаться очень долго? Х.з. Ни разу не делали, хотя проблема возникала. На одной пром. системе, настроили Oracle Resource Manager. Запросы до 15 секунд - в нормальном приоритете, если выполняется >15 сек - уходят в низкий приоритет и выполняются когда система "простаивает", перестают тормозить систему. Думали автосрубалку запросов добавить, но не стали. Можно продумать таймер на клиенте. Если выполняется > N секунд - выдавать сообщение "Ваш запрос уже выполняется больше N секунд, будем ждать дальше или срубать нафиг?" IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:43 |
|
||
|
Оценка длительности выполнения SQL запроса
|
|||
|---|---|---|---|
|
#18+
MasterZivOn 26.05.2014 19:59, Кот Матроскин wrote: > Ко времени выполнения запроса это (ожидаемый план выполнения в целом и > его численные характеристики в частности) имеет *максимально возможное * > отношение. Любые другие оценки будут хуже. Ещё раз, ко ВРЕМЕНИ выполнения запроса это (план) не имеет никакого отношения. Глупость. Между "однозначно определяется" и "не имеет никакого отношения" есть множество промежуточных ступеней, и если А не однозначно определяет B, то из этого не следует, что B никак не зависит от A. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:45 |
|
||
|
Оценка длительности выполнения SQL запроса
|
|||
|---|---|---|---|
|
#18+
softwarer...Первое - да, может потребоваться изрядно поломать голову, но задача в принципе решаемая... Мне кажется задача не решаема в принципе "в отличие от". Если условия задает пользователь, не выполнив запрос невозможно сказать, сколько данных получится в результате. Это нужно знать результаты запроса до начала его выполнения Или предсказывать "приблизительно". Наворачивая сложный мат анализ и статистику с гистограммами. Но это уже и так реализовано в продвинутых оптимизаторах ))). Но ведь ошибаются и запросы весящие в базах по часам и суткам явление не редкое ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:54 |
|
||
|
Оценка длительности выполнения SQL запроса
|
|||
|---|---|---|---|
|
#18+
MasterZiv...Даже твой любимый oracle при разрыве продолжает (я не хочу сказать, что это какая-то проблема, это вообще в общем случае сделать невозможно, потому что сетевые разрывы не всегда обнаруживаются)... Ну вообще-то в Oracle Net80 вроде есть спец. пакет, "прервать выполнение" *. Хотя, в PL/SQL Developer'е прервать запрос срабатывает не всегда. Но опять таки, в самописной системе в _одном_ модуле - вполне можно сделать "железно" и "прибить гвозьдями". Но это уже детали реализации. *Только, недавно смотрел дизаджавенный ))) код Oracle JDBC, срубание выполнения вполне себе реализовано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:57 |
|
||
|
Оценка длительности выполнения SQL запроса
|
|||
|---|---|---|---|
|
#18+
MasterZivПервая задача сводится к исходной задаче топикстартера -- нужно оценить весь объём работы для выполнения запроса, чтобы взять за 100% Неверно. Нужно оценить какой-то один индикатор, что существенно проще. К примеру, если в запросе есть ведущая таблица, можно оценить продвижение по этой таблице. MasterZivДаже твой любимый oracle при разрыве продолжает В моём любимом оракле есть alter system disconnect session, который ничего не продолжает. Пока его не было - ушлые админы шлёпали самопальные процедурки, делавшие в целом то же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 12:58 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38654330&tid=1540871]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 258ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...