Текущее время: Чт, май 15 2025, 13:23

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


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


ВНИМАНИЕ! Прежде чем задавать вопрос, ознакомьтесь со ссылками ниже:

Вопросы по отличиям версий SAP, Add-On, EHP - сюда
Вопросы по SAP Front End (SAPlogon, SAPgui, guiXT и т.д.) - сюда
Вопросы по LSMW - сюда
Вопросы по архивации в SAP - сюда
Вопросы по SAP GRC - сюда
Вопросы по SAP Business Workplace (почте SAP) и SAP Office - сюда
Вопросы по miniSAP (SAP mini basis) - сюда
Вопросы по SAP HANA - сюда
Вопросы по лицензированию продуктов SAP - сюда



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Ср, окт 16 2013, 14:07 
Ассистент
Ассистент

Зарегистрирован:
Ср, янв 18 2012, 07:36
Сообщения: 41
Откуда: Югорск
Пол: Мужской
Возникла задача - мониторить факт изменений определённой очень ограниченной группы полей за фиксированный период. Скорость обращения к CDPOS не то чтобы очень.
Можно ли из числа полей, входящих в первичный ключ кластера построить альтернативный unique-индекс, чтобы select шёл через index range scan по нему (например поднять CDPOS-CHANGENR в левую часть индекса)? Или для кластерных таблиц так впринципе делать нельзя (rdbms oracle)?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Ср, окт 16 2013, 15:04 
Менеджер
Менеджер

Зарегистрирован:
Пн, фев 11 2008, 11:38
Сообщения: 625
Pavel Berezin написал:
Возникла задача - мониторить факт изменений определённой очень ограниченной группы полей за фиксированный период. Скорость обращения к CDPOS не то чтобы очень.
Можно ли из числа полей, входящих в первичный ключ кластера построить альтернативный unique-индекс, чтобы select шёл через index range scan по нему (например поднять CDPOS-CHANGENR в левую часть индекса)? Или для кластерных таблиц так впринципе делать нельзя (rdbms oracle)?

Нет такой таблички в базе , это кластерная табличка.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Ср, окт 16 2013, 18:19 
Ассистент
Ассистент

Зарегистрирован:
Ср, янв 18 2012, 07:36
Сообщения: 41
Откуда: Югорск
Пол: Мужской
ну кластер-то (CDCLS помоему) есть. И кокпит explain показывает к нему планы также как и для плоских таблиц.

Вопрос собственно - допустимо ли на уровне rdbms создавать к нему индексы (альтернативные первичные ключи), минуя инструментарий SE11?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Чт, окт 17 2013, 11:54 
Менеджер
Менеджер

Зарегистрирован:
Пн, фев 11 2008, 11:38
Сообщения: 625
Конкретно к этой табличке не знаю , нет времени посмотреть для чего она там кластерная. А так обычно и создают индекс в оракле на прямую , потом через se11 активируете(как бы создадите) и будет вам такой индекс какой вы хотите. Se11 не умеет онлайн создавать индексы ( не умел , может в 7.31 и научился , не проверял еще ) так что создание в БД на прямую это обычное и единственное нормальное решение без проблем для продуктива. (потом запрос просто принесет данные об индексе из разработки)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Чт, окт 17 2013, 16:20 
Ассистент
Ассистент

Зарегистрирован:
Ср, янв 18 2012, 07:36
Сообщения: 41
Откуда: Югорск
Пол: Мужской
:shock:

мы вобщето со времён 4.6 индексы создаём ТОЛЬКО в SE11 (хоть онлайн, хоть через фоновое задание). Просто для кластерных в SE11 соответствующая кнопка "Индексы" заблокирована впринципе. И соответственно возникли сомнения - если в обход SE11 напрямую в RDBMS команду create index отправить, не покривеет ли чего.
Хз вдруг там индексы в БД какойто служебной "структурой" обвязывается при создании через SE11.

Попробую промоделировать.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Чт, окт 17 2013, 16:52 
Менеджер
Менеджер

Зарегистрирован:
Пн, фев 11 2008, 11:38
Сообщения: 625
Ну посмотрел я что за CDCLS , к чему вы там будете индекс прилеплять ? Думаю что это не возможно , может кто поправит если не прав.

А "онлайн" вы не правильно поняли.
Когда вы создаете индекс через se11 ну и потом несете его запросом , то в оракле индекс создается без опции Online (доступна если не ошибаюсь с 10 оракла уже).
Если вы индекс такой начнете запиливать на большую таблицу в которую еще и пишут что нибудь , то будет вам счастье в виде Exclusive Lock wait + само создание индекса будет в один поток (оч долго) ,
при создании на прямую в оракле можно использовать параллельное создание (потом только обязон отключить это дело) что ускорит процесс многократно. У нас оч большие базы , других вариантов и нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Пт, окт 18 2013, 08:36 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Pavel Berezin написал:
мы вобщето со времён 4.6 индексы создаём ТОЛЬКО в SE11 (хоть онлайн, хоть через фоновое задание). Просто для кластерных в SE11 соответствующая кнопка "Индексы" заблокирована впринципе. И соответственно возникли сомнения - если в обход SE11 напрямую в RDBMS команду create index отправить, не покривеет ли чего.
ИМХО - создавать можно, оптимизатору БД пофиг на то, знает R/3 про этот индекс или нет

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Пт, окт 18 2013, 09:22 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 21 2012, 22:00
Сообщения: 248
ArmAnn написал:
Pavel Berezin написал:
мы вобщето со времён 4.6 индексы создаём ТОЛЬКО в SE11 (хоть онлайн, хоть через фоновое задание). Просто для кластерных в SE11 соответствующая кнопка "Индексы" заблокирована впринципе. И соответственно возникли сомнения - если в обход SE11 напрямую в RDBMS команду create index отправить, не покривеет ли чего.
ИМХО - создавать можно, оптимизатору БД пофиг на то, знает R/3 про этот индекс или нет


ArmAnn я слышал краем уха что когда из open sql в native sql селект переколбашивается, то отрабатывает некий оптимизатор запроса, но вроде он на AS в форме какого-то процесса (или части процесса). Это тот самый? Тогда вопрос - не повлияет ли отсутствие индекса, на то что он не отработает? Или имеется ввиду оптимизатор со стороны БД?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Пт, окт 18 2013, 10:20 
Менеджер
Менеджер

Зарегистрирован:
Пн, фев 11 2008, 11:38
Сообщения: 625
ArmAnn написал:
Pavel Berezin написал:
мы вобщето со времён 4.6 индексы создаём ТОЛЬКО в SE11 (хоть онлайн, хоть через фоновое задание). Просто для кластерных в SE11 соответствующая кнопка "Индексы" заблокирована впринципе. И соответственно возникли сомнения - если в обход SE11 напрямую в RDBMS команду create index отправить, не покривеет ли чего.
ИМХО - создавать можно, оптимизатору БД пофиг на то, знает R/3 про этот индекс или нет

Ну вы попробуйте на этой табличке создайте , если найдете на чем создавать, вопрос не про в принципе , а конкретно про кластер CDCLS.
P.S. to Pavel Berezin , вот можете почитать отличное разъяснение от Mark Mergaerts (работает в SAP) почему эта затея не прокатит :
http://scn.sap.com/thread/421646


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Пт, окт 18 2013, 10:35 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Ice_age написал(а):
ArmAnn я слышал краем уха что когда из open sql в native sql селект переколбашивается, то отрабатывает некий оптимизатор запроса, но вроде он на AS в форме какого-то процесса (или части процесса). Это тот самый? Тогда вопрос - не повлияет ли отсутствие индекса, на то что он не отработает? Или имеется ввиду оптимизатор со стороны БД?
Имеется ввиду оптимизатор на стороне БД. Тот оптимизатор на стороне AS, про который вы пишете - это вероятно Database Interface, оптимизация там другого рода - это чтение из буфера вместо БД, выдача уже обработанных данных кластерной таблицы (например если вы считали BSEG - то пойдет запрос в БД к таблице RFBLG, а потом считали BSET - то второго запроса в БД не будет, вам DBI сразу выдаст данные)

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


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

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
SergoB написал(а):
Ну вы попробуйте на этой табличке создайте , если найдете на чем создавать, вопрос не про в принципе , а конкретно про кластер CDCLS.
P.S. to Pavel Berezin , вот можете почитать отличное разъяснение от Mark Mergaerts (работает в SAP) почему эта затея не прокатит :
http://scn.sap.com/thread/421646
Там немного не о том - Марк отвечает что нельзя создать вторичный индекс на поля BSEG (так как таблица 'виртуальная'), но Павел то хочет создать индекс на реальное поле реальной таблицы. Так как таблица кластерная - САП такое не позволяет, но не вижу причин почему нельзя создать индекс на уровне БД

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Пт, окт 18 2013, 10:51 
Менеджер
Менеджер

Зарегистрирован:
Пн, фев 11 2008, 11:38
Сообщения: 625
ArmAnn написал:
SergoB написал(а):
Ну вы попробуйте на этой табличке создайте , если найдете на чем создавать, вопрос не про в принципе , а конкретно про кластер CDCLS.
P.S. to Pavel Berezin , вот можете почитать отличное разъяснение от Mark Mergaerts (работает в SAP) почему эта затея не прокатит :
http://scn.sap.com/thread/421646
Там немного не о том - Марк отвечает что нельзя создать вторичный индекс на поля BSEG (так как таблица 'виртуальная'), но Павел то хочет создать индекс на реальное поле реальной таблицы. Так как таблица кластерная - САП такое не позволяет, но не вижу причин почему нельзя создать индекс на уровне БД

А вы просто не внимательно прочитали , почитайте еще раз про то что содержится в RFBLG (аналог CDCLS) в данном случае.
Создать то можете , но какой в этом смысл ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Пт, окт 18 2013, 12:19 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
SergoB написал(а):
А вы просто не внимательно прочитали , почитайте еще раз про то что содержится в RFBLG (аналог CDCLS) в данном случае.
Создать то можете , но какой в этом смысл ?
спасибо за совет, но я знаю что содержится в RFBLG :)
Смысл такой:
Есть в программе запрос к CDPOS (не спрашивайте меня почему без OBJECTCLAS и OBJECTID, это в условии задачи)
Code:
SELECT * FROM CDPOS WHERE CHANGENR IN R_CNHGNR

На уровне БД увидим такой запрос:
Code:
SELECT * FROM CDCLS WHERE MANDT = '100' AND CHANGENR IN R_CNHGNR

При выполнении этого запроса получим фактически полный перебор по первичному индексу (так как OBJECTCLAS и OBJECTID не известны).
Если сделаем отдельный индекс на поле CHANGENR таблицы CDCLS - то в таком случае все поля индекса будут известны, а значит выборка будет гораздо более эффективной.

P.S. Однако это все теоретические изыскания. Самый надежный способ - сделать индекс и проверить

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Пт, окт 18 2013, 12:55 
Менеджер
Менеджер

Зарегистрирован:
Пн, фев 11 2008, 11:38
Сообщения: 625
Я подозреваю что есть более правильное решение чем корежить кластер на уровне оракла , может быть есть другие таблицы откуда можно выудить информацию ( я не функциональщик , честно не знаю).
Просто если объект нельзя объявить в DDIC - потенциально это не очень, (пропадет при выгрузке к примеру R3load -ом).
Да и как бы такой индекс не подхватился там где он совсем не нужен , Oracle Optimizer очень загадочная штука от версии к версии.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дополнительный индекс к кластерной таблице CDPOS ?
СообщениеДобавлено: Пт, окт 18 2013, 18:55 
Ассистент
Ассистент

Зарегистрирован:
Ср, янв 18 2012, 07:36
Сообщения: 41
Откуда: Югорск
Пол: Мужской
нету увы других.

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

Я же просто хочу "вывернуть наизнанку" те поля, что входят в первичный ключ кластера (в частности, сместить CHANGENR левее OBJECTID, чтобы запрос "дай мне все изменения материалов за диапазон дат" шёл с меньшим IOCost - в точности как ArmAnn сказазал)


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

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


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

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


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

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