powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / asa 9.0.2. вот сижу ускоряю запрос +
8 сообщений из 8, страница 1 из 1
asa 9.0.2. вот сижу ускоряю запрос +
    #33520682
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
asa 9.0.2. вот сижу ускоряю запрос +
    #33520719
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По вопросу 2 ничего менять не нужно. По вопросу 1 - нужно начинать смотреть само представление. План запроса не самый лучший - куча UNION ALL (судя по всему используются одни и те же вложенные представления), сверху группировка и сортировка по неплохому обьему данных. Тут или в представлении избавляться от вложенных представлений для этого запроса, или изменить соединения (к примеру увести на subquery или LATERAL), или вместо представления сделать ХП и разгрузить повторные чтения через временные нетранзакционные таблицы. В любом случае не видя запросов представлений, не скажешь, чего можно улучшить.

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

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

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

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

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

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

Запрос выполняется секунд пять, в мессаджах в isql говорит что 0.2 сек., а в плане - 40 минут. Тоже странно.
...
Рейтинг: 0 / 0
asa 9.0.2. вот сижу ускоряю запрос +
    #33578667
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к вопросу о скорости выполнения "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
asa 9.0.2. вот сижу ускоряю запрос +
    #33578669
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что интересно предсказания оптимизатора в запросе 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
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / asa 9.0.2. вот сижу ускоряю запрос +
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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