powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Построить view на звезде
14 сообщений из 14, страница 1 из 1
Построить view на звезде
    #39684093
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
Мысли вслух.
Построена витрина, хранящая в себе числовые показатели несколько id - ссылки на справочники. Витрина - большая, сейчас порядка 12 млн записей, после внедрения будет быстро расти. Заказчик изначально просил витрину с текстовыми полями, моя инициатива хранить и создавать в виде звезды. Справочники маленькие, от 1000 записей до 30 000.
Решил создать view - связку. Играю с хинтами и пытаюсь убить несколько зайцев.
1) Хочется, чтоб первые две записи вернулись быстро.
2) Если витрину будут использовать для полного сканирования и подсчета агрегатов, хочется чтоб скорость не подкачала.
Обычный хинт first_rows решает первую задачу и делает доступ ко всем таблицам через nested loops. Сначала читается большая таблица, и для каждой прочитанной строчки nested loop по остальным таблицам. Где-то есть индексы, где-то нет. Соответственно, оракл старается их использовать. Мне кажется для полного сканирования такой доступ будет долгим.
Чего хотелось бы добиться, но никак не получается. Сервер читает все справочники в память, создав хеш функцию по связываемым полям. Затем читает фулом большую таблицу и по хешу находит строчки из всех справочников. Если таблицы две (большая и маленькая) - получается. Больше - никак.
Делитесь опытом. Реально ли это? И как вы поступаете в такой стандартной ситуации.
И еще. По инструменту Пользуюсь PL/SQL developer - есть вопросы по сканированию explain_plan работающего запроса. Мне кажется, работающий запрос не всегда идет по тому плану, который он предварительно показывает. Есть ли возможность просканировать план работающей сессии.
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684231
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bhr,

bhrИ еще. По инструменту Пользуюсь PL/SQL developer - есть вопросы по сканированию explain_plan работающего запроса. Мне кажется, работающий запрос не всегда идет по тому плану, который он предварительно показывает. Есть ли возможность просканировать план работающей сессии.

Код: plsql
1.
2.
3.
4.
5.
6.
select * from table(dbms_xplan.display_cursor('sql_id'))
SELECT DBMS_SQLTUNE.report_sql_monitor(
  sql_id       => '78xw3h8td4wuk',
  type         => 'HTML',
  report_level => 'ALL') AS report
FROM dual;
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684233
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bhr,

Начать с анализа предикатов, рассмотрения вариантов партиционирования, индексирования, денормализации.
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684235
feagor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bhr,
как часто обновляются данные витрины? база OLAP или OLTP? Возможно имеет смысл делать материализацию
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684242
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
AmKadbhr,

Начать с анализа предикатов, рассмотрения вариантов партиционирования, индексирования, денормализации.
Я наверно неправильно описал проблему. Или читатели не предполагали, что ставится такая нелогичная задача.
Где и как будет использоваться вьюха - неизвестно. Основная витрина неимеет ни индексов ни партиций. Нужны они или нет - будет известно лишь, когда будут конкретные задачи на ней. для меня заказчик - черный ящик. попросил витрину, я сделал. что он с ней будет делать - пока не знаю. Возможно, просто заберет все данные в САС и будет там лопатить. Тем не менее. коль скоро я вместо витрины даю ему вьюху, хочется чтоб доступ к ней был "быстрым". тут то и возникает вопрос, что считать быстрым. просто селект из нее чтоб первые строки глянуть. Или селект всей таблицы, чтоб выгрузить куданить....
В принципе, пока формулировал впрос, ответ назрел. Нефиг ему с вьюхой лопатить, пусть понимает структуру данных и если нужно сделать суммирование всего с группировкой, пусть использует исходную таблицу или обращается ко мне.
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684247
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
feagorbhr,
как часто обновляются данные витрины? база OLAP или OLTP? Возможно имеет смысл делать материализацию
когда все будет протестировано, витрина будет инкрементно дозаполняться несколько раз в день.
пока все заполняется сразу - транкейт и заполнение с нуля.
возможно создам партиции по датам (по месяцам или дням).
Материализация? 5 полей varchar2(256) - 100 млн записей за год (ориентировочно).
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684248
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bhrГде и как будет использоваться вьюха - неизвестно. Основная витрина неимеет ни индексов ни партиций. Нужны они или нет - будет известно лишь, когда будут конкретные задачи на ней. для меня заказчик - черный ящик. попросил витрину, я сделал. что он с ней будет делать - пока не знаю.Не стоит делать сегодня то, что придется переделывать завтра.
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684254
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
AmKad,
думаю, Вы правы
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684277
IMNO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bhrНужны они или нет - будет известно лишь, когда будут конкретные задачи на ней.
Том Кайт в своей книге писал, что худшее, что вы можете сделать, это тестировать приложение в производственных условиях.
Если Вы не знаете нужны индексы или нет, то значит плохо проанализировали задачу. Значит стоит вопрос не как написать селект с хинтами, а как правильно спроектировать базу.
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684296
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
IMNObhrНужны они или нет - будет известно лишь, когда будут конкретные задачи на ней.
Том Кайт в своей книге писал, что худшее, что вы можете сделать, это тестировать приложение в производственных условиях.
Если Вы не знаете нужны индексы или нет, то значит плохо проанализировали задачу. Значит стоит вопрос не как написать селект с хинтами, а как правильно спроектировать базу.
тестировать приложение в производственных условиях
В dwh жизнь размеренна и нетороплива. пользователей объектов - полторы штуки в день. ничего страшного не произойдет.
то значит плохо проанализировали задачу
Мир вообще несовершенен, я с этим смирился. Я тут работаю всего ничего. и начал с расчета, который несколько часов считался. довел до нескольких минут. Проектирование базы в мои обязанности не входило. Конечную задачу мне никто не ставил. возможно заказчики ее сами не знают, ибо анализ данных - процесс творческий. их бизнеслогика интересует, а не структурирование и хранение данных.
И их слово последнее - мы под них подстраиваемся, а не они под нас.
А так да. Ошибок много. и глобальная - не неправильное проектирование базы, а возможно рождение не в ту эпоху, не в той стране и не в том статусе.
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684308
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684379
казинак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bhr,


если по Инмону - материализуй все что можно
если по Кимпбалу, то звезда, или звезды, но не снежинка
и битмап индексы, и стар трасформейшн

bhrМне кажется, работающий запрос не всегда идет по тому плану, который он предварительно показывает. Есть ли возможность просканировать план работающей сессии.explain plan и autotrace могут отличаться от фактического плана,
оракл же типа суперпупер адаптивная система и может, в зависимости от бинд переменных, на лету план пересчитать

такшта, dbms_xplan - можно посмотреть план последнего выполнившегося запроса, ну и др возможности есть
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684409
bhr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bhr
Гость
казинактакшта, dbms_xplan - можно посмотреть план последнего выполнившегося запроса, ну и др возможности есть
спасибо, попробовал. Более того. нашел это в pl_sql developer. В окне сессий можно глянуть конкретную работающую сессию и в одной из нижних закладок (sql monitoring) - действующий план. Какой-то весь цветастый, непривычный. спасибо.
...
Рейтинг: 0 / 0
Построить view на звезде
    #39684890
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bhrспасибо, попробовал. Более того. нашел это в pl_sql developer. В окне сессий можно глянуть конкретную работающую сессию и в одной из нижних закладок (sql monitoring) - действующий план. Какой-то весь цветастый, непривычный. спасибо.
SQL Monitoring - это не рекомендованный выше план dbms_xplan, это dbms_sqltune.report_sql_monitor.
У Вас ведь приобретена опция Oracle Tuning Pack, в рамках которой он лицензируется, да?
Если в окне Sessions PL/SQL Developer нажмете на иконку гаечного ключа (в верхней части, рядом с выпадающим списком), то попадете в диалог, где можно настраивать фильтры (а до кучи - заменить, к примеру, все обращения к v$ на gv$, что удобно если RAC). А на закладочке Details этого диалога - как раз будет возможность посмотреть как формируется деталька к списку сессий, поправить существующее окошко и добавить своё - например, с вызовом dbms_xplan :).
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Построить view на звезде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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