Текущее время: Вт, июн 04 2024, 23:43

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Вт, авг 03 2010, 12:02 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
DarZ написал(а):
ArmAnn написал:
Потому что во первых - судя по всему для этой задачи он не пригодится, во вторых - есть некоторые сомнения в том что вы его правильно сделали. Кроме STBLG и STJAH какие нибудь поля в этом индексе присутствуют?

Как я и написал только STBLG и STJAH...

Это не совсем правильно. Если такой индекс вам все таки нужен - то лучше будет его сделать например таким: 'MANDT BUKRS STBLG STJAH'.
Но без необходимости индексы не лучше создавать - бесполезная трата ресурсов БД

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Вт, авг 03 2010, 12:11 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
ArmAnn написал:
Это не совсем правильно. Если такой индекс вам все таки нужен - то лучше будет его сделать например таким: 'MANDT BUKRS STBLG STJAH'.
Но без необходимости индексы не лучше создавать - бесполезная трата ресурсов БД


Кстати, насчет манданта - отдельный и очень интересный вопрос. Сам-то я его ставлю, но САП в одной из нот прямо пишет, что он вовсе не обязателен (для одномандантных систем, ессно) и сам в своих индексах он в over 50% случаев его не ставит :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Вт, авг 03 2010, 12:19 
Специалист
Специалист

Зарегистрирован:
Пн, дек 21 2009, 11:07
Сообщения: 167
ArmAnn написал:
Это не совсем правильно. Если такой индекс вам все таки нужен - то лучше будет его сделать например таким: 'MANDT BUKRS STBLG STJAH'.
Но без необходимости индексы не лучше создавать - бесполезная трата ресурсов БД

Sergeant написал(а):
Кстати, насчет манданта - отдельный и очень интересный вопрос. Сам-то я его ставлю, но САП в одной из нот прямо пишет, что он вовсе не обязателен (для одномандантных систем, ессно) и сам в своих индексах он в over 50% случаев его не ставит :)

Спасибо, буду иметь ввиду


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Вт, авг 03 2010, 12:20 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Sergeant написал(а):
Кстати, насчет манданта - отдельный и очень интересный вопрос. Сам-то я его ставлю, но САП в одной из нот прямо пишет, что он вовсе не обязателен (для одномандантных систем, ессно) и сам в своих индексах он в over 50% случаев его не ставит :)

Не обязательно, но там есть нюансы :)
Развернуто о этих нюансах можно почитать в книге 'ABAP Perfomance Tuning', Hermann Gahm
ИМХО в общем случае лучше все таки включать поле MANDT в индекс

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Вт, авг 03 2010, 12:58 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
Ну, я немного знаю про ньюансы :), но книгу почитал бы. К сожалению, не могу найти ее в электронке.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Вт, авг 03 2010, 13:10 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Sergeant написал(а):
Ну, я немного знаю про ньюансы :), но книгу почитал бы. К сожалению, не могу найти ее в электронке.

увы :(
Сам взял бумажную почитать у коллеги

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Вт, авг 03 2010, 13:19 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Руководствуясь здравым смыслом и революционным чутьем всегда ставлю MANDT в индексы, т.к.:
1. SAP в любой SELECT невозбранно вставляет условие выбора по манданту.
2. Я предпочитаю INDEX SCAN без SKIPа.
3. Доп. нагрузка на СУБД при вставке записей меняется в микромасштабах в случае включения/исключения манданта.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Ср, авг 04 2010, 01:28 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
Про мандант в начале индекса - есть небольшое противоречие которое меня всегда смущало:
По теории в начале индекса надо размещать поля с наибольшей селективностью, а у поля мандант как правило селективность низкая (можно сказать в обще никакая)
С другой стороны мандант присутствует во всех запросах к таблице (специфические случаи в расчёт не берём)

Вот и думай как тут правильно делать.

Я обычно всё же ставлю мандант в начало индекса

_________________
Изображение Попытка не пытка


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Ср, авг 04 2010, 09:33 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
А зачем тогда при выборке вообще использовать BUKRS? :?
Ключевыми полями для MSEG являются MBLNR MJAHR и ZEILE.
Кроме этого перед SELECT нужно проверить SMBLN на непустое значение и только тогда делать SELECT.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Ср, авг 04 2010, 10:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
Удав написал(а):
Кроме этого перед SELECT нужно проверить SMBLN на непустое значение и только тогда делать SELECT.

это я лишку хватил :)
Просто обычно задача по удалению сторно ставится от обратного - берутся все записи за период, затем ищутся документы сторно (SMBLN is not initial) и по ним убираются сторнированные документы :wink:

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Вт, авг 10 2010, 18:47 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, фев 02 2009, 10:20
Сообщения: 89
Пол: Мужской
DKiyanov написал:
Про мандант в начале индекса - есть небольшое противоречие которое меня всегда смущало:
По теории в начале индекса надо размещать поля с наибольшей селективностью, а у поля мандант как правило селективность низкая (можно сказать в обще никакая)
С другой стороны мандант присутствует во всех запросах к таблице (специфические случаи в расчёт не берём)
Вот и думай как тут правильно делать.
Я обычно всё же ставлю мандант в начало индекса

САПовцы сами по-разному делают...если примеров с мандантом в начале индекса достаточно много, то в табличке GLREFO есть пример обратного подхода.

_________________
периодически играю в песочнице :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Ср, авг 11 2010, 11:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
DKiyanov написал:
Про мандант в начале индекса - есть небольшое противоречие которое меня всегда смущало:
По теории в начале индекса надо размещать поля с наибольшей селективностью, а у поля мандант как правило селективность низкая (можно сказать в обще никакая)
С другой стороны мандант присутствует во всех запросах к таблице (специфические случаи в расчёт не берём)

Вот и думай как тут правильно делать.

Я обычно всё же ставлю мандант в начало индекса

Воистину, "думай как тут правильно делать"! Ибо теория про наибольшую селективность для тех, кто совсем не хочет думать. Сам термин "селективность" неотъемлем от "Select", т.е необходимо рассматривать конкретные запросы, их условия, частоту их использования. С этой точки зрения, например, поле "MANDT" стоит абсолютно правильно в начале всех индексов.

p.s.
В своё время я даже с одним базисником поспорил об оптимальности построения индекса, решили протестить. Он построил один индекс исходя из селективности, другой исходя из моих рекомендаций. Выборка по моему индексу с небольшим отрывом победила. :)

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Ср, авг 11 2010, 11:41 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Parazit написал:
Воистину, "думай как тут правильно делать"! Ибо теория про наибольшую селективность для тех, кто совсем не хочет думать. Сам термин "селективность" неотъемлем от "Select", т.е необходимо рассматривать конкретные запросы, их условия, частоту их использования. С этой точки зрения, например, поле "MANDT" стоит абсолютно правильно в начале всех индексов.

p.s.
В своё время я даже с одним базисником поспорил об оптимальности построения индекса, решили протестить. Он построил один индекс исходя из селективности, другой исходя из моих рекомендаций. Выборка по моему индексу с небольшим отрывом победила. :)

Там не все так просто - например даже при наличии подходящего индекса может дешевле оказаться сделать фулл скан, что оптимизатор БД и сделает. Все зависит от размера индекса, размера таблицы, статистики и тому подобной хрени.
Но в общем случае все таки индекс лучше начинать с поля с наибольшей селективностью - на просмотр индекса тоже нужно время, и чем раньше ограничить просматриваемое пространство - тем лучше

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Ср, авг 11 2010, 12:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
ArmAnn написал:
Но в общем случае все таки индекс лучше начинать с поля с наибольшей селективностью - на просмотр индекса тоже нужно время, и чем раньше ограничить просматриваемое пространство - тем лучше

Это в случае, если большинство запросов к таблице идет по одним и тем же полям.
Если индекс планируется использовать в разных запросах, то расположение полей в нем нужно строить исходя из условий всех этих запросов.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос производительности (MSEG, BKPF)
СообщениеДобавлено: Ср, авг 18 2010, 00:45 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
Цитата:
В части выборки из BKPF производительность сильно падает, закоментировав же эту часть кода программа отрабатывает за секунды. Есть ли красивое решение поднять производительность?
Создал (не уникальный всех систем БД) индекс к таблице BKPF для полей STBLG STJAH. Не совсем помогло...


Если я правильно понимаю, для тех документов, для которых нет документов сторно, это поле "пусто" (initial).
То есть например 10-20% записей имеют непустые эти поля (в лучшем случае), а остальные "пустые".

В этом случае это "плохой" индекс. У него большая селективность, но значения = initial занимают большую часть записей. Поэтому любое условие stblg = ' ' (типа нет документов сторно) может приводить к "подвисанию" селекта. Это связано с тем, что оптимизатор видя хорошую селективность выбирает этот индекс, но выборка по пустому значению по сути равняется full scan-у.

Если не вам, то вашим коллегам или даже стандарту индекс может очень навредить. Лучше таких индексов избегать. Но если такой индекс все-таки пришлось создать, желательно избегать условий вроде stblg = ' ' (ну и stjah, bukrs тоже, я просто опускаю для простоты).


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

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


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

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


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

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