Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Выделение экстентов  [new]
lari
Member

Откуда:
Сообщений: 382
ДОброго дня!

Подскажите пожалуйста почему не функционирует механизм выделения экстентов в моем случае.
Создаю таблицу:
create table
...
STORAGE    (
            INITIAL          64K
            NEXT             512M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
           )
Вставляю в нее несколько строк.
Смотрю в user_segments
размер сегмента >64K и <512М

Вопрос почему?
Заранее благодарю!
10 окт 11, 18:56    [11415562]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
metrAniksaraT
Member

Откуда: Kiev
Сообщений: 135
lari,
Вы используете INITIAL<>NEXT с какой то определённой целью? Обратите внимание на параметры табличного пространства, в котором создаётся таблица, особенно на параметр EXTENT MANAGEMENT LOCAL AUTOALLOCATE.
Управление табличными пространствами: [url=]http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/tspaces.htm[/url]
10 окт 11, 20:04    [11415751]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
_Nikotin
Member

Откуда: СПб
Сообщений: 2965
Почитайте статью по ссылке из сообщения 11387680
10 окт 11, 20:26    [11415804]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
lari
Member

Откуда:
Сообщений: 382
Собственно проблема была в том что в эту таблицу шла загрузка несколькими параллельными процессами, вида:
insert /*+ append parallel(4)*/ into table
select /*+ parallel(4)*/ * from external_table;
один работает, другие висят на ТМ contention...
Вот думал что драка за вотерлинию, решил алоцоровать экстент заранее....
11 окт 11, 02:01    [11417056]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
lari
Собственно проблема была в том что в эту таблицу шла загрузка несколькими параллельными процессами, вида:
insert /*+ append parallel(4)*/ into table
select /*+ parallel(4)*/ * from external_table;
один работает, другие висят на ТМ contention...
Вот думал что драка за вотерлинию, решил алоцоровать экстент заранее....
Нет, direct path блокирует таблицу / партицию.
11 окт 11, 02:26    [11417102]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
lari
Member

Откуда:
Сообщений: 382
автор
Нет, direct path блокирует таблицу / партицию.

Плохое известие... может есть какой либо ворк эраунд, который мог бы позволить грузить быстро и в несколько процессов...
11 окт 11, 02:31    [11417106]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18339
lari
автор
Нет, direct path блокирует таблицу / партицию.

Плохое известие... может есть какой либо ворк эраунд, который мог бы позволить грузить быстро и в несколько процессов...

Быстро не тождественно direct.
Но если direct или parallel необходимы - попробуйте разнести загрузку по разделам
11 окт 11, 02:35    [11417115]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
lari
автор
Нет, direct path блокирует таблицу / партицию.

Плохое известие... может есть какой либо ворк эраунд, который мог бы позволить грузить быстро и в несколько процессов...
parallel append грузит быстро в direct path и несколькими процессами. Естественно, надо не забывать про enable parallel dml. Если таблица секционирована, то используя синтаксиc partition можно блокировать только нужную партицию.
11 окт 11, 02:36    [11417116]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18339
wurdu
parallel append грузит быстро в direct path и несколькими процессами.

что-то мне подсказывает, что ТС имеет ввиду параллельный запуск нескольких независимых загрузок, а это либо conventional, либо усложнять схему секционирования.
11 окт 11, 02:40    [11417122]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
lari
Member

Откуда:
Сообщений: 382
автор
Быстро не тождественно direct.

не много не понял... есть задача загружать быстро из нескольких плоских файлов в таблицу... для ускорения чтения ставлю patallel...
по идее есть не использовать кэш - будет быстрее, поэтому ставлю хинт append... но хотелось бы как либо разогнать загрузку еще...
11 окт 11, 02:43    [11417124]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
lari
Member

Откуда:
Сообщений: 382
автор
либо conventional

А что это такое?))
схему секционирования усложнять не хотелось бы ибо это не гибко(те можно создать 4 сабсекции по хэшу, но что будет если я захочу добывить 5, 6 загрузчик....).
11 окт 11, 02:50    [11417134]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
lari, почему ты не грузишь одним insert? Зачем несколько загрузок одновременно, если есть параллелизм? Ты уже проверил, что у тебя действительно грузится в parallel, посмотрел план? Можно ли использовать nologging? Какой объем данных в одной внешней таблице?
11 окт 11, 03:06    [11417153]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18339
lari
автор
Быстро не тождественно direct.

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

Не нужно идей. Нужно померять и выбрать оптимальный вариант. parallel далеко не всегда дает прирост производительности, а применяемый наобум - нередко дает обратный эффект.

conventional - это режим лодыря по умолчанию, не-директ, не-параллел, просто insert.
В случае лодыря при отсутствии прочих лимитирующих факторов типа пропускной способности сети его производительность очень сильно зависит от параметров типа BINDSIZE, READSIZE, частоты commit и т.д., при правильном подборе которых часто удается получить производительность, близкую к direct.
Почитайте на досуге Oracle Database Utilities, полезное чтиво.
11 окт 11, 03:08    [11417158]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
lari
Member

Откуда:
Сообщений: 382
Попробовал убрать хинт APPEND... все равно получаю ТМ блокировку... не понятно почему, ведь ТМ блокировка - это защита таблицы от от изменений...
12 окт 11, 13:56    [11426578]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
lari
Попробовал убрать хинт APPEND... все равно получаю ТМ блокировку... не понятно почему, ведь ТМ блокировка - это защита таблицы от от изменений...
Вставка в parallel автоматом включает direct path. Можно поставит хинт NOAPPEND, тогда в 11g будет в parallel conventional, а в 10g отрубит parallel.
12 окт 11, 14:33    [11426925]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
lari
Member

Откуда:
Сообщений: 382
автор
Вставка в parallel автоматом включает direct path. Можно поставит хинт NOAPPEND, тогда в 11g будет в parallel conventional, а в 10g отрубит parallel.

Oracle 11g.
Поставил NOAPPEND. В плане вижу load conventional. Но ожидания ТМ не ушли...
12 окт 11, 15:13    [11427376]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
lari
Member

Откуда:
Сообщений: 382
и log buffer space появилось... вообщем надо менять концепцию загрузки похоже...:(
12 окт 11, 15:21    [11427463]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18339
lari
Но ожидания ТМ не ушли...

Ожидания или блокировка?
Блокировка TM - это нормально, она ведь разная бывает.
SQL> create table ane_test ( a number );
 
Table created
 
SQL> select type, lmode from v$lock where sid = sys_context('USERENV','SID');
 
TYPE      LMODE
---- ----------
 
SQL> insert into ane_test values( 1 );
 
1 row inserted
 
SQL> select type, lmode from v$lock where sid = sys_context('USERENV','SID');
 
TYPE      LMODE
---- ----------
TM            3
TX            6
 
SQL> lock table ane_test in exclusive mode;
 
Table(s) locked
 
SQL> select type, lmode from v$lock where sid = sys_context('USERENV','SID');
 
TYPE      LMODE
---- ----------
TM            6
TX            6
 
SQL> 
А вот ожидания должны были поменяться слегка.
Появление ожиданий log file sync связано с записью редо, это правильно.
Собственно, когда Вы редо не писали - Вы были готовы к тому, что после восстановления из backup блоки таблицы, записанные таким образом, будут помечены как corrupted?
12 окт 11, 15:45    [11427756]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
lari
Member

Откуда:
Сообщений: 382
Кстати может имеет смысл использовать что то типа bulk insert... Сначала прочитать внешнюю таблицу, потом пачками вставлять... как то так... или бредовая идея?
12 окт 11, 16:29    [11428231]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
-2-
Member

Откуда:
Сообщений: 15330
lari
Сначала прочитать внешнюю таблицу, потом пачками вставлять... как то так... или бредовая идея?
Сначала надо уточнить куда читать. Потом сообразить, чем буферизация в куда лучше прямого insert-select.
12 окт 11, 17:02    [11428616]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
lari
Member

Откуда:
Сообщений: 382
автор
куда

heap table, nologging...
12 окт 11, 17:08    [11428674]     Ответить | Цитировать Сообщить модератору
 Re: Выделение экстентов  [new]
-2-
Member

Откуда:
Сообщений: 15330
lari
автор
куда
heap table, nologging...
если складывать несколько внешних файлов одну таблицу пока не наберется пачка, почему бы не читать пачку файлов одним запросом?
12 окт 11, 18:53    [11429447]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить