Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / asa 9.0.2. вот сижу ускоряю запрос + / 8 сообщений из 8, страница 1 из 1
03.02.2006, 05:38
    #33520682
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa 9.0.2. вот сижу ускоряю запрос +
Код: plaintext
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.
сайбез аса 9.0.2.3137
план запроса приложен
раздел      reading access plan             в процессе чтения
раздел фак  Все что мы знаем об индексах    в процессе чтения.

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

при выполнения запроса из плана - процессор грузится на 100 процентов.
"select top 45 blablabla" работает порядка 10 секунд.




вопрос 1

что надо начать смотреть исходя из плана для ускорения запроса?

вопрос 2
 имеет ли  смысл пробовать менять опции
 сервера
  -сt - енабле/дисабле чарактер сет конвершион
  -gm - ограничения колва коннектов
  -p  - размер коммуникационного пакета
  -sb - отключение прослушивания сети
  -ti - убийства мертвых коннекшинов
  -tl - посылания служебных пакетов


...
Рейтинг: 0 / 0
03.02.2006, 07:25
    #33520719
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa 9.0.2. вот сижу ускоряю запрос +
По вопросу 2 ничего менять не нужно. По вопросу 1 - нужно начинать смотреть само представление. План запроса не самый лучший - куча UNION ALL (судя по всему используются одни и те же вложенные представления), сверху группировка и сортировка по неплохому обьему данных. Тут или в представлении избавляться от вложенных представлений для этого запроса, или изменить соединения (к примеру увести на subquery или LATERAL), или вместо представления сделать ХП и разгрузить повторные чтения через временные нетранзакционные таблицы. В любом случае не видя запросов представлений, не скажешь, чего можно улучшить.

P.S. 40 минут выполнения запроса на такое маленькое кол-во записей конечно многовато будет.
...
Рейтинг: 0 / 0
04.02.2006, 02:08
    #33523349
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa 9.0.2. вот сижу ускоряю запрос +
сенкс
а размер страницы 8192 байта.
это не мало? (не много?)

по статье.
не понятен текст:

------
Разветвленность составных индексов

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

ведь чем больше значений имеет индекс, "тем больше он занимает страниц в базе данных, требует большего времени на чтение и меньше кэшируется".
...
Рейтинг: 0 / 0
05.02.2006, 05:30
    #33524069
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa 9.0.2. вот сижу ускоряю запрос +
а почему такая большая разница в оценках в плане со статистикой и плане без статистики?

без статистики
...
Рейтинг: 0 / 0
05.02.2006, 05:31
    #33524070
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa 9.0.2. вот сижу ускоряю запрос +
со статистикой
...
Рейтинг: 0 / 0
05.02.2006, 22:54
    #33524608
c127
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa 9.0.2. вот сижу ускоряю запрос +
ASCRUS
P.S. 40 минут выполнения запроса на такое маленькое кол-во записей конечно многовато будет.

Запрос выполняется секунд пять, в мессаджах в isql говорит что 0.2 сек., а в плане - 40 минут. Тоже странно.
...
Рейтинг: 0 / 0
03.03.2006, 05:09
    #33578667
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa 9.0.2. вот сижу ускоряю запрос +
к вопросу о скорости выполнения "not exist подзапроса" и "left outer join с group by"

----

вот одно из
узких мест тормозящего запроса, план которого приведен выше.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
       1

select count(*) from (

 select idu, idc, acc
  from db.acc1 a
  where not exists
      (select 1 from db.acc a1
         where a1.kgu=a.kgu and a1.kpc=a.kpc
           and a1.acc=a.acc
           and a1.val=0
      )
) a
where acc = 1 and idu = 1090



/* попытка комментария

есть сущности idu, которые могут обьединяться в группы kgu.
есть сущности idc, которые могут обьединяться в группы kpc.
для каждой сущности существует группа с таким же номером и содержащаю из сущности.
группы могут входить в группы.
сущность которая содержит - предок для содержимой, которая содержится потомок от содержащей.

для пары (idu_или_kgu , idc_или_kpc) задается атрибут acc со значением val 0 или 1.
атрибут наследуется от предков к потомкам.



таблица acc содержит четверки (kgu, kpc, acc, val)
обзор acc1 содержит теже четверки (kgu, kpc, acc, val ) дополненные до всех
окончательных потомков (idu, idc).
Значение val характеристики acc наследуется всеми окончательными потомками (idu, idc).

надо выбрать все четверки (idu, idc, acc, 1)
у которых нет любых предков (kgu, kpc, acc, 0)

*/

скорость запроса 1 ( not exist подзапрос)
( кроме того, что в нем оказалась ошибка)

на некоторых данных была удовлетворительная,
на некоторых (при acc = 1) - нет и достигала 40 секунд при полной загрузка процессора.

а время выполнения запроса 3 через серию таких обзоров

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
  2

create view db.x as (
  select 
       a.idu,
       a.idc,
       a.kgu,
       a.kpc,
       a.acc,
       a.val,
       a1.kgu kgu1,
       a1.kpc kpc1,
       a1.acc acc1,
       a1.val val1

  from db.acc1 a left outer join db.acc a1
       on  
             a.kgu  = a1.kgu
         and a.kpc  = a1.kpc
         and a.acc  = a1.acc
         and a1.val = 0
         and a.val  = 1
)

/*
то есть каждая тройка (idu, idc, acc, 1)
расширена всеми ее предками (kgu, kpc, acc, 0), со значениями атрибута = 0, если они есть.

и в следующем запросе с group by
выбраны все тройки (idu, idc, acc) у которых нет указанных предков.

*/
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  3

select count(*) from (
  select  
    acc,
    idu,
    idc,
    sum (  if  isnull( val1, 1)=0  then 1 else 0 endif ) val

  from db.x
  group by acc, idu, idc
) ss

where  acc = 1 and idu = 1090 and val < 1



на тех же данных, что и в запросе 1, оказывалось меньше секунды. Загрузка процессора почти не менялась.
...
Рейтинг: 0 / 0
03.03.2006, 05:18
    #33578669
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asa 9.0.2. вот сижу ускоряю запрос +
что интересно предсказания оптимизатора в запросе 1 даже лучше чем в запросе 3.

Код: plaintext
1.
2.
3.
4.
 1
RunTime  0.6766 349.19
CPUTime 0.38045


Код: plaintext
1.
2.
3.
 3
RunTime 0.84529    2.1381
CPUTime 0.54914 -

и планы очень похожие.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / asa 9.0.2. вот сижу ускоряю запрос + / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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