Текущее время: Вт, июл 22 2025, 14:13

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Оптимизация скорости работы
СообщениеДобавлено: Ср, ноя 18 2009, 13:34 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
С некоторых пор программа моя (точнее целый комплекс программ) стала работать ужасно медленно. Сказался тот факт, что объем данных вырос, а изначально в программу это не закладывалось. При анализе в se30 выяснил, что 80% времени приходится на одну и туже таблицу.
Однако выборок из этой таблицы очень много и очень разных, так что под все возможные варианты не подберешь.
Как я понял в se30 показывается первый попавшийся код выборки из этой таблицы, а не тот, что тормозит больше всего.
В настройках таблицы в технических параметрах есть такой раздел "Буферизация". Может вногоуважаемый ALL может рассказать в чем суть этой буферизации и может ли она помочь в данном случае?
И дополнительный вопрос: В коде у меня выборка идет в виде
Code:
SELECT * FROM (TABNAME) INTO ...

т.е. таблица задается динамически. Может это сильно влиять на скорость работы?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Ср, ноя 18 2009, 13:44 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Валерка написал(а):
С некоторых пор программа моя (точнее целый комплекс программ) стала работать ужасно медленно. Сказался тот факт, что объем данных вырос, а изначально в программу это не закладывалось. При анализе в se30 выяснил, что 80% времени приходится на одну и туже таблицу.
Однако выборок из этой таблицы очень много и очень разных, так что под все возможные варианты не подберешь.
Как я понял в se30 показывается первый попавшийся код выборки из этой таблицы, а не тот, что тормозит больше всего.
В настройках таблицы в технических параметрах есть такой раздел "Буферизация". Может вногоуважаемый ALL может рассказать в чем суть этой буферизации и может ли она помочь в данном случае?
И дополнительный вопрос: В коде у меня выборка идет в виде
Code:
SELECT * FROM (TABNAME) INTO ...

т.е. таблица задается динамически. Может это сильно влиять на скорость работы?

Думаю что нет, влияет * + условия выборки, по каким полям выбираете, ключевым или нет и многое другое. Про оптимизацию очень много говорили. Буферизация возможно поможет, но Вам надо учесть все, сколько раз Вы обращаетесь к этой таблицы, на сколько актуальные данные будут в ней и тд. Так же надо смотреть код программы, может у Вас в loop-е select например. Еще для оптимизации программы можно использовать field-symbols.
Из какой Вы таблицы выбираете(где тормозит)?
В se30 есть подробный анализ.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Ср, ноя 18 2009, 13:54 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
1. Буферизация - копия данных таблицы (полностью либо частично) содержится в памяти на сервере приложений. Применяется для малоизменяемых относительно небольших таблиц, видимо это не ваш случай
2. SELECT * FROM (TABNAME) - напрямую на производительность влияет мало, но есть нюанс - на разных таблицах скорее всего разные индексы, а значит по разному надо строить запросы.

Посмотрите какие индексы есть на эту вашу проблемную таблицу, и перестройте запросы так чтоб индексы использовались, либо добавьте новый, если старых недостаточно. Отследить выполнение запросов можно через ST05, и кстати поизучайте внимательно 'Советы по производительности' в SE30

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Ср, ноя 18 2009, 14:16 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 14 2004, 18:02
Сообщения: 415
Откуда: из HR
Пол: Мужской
ArmAnn написал:
2. SELECT * FROM (TABNAME) - напрямую на производительность влияет мало...

точно :D никакой разницы между
Code:
select * from bseg ...
и
Code:
select bukrs from bseg ...
Вы и не увидите :lol: а если итераций несколько миллионов, то и подавно :wink:

по последнему абзацу поддерживаю


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Ср, ноя 18 2009, 14:24 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
У меня тормозит выбор из Z-вской таблицы.
При анализе в se30 столкнулся с таким неприятным явлением. Провел анализ, отсортировал по нетто и вижу, что 80% нетто затрачивается на выборку из моей таблицы. Нажал на просмотр кода. Мне показался кусок кода. Я его оптимизировал, создав индекс для данного запроса.
Запускаю анализ - время работы не изменилось. Последующий анализ показал, что тот кусок кода, который мне показал SAP на самом деле вызывается всего один раз и на скорость работы влияет мало. Т.е. получается, что показывается не самая тормозная выборка из этой таблицы, а первая попавшаяся. Т.е. если в программе 2 селекта из этой таблицы, то SAP может показать вам запрос №1, хотя на самом деле самый тормозной запрос №2.
За все остальные советы спасибо.

Вообще я то надеялся, что буферизация - это буферизация запросов. Т.е. все запросы буферизируются и при повторе этих запросов данные берутся из КЭШа. А при внесении в таблицу изменений этот КЭШ сбрасывается.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Ср, ноя 18 2009, 14:43 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Дима написал:
никакой разницы между
Code:
select * from bseg ...
и
Code:
select bukrs from bseg ...
Вы и не увидите :lol: а если итераций несколько миллионов, то и подавно :wink:

даже более того - практически не увидите разницы между:
Code:
select bukrs from bseg ...

и
Code:
select * from bseg where ... buzei = 1
...
select * from bseg where ... buzei = n
select * from bset ....

в случае выборки по одному и тому же документу, естессно

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Ср, ноя 18 2009, 14:48 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Валерка написал(а):
У меня тормозит выбор из Z-вской таблицы.
При анализе в se30 столкнулся с таким неприятным явлением. Провел анализ, отсортировал по нетто и вижу, что 80% нетто затрачивается на выборку из моей таблицы. Нажал на просмотр кода. Мне показался кусок кода. Я его оптимизировал, создав индекс для данного запроса.
Запускаю анализ - время работы не изменилось. Последующий анализ показал, что тот кусок кода, который мне показал SAP на самом деле вызывается всего один раз и на скорость работы влияет мало. Т.е. получается, что показывается не самая тормозная выборка из этой таблицы, а первая попавшаяся. Т.е. если в программе 2 селекта из этой таблицы, то SAP может показать вам запрос №1, хотя на самом деле самый тормозной запрос №2.

Да все нормально SE30 показывает, видимо вы не умеете его готовить. Тренируйтесь больше :)

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Ср, ноя 18 2009, 15:01 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
ArmAnn написал:
Да все нормально SE30 показывает, видимо вы не умеете его готовить. Тренируйтесь больше :)

Я не исключаю своей кривости рук, поэтому и описал процесс получения неприятности так подробно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Ср, ноя 18 2009, 15:20 
Начинающий
Начинающий

Зарегистрирован:
Вт, ноя 17 2009, 12:21
Сообщения: 16
Для оптимизации работы с базой данных могу посоветовать не использовать select *, делайте выборки только нужных вам полей, тут тоже все зависит от ширины таблицы базы данных. Все выбранные данные будут гоняться между сервером базы данных и сервером приложений, хорошо если записей выбрано немного, а если наоборот, то это могут быть мегабайты или десятки мегабайт информации, что загружает как трафик, так и память обоих серверов. В кипе с другими тяжелыми процессами может быть очень неприятно.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Ср, ноя 18 2009, 15:24 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, май 14 2007, 13:05
Сообщения: 561
Откуда: Москва
Тр. ST05 еще посмотрите.

_________________
Sapere aude!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Чт, ноя 19 2009, 14:37 
Ассистент
Ассистент

Зарегистрирован:
Ср, дек 12 2007, 16:53
Сообщения: 29
походу тут используется select * .. endselect. этож долго используй select * into table, а лучше еще выбирать только конкретные поля, заметно ускорится.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Чт, ноя 19 2009, 15:18 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
На самом деле дело больше не в самих запросах, а в их количестве. Так что самый верный способ - переписать всё. :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Пт, ноя 20 2009, 08:49 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Валерка написал(а):
Так что самый верный способ - переписать всё. :(

...До тех пор, пока этот код не увидит другой русский программист.(с)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Пт, ноя 20 2009, 10:30 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
Старый код тоже мой. Просто когда писал, то надо было "быстро-быстро ещё вчера", поэтому теперь и появились проблемы с тормозами


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизация скорости работы
СообщениеДобавлено: Пт, ноя 20 2009, 13:45 
Начинающий
Начинающий

Зарегистрирован:
Пн, ноя 17 2008, 09:55
Сообщения: 13
а мы делали трассировочку SQL и заметили разницу в выполнении
select * from mseg... и select werks from mseg ...
кстати, это один из советов sap по производительности. Еще очень помогает читать во внутреннюю табличку, даже если вы в цикле по номеру читатете позиции документа. Читайте сразу во внутреннюю табличку и старайтесь избегать конструкцию corresponding fields


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB