Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Нужен совет по оптимизации запроса/структуры / 14 сообщений из 14, страница 1 из 1
11.10.2005, 19:04
    #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
11.10.2005, 19:12
    #33318342
iLLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по оптимизации запроса/структуры
Машина 2xXEON 4Г кэш AWE. Win2003. ASA 9.02.3182
Замечено, что АСА создает еще временный файл asat0000.tmp, который доходит по объему до 10 гиг. Это что же, ему нужен кэш такой? Может ли АСА тратить лишнее время на хранение там промежуточных результатов?
Мне кажется 6 часов слишком жирно для такого запроса.

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


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
13.10.2005, 02:38
    #33321388
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по оптимизации запроса/структуры
Вот именно. Там же полная "материализация представления" , вложенного в запрос.
Это -- мертвый запрос, никогда не будет работать (быстро).
...
Рейтинг: 0 / 0
13.10.2005, 05:34
    #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
13.10.2005, 07:07
    #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
13.10.2005, 13:19
    #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
13.10.2005, 13:25
    #33322501
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по оптимизации запроса/структуры
А может быть стоит подумать переписать запрос с использованием GROUP BY CUBE или GROUPING SETS ? Во всяком случае они куб строят по гораздо более эффективным механизмам, чем вложенный аггрегированый подзапрос и аггрегация по нему.
...
Рейтинг: 0 / 0
13.10.2005, 13:30
    #33322520
iLLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по оптимизации запроса/структуры
Нее, GROUP BY CUBE и GROUPING SETS здесь не помогут. Они нужны для вычисления итоговых результатов по плоскостям/осям этого куба, а мне эти итоги не нужны. Т.е. они нужны при одновременном использовании нескольких видов группировок, а тут обычная группировка.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Нужен совет по оптимизации запроса/структуры / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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