|
|
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Существует таблица разбитая на партиции по годам как заставить Оракл выбирать только из конкретной партиции не указывая в селекте явно период? Oracle 9.2.0.4 Win2000 Server ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 09:20 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Это не из головы :) Срисовал пример. SELECT * FROM sales_detail_data partition (sales_q1_99); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 09:24 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
все пора в отпуск ну я ступил. СПАСИБО огромное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 09:33 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Дополнительный вопрос можно ли как-нибудь создать партицию в которую бы входили данные только за текущий месяц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 09:35 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
А чем ранжирование по дате не устаривает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 10:35 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
А можно ли указать несколько определенных партиций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 10:43 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
А что мешает организовать партицирование по месяцам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 10:53 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Видимо то, что они сами не создаются автоматически там где нужно и когда нужно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 11:00 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
авторА можно ли указать несколько определенных партиций? Добавьте в запрос условие на ключ секционирования. В доке ( 8.1.7 ) написано: FROM Clause query_table_expression_clause The FROM clause lets you specify the table, view, materialized view, or partition from which data is selected, or a subquery that specifies the objects from which data is selected. PARTITION (partition), SUBPARTITION (subpartition) Specify the partition or subpartition from which you want to retrieve data. The partition parameter may be the name of the partition within table from which to retrieve data or a more complicated predicate restricting retrieval to just one partition of the table . Кто-нибудь знает, что это за предикат в выражении PARTITION(...)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 11:03 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
авторА что мешает организовать партицирование по месяцам? Создавать партиции по месяцам как-то не очень хоЦЦа На самом деле необходимы данные именно по текущему месяцу и остальные по годам. Хотелось бы создать что-то типа PARTITION LESS2004 VALUES LESS THAN (' 2002-01-01') PARTITION LESS2004 VALUES LESS THAN (' 2003-01-01') PARTITION LESS2004 VALUES LESS THAN (' 2004-01-01') PARTITION LESS2004 VALUES LESS THAN (Last_Day(ADD_Month(sysdate,-1))+1) PARTITION CUR_MON VALUES LESS THAN (MAXVALUE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 11:23 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
а как вы собираетесь разруливать все это хозяйство? когда месяц закончится, что дальше? Можно создать партиции и сабпартиции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 12:12 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
А может это решить вообще в корне по другому? Держать текущий месяц вообще в другой таблице, а сваливать по расписанию в партиционированный архив в конце? Иначе прийдется вобще каждый месяц создавать новую партицию. Или я чего-то не понимаю? Кстати, какова цель партиционирования в вашем случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 12:45 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Например, можно решить задачу так: - создайте партицию на следующий месяц - первого числа каждого месяца соединяйте все партиции от начала года до предыдущего месяца и добавляйте одну на следующий (легко делается скриптом из крона или джоба). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 12:53 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
А как система перенесет объединение партиций? Ее не сплющит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 12:56 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Может, не стоит вообще завязываться на физическую структуру? Я бы за такие вещи в приложении известным образом кишки выпустилэ. Partition pruning не работает, что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2004, 13:04 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
авторИначе прийдется вобще каждый месяц создавать новую партицию. Или я чего-то не понимаю? В том то и дело что хотелось бы завязаться на SYSDATE PARTITION LESS2004 VALUES LESS THAN (Last_Day(ADD_Month(sysdate ,-1))+1) авторКстати, какова цель партиционирования в вашем случае? Табель по всему предприятию. (> 6000 чел.) авторДержать текущий месяц вообще в другой таблице, а сваливать по расписанию в партиционированный архив в конце? Такой вариант тоже рассматривался. Но система разрабатывалась не нами, и прийдется очень много переписывать функционала. авторМожет, не стоит вообще завязываться на физическую структуру? Я бы за такие вещи в приложении известным образом кишки выпустилэ. Partition pruning не работает, что ли? Что вы имели ввиду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 03:38 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Имел в виду грязный длинный тупой кухонный нож, вонзаемый в пузо автора приложения за такие вещи :) Зачем вводить в приложение логику непосредственной работы с партициями, если оптимизатор сам выберет нужные партиции, если в запросе есть дата и колонка с датой является (или входит первой в) ключом секционирования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 10:16 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Упс. Насчёт "входит первой в" я погорячился. Входить может в любом месте, но все остальные колонки ключа также должны присутствовать в запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2004, 10:18 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
to Tiger Ясно. А как насчет завизаться на системную дату? Как создать партицию текущего месяца? Ну неохота создавать партиции на каждый месяч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 03:12 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Так товарищ Скотт Тайгер, ножик уберите пожалуйста. Без фанатизма пожалуйста. Я как DBA вас конечно понимаю, даже сочувствую. Однако реальная система - это всегда компромисс. Вам никогда не встречались execution plans при которых оракл сканирует все партиции, а не только ту где лежат искомые данные? Мне встречались. Таблица разбита по месяцам, ищу данные за янарь 2003 г. Оракл, зараза, сканирует с 1999 по 2004. А таблицы где в январской партиции валяются февральские данные вы не встречали? Я опять-таки встречал, так что Оракл не зря сканирует всю таблицу. Так что, указывать партицию хоть и не элегантно, но приемлемо. Точно так же как диктовать оптимизатору план хинтами. Тоже завязка кода на "физическую реализацию" а именно -на имя индекса. А что делать, кому сейчас легко, при объемах баз измеряемых двузначными цифрами в терабайтах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 07:32 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Блин. 6000 счетов для оракла - это много??? Максимальное количество записей в таблице? Железо: Количество дисков? Кол-во процессоров? Память? Наблюдаются проблемы производительности? Какие? Потом дальше будем разговаривать. Я вообще возможно некопенгаген в этом вопросе, но я видел своими глазами, когда партиционированная таблица не только не давала выигрыша, а наоборот. Спрашивается, а чем вызвано такое стремление к партиционированию вообще??? Не хватает места на одном носителе под таблспейс с этой таблицей???? Глупо это. Нужно просто протрэйсить проблемные процедуры, оттюнить запросы тормозные и создать индексы грамотно и еще раз оттюнить :) Потом уже можно по книжкам покопаться - нарыть запросиков, которые выявляют узкие места системы. Если сервер по умолчанию настроен, то к бабке не ходи - область сортировки маленькая, буферкэш маленький, логбуфер наверняка маленький. Но начать надо с того: "а чем собственно я сейчас недоволен?" В противном случае с партициями родишь себе такой гиморой... И вообще есть такая истина: тюнингом памяти, дисков, апгрэйдом железа можно добиться прироста производительности в 10-50%, а созданием необходимого индекса, удалением ненужного, оптимизацией кода можно добиться 100-1000% прироста производительности. Так что для начала определитесь с целями ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 09:51 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
В догонку. Ну ладно, ты по крону в 00:00 1 числа месяца пускаешь sqlplus со скриптом который берет и создает новую партицию, отталкиваясь от текущей даты. НО! Кто будет эти партиции распределять по носителям (то бишь по таблспейсам) именно так, как это выгодно в плане производительности? Или партиции все лежат на одном диске и нужны только для ограничения диапазона сканирования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 10:01 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Самая веселуха начинается, когда впопыхах кто-то добавит ещё одну партицию и весь супер-пупер алгоритм "я умнее CBO" летит к чёрту, а потом сиди и лови глюки. Оно, конечно, понятно насчёт "щетильнее надо", но такое вполне может быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 10:26 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
то СКОТТ авторСамая веселуха начинается, когда впопыхах кто-то добавит ещё одну партицию и весь супер-пупер алгоритм "я умнее CBO" летит к чёрту, а потом сиди и лови глюки. Оно, конечно, понятно насчёт "щетильнее надо", но такое вполне может быть. Согласен. то Alexander Dubrovsky автор6000 счетов для оракла - это много??? Вы про какие счета? авторМаксимальное количество записей в таблице? 6000(чел)*365(дней)*3(года)=6570000 (это пока) авторЖелезо: Количество дисков? Кол-во процессоров? Память? Вот с этим худо. 5x72 дисков RAID5 4xXeon 900MHz 4GB авторНаблюдаются проблемы производительности? Какие? Что значит какие, естественно что долго выполняются запросы. авторНужно просто протрэйсить проблемные процедуры, оттюнить запросы тормозные и создать индексы грамотно и еще раз оттюнить :) Пробуем`с. авторЕсли сервер по умолчанию настроен, то к бабке не ходи - область сортировки маленькая, буферкэш маленький, логбуфер наверняка маленький. db_block_size=16384 db_file_multiblock_read_count=16 log_buffer = 3145728 db_block_buffers = 57600 sort_area_size =5242880 sort_area_retained_size = 1048576 авторВ противном случае с партициями родишь себе такой гиморой... Например плиз. авторИ вообще есть такая истина: тюнингом памяти, дисков, апгрэйдом железа можно добиться прироста производительности в 10-50%, а созданием необходимого индекса, удалением ненужного, оптимизацией кода можно добиться 100-1000% прироста производительности. Абсолютно согласен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 11:29 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
автор 6000(чел)*365(дней)*3(года)=6570000 (это пока) автор Железо: Количество дисков? Кол-во процессоров? Память? Вот с этим худо. 5x72 дисков RAID5 4xXeon 900MHz 4GB автор Наблюдаются проблемы производительности? Какие? Что значит какие, естественно что долго выполняются запросы. Хм. 6 млн записей - это в общем то тьфу. Процов выше крыши, памяти тоже. Вроде и настройки памяти в порядке... на первый взгляд конечно :) Тока вот где-то я читал, что после 1Мб сорт арии наступает насыщение. Может я чего-то не того - поправьте. Но это не суть. Насчет RAID тут ща начнется :) А зачем все в один райд? К чему партиции? Параллелизма никакого не получится путем. Если бы хоть датафайлы на разных носителях.... Я должно быть опять не в тему :) RAID5 вообще так себе решение - медленно работает. Хочешь быстро - ставь страйп, страйп+миррор или вообще по отдельным носителям раскладывай датафайлы. Ну да это видимо поздно делать уже... Так может просто еще и запросы такие? А насчет гимороя - просто путанница вот чего. Чем больше всего, тем труднее управляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 11:49 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
авторХм. 6 млн записей - это в общем то тьфу. Процов выше крыши, памяти тоже. С этим я и не спорю, я имел ввиду под словом худо это что винтов всего 5. авторТока вот где-то я читал, что после 1Мб сорт арии наступает насыщение. Невстречал. Если что кинь ссылку авторНасчет RAID тут ща начнется :) Во во я про тоже. авторА зачем все в один райд? Винтов мало авторК чему партиции? Уменьшить так сказать диапазон сканирования хотябы. авторRAID5 вообще так себе решение - медленно работает. Хочешь быстро - ставь страйп, страйп+миррор или вообще по отдельным носителям раскладывай датафайлы. Собственно говоря в такой ситуации выхода другого небыло. авторТак может просто еще и запросы такие? Тяжелые не спорю, но уж сильно долго ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 11:55 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Дык на счет запросов то? Тюнить не пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 12:35 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
авторДык на счет запросов то? Тюнить не пробовали? Дык, канэчна пробовали, в канечном результате получили так сказать убыстрение процентов на 15. Но это не спасло отца русской демократии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2004, 02:48 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Есть таблица с помесячным ранжированием по дате (less than...) Если делать к ней запрос типа Код: plsql 1. 2. 3. 4. То план показывает партишн пранинг. Если же обращение к таблице идет внутри большого запроса и период вычисляется подзапросом, то пранинг отваливается (по чем зря) и ответа не дождаться. Снова делаем отдельно запрос Код: plsql 1. 2. 3. Где в подзапросе даты по сути того же периода что в первом варианте. Снова пишет, что патишены подхватываются. А если засунуть этот же запрос в большой запрос, где table1 джойнится еще с пятью другими таблицами, то пранинг снова отваливается (но иногда рисует и хороший план) Пробовал материализовать подзапросы с диапазоном дат - не помогает, работает нестабильно. Еще попробую precompute_subquery, но не уверен, что поможет, да и не документирован вроде как. Вопрос есть ли хинты, подсказывающие, что надо юзать например патишн рейндж скан, а не патишн лист all? Или может нюансы написания запросов, чтобы подхватывались патиции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 06:52 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Priehali, Код: plsql 1. 2. 3. 4. 5. дополнительные условия не помогут ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 07:18 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Anatoly_b, пробовал, не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 08:40 |
|
||
|
Как заставить выбирать только из определенной партиции?
|
|||
|---|---|---|---|
|
#18+
Priehali, О хоспаде, ты хоть в культурном обществе не называй прунинг пранингом а то люди не поймут. Если хочется hash join с основной таблицей и range по ней, то должен примениться bloom filter. В некоторых случаях с этим могут быть проблемы, так что показывай конкретный пример. Извращения с precompute_subquery или материализацией это из области неадекватного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 12:58 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1886084]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 527ms |

| 0 / 0 |
