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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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