powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / local temporary table - тормоза при наполнении
17 сообщений из 17, страница 1 из 1
local temporary table - тормоза при наполнении
    #36485624
rashman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть процедура
в процедуре:

Код: plaintext
1.
2.
3.
4.
5.
  declare local temporary table lt_issue(
    article_id integer null,
    rest_warehouse integer null,
    rest_shop integer null,
    min_rest_shop integer null,
    ) on commit preserve rows;

наполняю селектом, который сам по себе срабатывает за 5 секунд.
как только подставляю select под insert into lt_issue - выполняется до 10 минут.

поубирал к чертям все условия из WHERE - эффект почти нулевой - удалось выиграть не больше минуты-полутора...

кто-то может подсказать, что делать? или что я делаю не так?

спасибо
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36485627
rashman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в догонку...

после наполнения таблицы, select из lt_issue выполняется отлично...
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36485723
rashman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл указать, что это ASA 9.03

сейчас переписал на global temporary table - эффект тот же...
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36485775
rashman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
продвинулся чуть-чуть дальше

кто мне может объяснить, почему запрос

Код: plaintext
1.
2.
3.
    select 
      sf_rest_warehouse(dep.article_id, 300038151 ,'2010-02-24')from
      dba.dep_sale_art as dep where
      dep.department_id =  761092 ;

выполняется 0.3 секунды

а такой запрос:

Код: plaintext
1.
2.
3.
4.
insert into tt_issue( rest_warehouse )
    select 
      sf_rest_warehouse(dep.article_id, 300038151 ,'2010-02-24')from
      dba.dep_sale_art as dep where
      dep.department_id =  761092 ;

выполняется 10 минут?
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36485792
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так быть не должно. Значит что-то где-то не так.
Посмотрите, куда у вас пишутся временные фалы ASAшки, может там диск тормозит. Может быть все что угодно, вплоть до глюков в файловой системе или повреждений в файле БД.
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36485828
rashman,

1. Откуда выполняется select (сколько записей возвращает)?
2. Сколько выдаёт
select count(*) from dba.dep_sale_art as dep where dep.department_id = 761092;
3. Функа sf_rest_warehouse тоже может по разному выполняться, в зависимости от значений. Кто будет смотреть что там написано?
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36485966
rashman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. что из процедуры, что из isql - выполняется одинаково долго.
2. ~7000 записей.
3. sf_rest_warehouse выполняется одинаково для всех значений...

в принципе, я "не первый год замужем" и простые вещи уже проверил. корень вопроса сформулирован в предыдущем моём посте.
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36486625
rashman,

Вопросы про место, откуда вызывается select, надеюсь понятно, что связаны с ограничением на кол-во возвращаемых записей.

Ну если не первый год замужем, то можно было бы для начала проверить:

1.
insert into tt_issue( rest_warehouse )
select
1 from
dba.dep_sale_art as dep where
dep.department_id = 761092;

2.
insert into tt_issue( rest_warehouse )
select 1 from (
select
sf_rest_warehouse(dep.article_id,300038151,'2010-02-24')from
dba.dep_sale_art as dep where
dep.department_id = 761092
) tt;
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36486807
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashman1. что из процедуры, что из isql - выполняется одинаково долго.
2. ~7000 записей.
3. sf_rest_warehouse выполняется одинаково для всех значений...

1. Замер 0.3 сек где и как проводился? До появления первых строк в isql?
3. Ничто и никогда в АСА не выполняется одинаково!)))))) кто знает, что там внутри и как оно отрабатывает.

Могу посоветовать включить профилировщик в централе на время тестового прогона. Он четко покажет сколько запускалась sf_rest_warehouse и сколько тратилось на нее времени. Построчно.
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36487409
rashman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл пароль, простейшие запросы я проверял - работают на ура.

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

автор1. Замер 0.3 сек где и как проводился? До появления первых строк в isql?
по данным isql

автор3. Ничто и никогда в АСА не выполняется одинаково!)))))) кто знает, что там внутри и как оно отрабатывает.

не придерайтесь ;)

авторМогу посоветовать включить профилировщик в централе на время тестового прогона. Он четко покажет сколько запускалась sf_rest_warehouse и сколько тратилось на нее времени. Построчно.

я включал дебаггер. из 10 минут выполнения, 9:57 выполнялся именно эта функция.

=============
я провел еще такой тест: переписал процедуру под курсор. запустил. работает примерно столько же времени, сколько и сам запрос. погрешность незначительная.

появилась теория, что когда вызывается инсерт в таблицу, то оптимизатор запускает эту функцию для каждой вставляемой строки.
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36487523
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashmanесть процедура
в процедуре:

Код: plaintext
1.
2.
3.
4.
5.
  declare local temporary table lt_issue(
    article_id integer null,
    rest_warehouse integer null,
    rest_shop integer null,
    min_rest_shop integer null,
    ) on commit preserve rows;

Может убрать on commit preserve rows
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36487613
rashman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Orlov
Может убрать on commit preserve rows

а как это может повлиять? внутри процедуры комитов нет... а даже если бы и были...
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36487873
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashmanSergey Orlov
Может убрать on commit preserve rows
а как это может повлиять? внутри процедуры комитов нет... а даже если бы и были...
Вы делаете commit после каждой вставки... Хотя может быть я и не прав...
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36488195
rashman,

Как жаль, когда люди не слушают, что им говорят.

Разницу в 3-х вариантах вставки видно или нет?


...оптимизатор запускает эту функцию для каждой вставляемой строки


А разве функция работает по другому в принципе (для каждой выбираемой строки)?
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36489015
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надеюсь известно, что isql не осуществляет выдачу всего результата на экран, а сначала выдает только Х первых записей. Вызов функции делается одинаково, что для select, что для insert select. Поэтому, если в isql результат запроса (а вернее первые Х записей) выдается через 5 сек, то это означает, что функция могла быть вызвана только Х раз. Если же сделать output to, то тогда с сервера на клиента перетекут все записи и функция будет вызвана по всему массиву. Я не зря посылаю Вас к профилировщику, в котором видно не только и не столько время выполнения, сколько количество вызовов функции, и основного места потери времени в ней.
К тестовым запросам от "забыл пароля" могу добавить еще один:
Код: plaintext
1.
2.
3.
4.
5.
6.
   
select count(*)
from
(select 
      sf_rest_warehouse(dep.article_id, 300038151 ,'2010-02-24')from
      dba.dep_sale_art as dep where
      dep.department_id =  761092 ) as v(a);
Этот запрос гарантировано принудит сервер перебрать с вызовом функции весь возвращаемый вложенным запросом набор.

P.S.: И не забывайте делать sa_flush_cache() между тестами...
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36489525
rashman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в isql вывожу все 7000 строк...

всем огромное спасибо за участие! полностью переписываю процедуру расчетов. так будет быстрее. сроки...
...
Рейтинг: 0 / 0
local temporary table - тормоза при наполнении
    #36489529
rashman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в догонку...

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


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