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

Откуда:
Сообщений: 14
Приветствую всех!
Помогите решить задачку:

Есть таблица около 150 атрибутов, один UNIQUE остальные нет. В ней около 50 миллионов записей. Нужно ее увеличить примерно в двое. Каким лучше способом это сделать? Insert в цикле, хотя я и не большой знаток oracl, думаю будет очень, очень, очень долго.
Поделитесь опытом :)
Заранее спасибо!
2 сен 10, 23:53    [9375766]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
Антон Сарков
Нужно ее увеличить примерно вдвое.


Данные важны, или всё равно, что вставлять?
3 сен 10, 01:01    [9375922]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
killed
Member

Откуда: Moscow
Сообщений: 3526
Антон Сарков,

create table as select
3 сен 10, 01:50    [9375961]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18484
Э-ээ
И как при этом увеличится исходная таблица? :)

Тут действительно интересно что автору надо -- поиграться с большой таблицой на предмет прогнозов производительности или вставить (откуда?!) реальные данные
Соответственно, и подходы разные
3 сен 10, 01:54    [9375965]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
Антон Сарков
Member

Откуда:
Сообщений: 14
Тут надо проверить производительность.
Данные не важны, важно наполнить таблицу около 50 миллионов записей с одним уникальным полем, что это как то побыстрее сделать.
3 сен 10, 08:08    [9376094]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
Антон Сарков, если надо именно с одним уникальным полем, то секвенсер в помощь.

insert into table_name select t_seq.nextval,список полей from table_name
3 сен 10, 08:12    [9376101]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
быстрее всего с использованием параллелизма,
либо просто direct path insert
не забываем про отсутствие триггеров, внешних ключей, и прочего оверхеда
3 сен 10, 08:14    [9376110]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
не слушай глупостей типа этой:
semenar
Антон Сарков, если надо именно с одним уникальным полем, то секвенсер в помощь.

insert into table_name select t_seq.nextval,список полей from table_name


если и понадобится последовательность используй в твоем случае rownum
3 сен 10, 08:15    [9376115]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Антон Сарков
Тут надо проверить производительность.
Данные не важны, важно наполнить таблицу около 50 миллионов записей с одним уникальным полем, что это как то побыстрее сделать.
Удаляем уникальный индекс индекс и грузим в direct path, например с помощью insert /*+ append */ ...select ... Рассматриваем применение опции nologging.
3 сен 10, 08:17    [9376121]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
wurdu
Антон Сарков
Тут надо проверить производительность.
Данные не важны, важно наполнить таблицу около 50 миллионов записей с одним уникальным полем, что это как то побыстрее сделать.
Удаляем уникальный индекс индекс и грузим в direct path, например с помощью insert /*+ append */ ...select ... Рассматриваем применение опции nologging.
После создаем уникальный индекс, в parallel, возможно nologging. Это если я правильно понял что есть уникальный индекс. Не уникальные индексы переводим в unusable и после закачки делаем rebuild.
3 сен 10, 08:19    [9376127]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
неуникальные индексы тоже удаляй к чертям.
после вставки с нуля создашь.
3 сен 10, 08:19    [9376128]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
брадобрей,

правильно, секвенсеры на помойку..
3 сен 10, 08:24    [9376140]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
semenar
брадобрей,

правильно, секвенсеры на помойку..

чувак не понимает зачем были придуманы последовательности...
сует их куда ни попа, дя
3 сен 10, 08:26    [9376146]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
брадобрей,
чувак??? С языком повнимательнее:
Правила форума на SQL.RU (v1.0)
Содержание сообщений 
Запрещается: 
публикация грубых, оскорбляющих и унижающих сообщений. 
3 сен 10, 08:29    [9376149]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
чувак???
Guest
semenar
С языком повнимательнее:
Мнительным
3 сен 10, 08:52    [9376189]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
semenar
брадобрей,
чувак??? С языком повнимательнее:
оскорбляющих и унижающих сообщений. 


вместо того чтобы признать свою ошибку, чувак решил само-унизиться моим сообщением :(
3 сен 10, 09:38    [9376380]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
брадобрей
semenar
брадобрей,
чувак??? С языком повнимательнее:
оскорбляющих и унижающих сообщений. 


вместо того чтобы признать свою ошибку, чувак решил само-унизиться моим сообщением :(

Чтобы признать свою ошибку, мне твоих слов недостаточно. Необходимо посмотреть ссылку на доку, где подобного рода синтаксис запрещен или нерекомендован.
Как и все люди, я где-то и ошибаюсь. На форуме я как раз для того, чтобы узнать что-то новое. Но называй "чуваком" своих друзей,товарищей,родных, коллег по работе. За сим дискусию прекращаю.
3 сен 10, 10:04    [9376574]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
semenar
Чтобы признать свою ошибку, мне твоих слов недостаточно. Необходимо посмотреть ссылку на доку, где подобного рода синтаксис запрещен или нерекомендован.
Как и все люди, я где-то и ошибаюсь. На форуме я как раз для того, чтобы узнать что-то новое. Но называй "чуваком" своих друзей,товарищей,родных, коллег по работе. За сим дискусию прекращаю.

То есть ты понимаешь что ошибся только тогда когда в документации тебе разжуют и напишут "это неправильно"?
да и дело какбэ и не в синтаксисе абсолютно.
3 сен 10, 10:09    [9376625]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
Вообще, все эти разговоры про документацию весьма забавны.

Performance Tuning 11.2 (куда смотрит Том Кайт?)
performance tuning
2.5.3.2.2 Bitmap Indexes
These indexes are suitable for low cardinality data. Through compression techniques, they can generate a large number of rowids with minimal I/O. Combining bitmap indexes on non-selective columns allows efficient AND and OR operations with a great number of rowids with minimal I/O. Bitmap indexes are particularly efficient in queries with COUNT(), because the query can be satisfied within the index.
3 сен 10, 10:17    [9376719]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
Антон Сарков
Member

Откуда:
Сообщений: 14
Спасибо!!!
По технологии понял, но не пойму с реализацией.
Если у меня одно поле должно быть уникальным, как я буду делать
INSERT /*+ APPEND */ select из другой таблицы, копии той или части в цикле, если значение поля будет повторяться. Тогда придется генерить это значение в цикле, для уникальности, а это опять вставка по записям.
Или я что то не понял?
3 сен 10, 12:03    [9377815]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
Антон Сарков
Или я что то не понял?
Делаете select max(PK) from ваша_таблица, затем этот самый max + rownum, получаете уникальность. Что непонятно?
3 сен 10, 12:08    [9377880]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
Антон Сарков
Member

Откуда:
Сообщений: 14
[quot wildwind Делаете select max(PK) from ваша_таблица, затем этот самый max + rownum, получаете уникальность. Что непонятно?[/quot]

Как сделать поле уникальным понятно.
Не понятно, как делать вставку уникальных значений не инсертя по одной записи.
3 сен 10, 12:18    [9378010]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
JaRo
Member

Откуда:
Сообщений: 1659
Антон Сарков
Как сделать поле уникальным понятно.
Не понятно, как делать вставку уникальных значений не инсертя по одной записи.
Непонятно, что Вам непонятно...
insert /*+APPEND*/ into table select v_count + rownum from other_table
3 сен 10, 12:25    [9378091]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
JaRo
Member

Откуда:
Сообщений: 1659
Но при Ваших объёмах лучше ИМХО CTAS (create table as select)
3 сен 10, 12:27    [9378102]     Ответить | Цитировать Сообщить модератору
 Re: Вставка миллионов записей  [new]
брадобрей
Member

Откуда:
Сообщений: 4696
чем это может быть лучше чем parallel insert + nologging?
3 сен 10, 12:30    [9378120]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить