powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Оценка длительности выполнения SQL запроса
8 сообщений из 33, страница 2 из 2
Оценка длительности выполнения SQL запроса
    #38654330
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivИ то, и другое -- весьма непросто.
Второе довольно просто. Хотя, может, не во всех СУБД. Первое - да, может потребоваться изрядно поломать голову, но задача в принципе решаемая. В отличие от.
...
Рейтинг: 0 / 0
Оценка длительности выполнения SQL запроса
    #38654335
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 26.05.2014 20:25, Кот Матроскин wrote:

> Это невозможно - в этом согласились все ответившие Вам. Реальные минуты
> с секундами зависят не только от запроса, но и от текущего состояния
> сервера - загруженности другими запросами, состояния кэша и т.п.

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

У запроса может быть высокая стоимость, но меньшая из всех
рассмотренных, и он будет выбран как лучший, но при этом на деле запрос
может выполниться очень быстро.

Задача оптимизатора -- не предсказать время и стоимость выполнения
запроса, а выбрать из набора возможных планов лучший по стоимости, при
этом абсолютные значения стоимостей ему не нужны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оценка длительности выполнения SQL запроса
    #38654346
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 28.05.2014 13:31, softwarer wrote:

> И то, и другое -- весьма непросто.

вывести ему некий индикатор прогресса и дать возможность прервать процесс.

> Второе довольно просто. Хотя, может, не во всех СУБД. Первое - да, может
> потребоваться изрядно поломать голову,

Первая задача сводится к исходной задаче топикстартера -- нужно оценить
весь объём работы для выполнения запроса, чтобы взять за 100%


но задача в принципе решаемая. В
> отличие от.

Я и не говорил, что нерешаемая.

В некоторых СУБД только можно оборвать соединение и дать возможность
приложению присоединиться и начать всё заново, но СУБД при этом будет
старательно выполнять уже никому не нужный запрос.

Даже твой любимый oracle при разрыве продолжает (я не хочу сказать, что
это какая-то проблема, это вообще в общем случае сделать невозможно,
потому что сетевые разрывы не всегда обнаруживаются).

Так что это всё весьма непросто.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Оценка длительности выполнения SQL запроса
    #38654352
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЗадача оптимизатора -- не предсказать время и стоимость выполнения
запроса, а выбрать из набора возможных планов лучший по стоимости....

Я бы даже ехидно добавил " попытаться выбрать...", т.к. это ему не всегда удается ))).

VovkaMorkovka...Отсюда вопрос: как вообще делают, когда нужно решить сабжевую задачу: предупредить пользователя, что его данные будут скорее всего считаться очень долго?
Х.з.
Ни разу не делали, хотя проблема возникала.

На одной пром. системе, настроили Oracle Resource Manager. Запросы до 15 секунд - в нормальном приоритете, если выполняется >15 сек - уходят в низкий приоритет и выполняются когда система "простаивает", перестают тормозить систему. Думали автосрубалку запросов добавить, но не стали.

Можно продумать таймер на клиенте. Если выполняется > N секунд - выдавать сообщение "Ваш запрос уже выполняется больше N секунд, будем ждать дальше или срубать нафиг?"

IMHO
...
Рейтинг: 0 / 0
Оценка длительности выполнения SQL запроса
    #38654357
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivOn 26.05.2014 19:59, Кот Матроскин wrote:

> Ко времени выполнения запроса это (ожидаемый план выполнения в целом и
> его численные характеристики в частности) имеет *максимально возможное *
> отношение. Любые другие оценки будут хуже.

Ещё раз, ко ВРЕМЕНИ выполнения запроса это (план) не имеет никакого
отношения.

Глупость.
Между "однозначно определяется" и "не имеет никакого отношения" есть множество промежуточных ступеней, и если А не однозначно определяет B, то из этого не следует, что B никак не зависит от A.
...
Рейтинг: 0 / 0
Оценка длительности выполнения SQL запроса
    #38654369
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer...Первое - да, может потребоваться изрядно поломать голову, но задача в принципе решаемая...
Мне кажется задача не решаема в принципе "в отличие от".

Если условия задает пользователь, не выполнив запрос невозможно сказать, сколько данных получится в результате. Это нужно знать результаты запроса до начала его выполнения

Или предсказывать "приблизительно". Наворачивая сложный мат анализ и статистику с гистограммами. Но это уже и так реализовано в продвинутых оптимизаторах ))). Но ведь ошибаются и запросы весящие в базах по часам и суткам явление не редкое )))
...
Рейтинг: 0 / 0
Оценка длительности выполнения SQL запроса
    #38654372
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv...Даже твой любимый oracle при разрыве продолжает (я не хочу сказать, что
это какая-то проблема, это вообще в общем случае сделать невозможно,
потому что сетевые разрывы не всегда обнаруживаются)...

Ну вообще-то в Oracle Net80 вроде есть спец. пакет, "прервать выполнение" *. Хотя, в PL/SQL Developer'е прервать запрос срабатывает не всегда. Но опять таки, в самописной системе в _одном_ модуле - вполне можно сделать "железно" и "прибить гвозьдями".

Но это уже детали реализации.

*Только, недавно смотрел дизаджавенный ))) код Oracle JDBC, срубание выполнения вполне себе реализовано.
...
Рейтинг: 0 / 0
Оценка длительности выполнения SQL запроса
    #38654374
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivПервая задача сводится к исходной задаче топикстартера -- нужно оценить
весь объём работы для выполнения запроса, чтобы взять за 100%
Неверно. Нужно оценить какой-то один индикатор, что существенно проще. К примеру, если в запросе есть ведущая таблица, можно оценить продвижение по этой таблице.

MasterZivДаже твой любимый oracle при разрыве продолжает
В моём любимом оракле есть alter system disconnect session, который ничего не продолжает. Пока его не было - ушлые админы шлёпали самопальные процедурки, делавшие в целом то же самое.
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Оценка длительности выполнения SQL запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]