Отображение формата A4 в формате div с учетом HTML / CSS

Я знаю, что другие упомянули об этом, и вы не хотите его слышать, но используйте SQL * Loader или внешние таблицы . Мое среднее время загрузки для таблиц примерно одинаковой ширины составляет 12,57 секунд для строк более 10 м. Эти утилиты были явно разработаны для быстрой загрузки данных в базу данных и очень хороши в этом. Это может привести к дополнительным штрафным санкциям в зависимости от формата входного файла, но есть довольно много вариантов, и мне редко приходилось менять файлы до загрузки.

Если вы не хотите этого делать это тогда вам не нужно обновлять свое оборудование; вам необходимо удалить все возможные препятствия для быстрой загрузки. Чтобы перечислить их, удалите:

  1. Индекс
  2. Триггер
  3. Последовательность
  4. Раздел

При всем этом вы обязываете базу данных выполнять больше работы, и потому что вы делаете это транзакционно, вы не используете базу данных в полном объеме.

Загрузите данных в отдельную таблицу, скажем ABC_LOAD. После того, как данные были полностью загружены, выполните инструкцию single INSERT в ABC.

insert into abc
select abc_seq.nextval, a.*
  from abc_load a

Когда вы это сделаете (и даже если вы этого не сделаете) убедитесь, что кеш последовательности размер правильный; , чтобы указать :

Когда приложение обращается к последовательности в кеше последовательности, порядковые номера читаются быстро. Однако, если приложение обращается к последовательности, которая не находится в кеше, последовательность должна считываться с диска в кеш, прежде чем будут использоваться порядковые номера.

Если ваши приложения используют много последовательностей одновременно, кеш последовательности может быть недостаточно большим для хранения всех последовательностей. В этом случае доступ к номерам последовательностей может часто требовать чтения с диска. Для быстрого доступа ко всем последовательностям убедитесь, что в вашем кеше достаточно записей для хранения всех последовательностей, используемых одновременно вашими приложениями.

blockquote>

Это означает, что если у вас есть 10 потоков, одновременно записывающих 500 записей, каждый из которых использует эта последовательность, то вам нужен размер кеша 5000. В документе ALTER SEQUENCE указано, как это изменить:

alter sequence abc_seq cache 5000

Если вы будете следовать моему предложению, я бы увеличил размер кеша примерно до 10,5 м.

Посмотрите на подсказку APPEND (см. также базу Oracle) ; это инструктирует Oracle использовать вставку прямого пути, которая добавляет данные непосредственно в конец таблицы, а не ищет место для ее размещения. Вы не сможете использовать это, если ваша таблица имеет индексы, но вы можете использовать ее в ABC_LOAD

insert /*+ append */ into ABC (SSM_ID, invocation_id , calc_id, ... )
select 'c','b',NULL, 'test', 123 , 'N', 'asdf' from dual
union all select 'a','b',NULL, 'test', 123 , 'N', 'asdf' from dual
union all select 'b','b',NULL, 'test', 123 , 'N', 'asdf' from dual
union all select 'c','g',NULL, 'test', 123 , 'N', 'asdf' from dual

Если вы используете подсказку APPEND; Я добавил TRUNCATE ABC_LOAD после того, как вы вставили в ABC, иначе эта таблица будет расти бесконечно. Это должно быть безопасным, так как вы закончите использовать таблицу к тому времени.

Вы не указываете, какую версию или версию или Oracle вы используете. Существует несколько дополнительных трюков, которые вы можете использовать:

  • Oracle 12c. Эта версия поддерживает столбцы идентификации ; вы можете полностью избавиться от этой последовательности.
    CREATE TABLE ABC(
       seq_no         NUMBER GENERATED AS IDENTITY (increment by 5000)
    
  • Oracle 11g r2 Если вы сохраняете триггер; вы можете напрямую присвоить значение последовательности.
    :new.seq_no := ABC_seq.nextval;
    
  • Oracle Enterprise Edition Если вы используете Oracle Enterprise, вы можете ускорить INSERT с ABC_LOAD с помощью подсказки PARALLEL :
    insert /*+ parallel */ into abc
    select abc_seq.nextval, a.*
      from abc_load a
    
    Это может привести к собственные проблемы (слишком много параллельных процессов и т. д.), поэтому проверьте. Он может помочь для небольших вставных партий, но это менее вероятно, поскольку вы потеряете время, вычисляя, какой поток должен обрабатывать то, что.

tl; dr

Используйте утилиты, которые поставляются с базой данных.

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

3
задан my_name 13 July 2018 в 13:31
поделиться