powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Нужен совет по оптимизации запроса/структуры
14 сообщений из 14, страница 1 из 1
Нужен совет по оптимизации запроса/структуры
    #33318326
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть запрос такого типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select vv.b,vv.n,
      sum(q) as sq,
      regr_slope(q,С - d),
      regr_intercept(q,C - d)
from
      (select b,n,dd,sum(q)
        from bgm2
        group by b,n,dd) as vv( b,n,d,q) 
group by vv.b,vv.n;
где C - некая константа, которая задается вне запроса.
Здесь нет ни одного условия, индекс-консультант ничего не посоветовал, что и следовало ожидать.
Объем таблицы bgm2 - 70 млн, на выходе запроса получается менее 1 млн записей.
Что можно предпринять, для увеличения скорости его выполнения?

P.S.:План запроса такой:
( WorkTable
( HashGroupBy
( HashGroupBy
( HashJoin*
( TableScan bgm2 )
)
)
)
)
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33318342
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Машина 2xXEON 4Г кэш AWE. Win2003. ASA 9.02.3182
Замечено, что АСА создает еще временный файл asat0000.tmp, который доходит по объему до 10 гиг. Это что же, ему нужен кэш такой? Может ли АСА тратить лишнее время на хранение там промежуточных результатов?
Мне кажется 6 часов слишком жирно для такого запроса.

P.S.: Кстати, АСА этот файлик не обрезает и не удаляет, даже при перезапуске и перезагрузке АСА его не убивает. Т.е. один раз создался, и всё, пока ручками не прибьешь никуда не денется - не приятно как-то втихаря место на диске утекает.
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33319400
Volokola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А индекс по полям b+n+dd существует?
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33319421
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно в такой последовательности?
Нет, не существует.
Почему же консультант не посоветовал его? Я вот как раз думал строить или нет его.
Надо проверить бы.
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33319473
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Индекс, кстати, может и не помочь, ибо если он будет использоваться только для упорядочивания, а к этому придется еще читать и основную таблицу, то это может оказаться накладнее. А ведь вся таблица в кэше сидит, т.к. видно что сервер использует только процессор, обращений к диску нет вообще.
Я перед экспериментами как раз хотел посоветоваться, а имеет ли смысл? Ворочить такую таблицу не быстрое дело.
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33319629
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По крайней мере я попробывал создать виртуальный индекс. Как и следовало ожидать ничего кардинального не изменилось. План тот же (и неудивительно когда вся таблица в памяти). Использование индекса оптимизатор отклонил.
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33320079
Volokola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда еще вопрос:
Сколько записей возвращает подзапрос
Код: plaintext
1.
2.
select b,n,dd,sum(q)
        from bgm2
        group by b,n,dd
Если достаточно много, по отношению к общему количеству, то оптимизатор,действительно, индекс не возьмет.
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33321302
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Промежуточный набор ~60 млн


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33321388
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот именно. Там же полная "материализация представления" , вложенного в запрос.
Это -- мертвый запрос, никогда не будет работать (быстро).
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33321426
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select vv.b,vv.n,
sum(q) as sq,
regr_slope(q,С - d),
regr_intercept(q,C - d)

from
(select b,n,dd,sum(q)
from bgm2
group by b,n,dd) as vv( b,n,d,q)
group by vv.b,vv.n;

При группировке в selecte могут быть поля перечисленные в group by. Все остальные поля только в фукциях агрегирования (sum,max,...).
Я согласен на
regr_slope(max(q) ,С - min(d) ),
regr_intercept( sum(q) ,C - min(d) )
или что-то в этом роде. А в оригинальном select группировка скорее всего не работает. В Sybase ASE 12.5 при этом даже условие отбора записей where порой отрубается. И все это молча без всякого писка, заметьте.
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33321451
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iLLerЕсть запрос такого типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select vv.b,vv.n,
      sum(q) as sq,
      regr_slope(q,С - d),
      regr_intercept(q,C - d)
from
      (select b,n,dd,sum(q)
        from bgm2
        group by b,n,dd) as vv( b,n,d,q) 
group by vv.b,vv.n;
где C - некая константа, которая задается вне запроса.
Здесь нет ни одного условия, индекс-консультант ничего не посоветовал, что и следовало ожидать.
Объем таблицы bgm2 - 70 млн, на выходе запроса получается менее 1 млн записей.
Что можно предпринять, для увеличения скорости его выполнения?

P.S.:План запроса такой:
( WorkTable
( HashGroupBy
( HashGroupBy
( HashJoin*
( TableScan bgm2 )
)
)
)
)
А можно своими словами, что данный запрос должен делать (именно по ТЗ, а не технической реализации) ?
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33322465
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to golsa
Это и есть две агрегатные OLAP-функции. С группировкой все нормально.

ТЗ никто не писал, т.е. формулирую сам для себя:
Необходимо получить статистический анализ данных. Необходимо расчитать параметры математических моделей, которые отражали бы ряды q по d для каждой пары (b,n).
Проблема в том, что в исходных данных имеется полный реестр (b,n,d,q,...,pk), где b,n,d изначально не уникальны (уникален pk), более того, в любой записи в любой момент может меняться значение n. И держать агрегированый свод (b,n,d,q), где b,n,d уникальны - накладно по производительности и емкости.

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

Может и впрямь завести агрегированный свод, вместо вложенного селекта?

P.S.: Вот были бы материализованные представления, можно было бы не трахаться с триггерами для поддержки такого свода. А хотя с другой стороны, запрос он и есть запрос, и перерасчет такого представления занимал бы столько же времени.
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33322501
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может быть стоит подумать переписать запрос с использованием GROUP BY CUBE или GROUPING SETS ? Во всяком случае они куб строят по гораздо более эффективным механизмам, чем вложенный аггрегированый подзапрос и аггрегация по нему.
...
Рейтинг: 0 / 0
Нужен совет по оптимизации запроса/структуры
    #33322520
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нее, GROUP BY CUBE и GROUPING SETS здесь не помогут. Они нужны для вычисления итоговых результатов по плоскостям/осям этого куба, а мне эти итоги не нужны. Т.е. они нужны при одновременном использовании нескольких видов группировок, а тут обычная группировка.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Нужен совет по оптимизации запроса/структуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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