Я пишу вам это сообщение, потому что немного растерян и не знаю, как решить свою проблему.
Контекст
SimpleJob(SingleThread) в Spring Batch, который обрабатывает 1 миллион сообщений из темы (внутренний доверенный источник) каждое утро в 7 утра
и вставляет их (по одному) one) в промежуточную таблицу (A)
Затем считывает строки из A частями по 1000 строк и вставляет эти строки (одну за другой) в целевую таблицу B
Технологии
JAVA 17, Spring Batch, MySQL
ПроблемаНа выполнение работы уходит 23 часа. Мне бы хотелось сократить время до менее 2 часов.
Предложения по улучшению
Удаление промежуточной таблицы : позволит использовать SELECT/INSERT меньше 1 миллиона. Я спросил бывших разработчиков, есть ли причины поддерживать эту таблицу (не используемую где-либо еще).
ИСПОЛЬЗОВАНИЕ МАССОВОЙ ВСТАВКИ: я читал, что это поможет повысить производительность. Увеличить размер фрагмента (интервал фиксации): фрагмент из 1000 швов слишком мал, поэтому нужно больше SELECT/INSERT. Размер фрагмента необходим, чтобы избежать ошибок OutOfMemory Java Heap Space. Но я не знаю, как определить правильный размер фрагмента, кроме случайного тестирования значений
Вопросы
Видите ли вы веские причины для использования промежуточной таблицы в этом случае?
Вы знаете, как мне определить правильный размер фрагмента?
Существуют ли какие-либо стандарты в отношении значений?
Могу ли я пробовать случайные значения только до тех пор, пока оно не завершится в приемлемое время?
[*]Как вы думаете, можно ли попробовать секционированное задание? / Многопоточные задания могут быть полезны в моем случае? Или это будет излишним?
Поскольку все потоки будут писать в одну и ту же базу данных (возможное узкое место?)< /li>
Я пишу вам это сообщение, потому что немного растерян и не знаю, как решить свою проблему. Контекст [list] [*]SimpleJob(SingleThread) в Spring Batch, который обрабатывает 1 миллион сообщений из темы (внутренний доверенный источник) каждое утро в 7 утра [*]и вставляет их (по одному) one) в промежуточную таблицу (A) [*]Затем считывает строки из A частями по 1000 строк и вставляет эти строки (одну за другой) в целевую таблицу B [/list] Технологии JAVA 17, Spring Batch, MySQL ПроблемаНа выполнение работы уходит 23 часа. Мне бы хотелось сократить время до менее 2 часов. Предложения по улучшению [list] [*][b]Удаление промежуточной таблицы [/b]: позволит использовать SELECT/INSERT меньше 1 миллиона. Я спросил бывших разработчиков, есть ли причины поддерживать эту таблицу (не используемую где-либо еще). [*][b]ИСПОЛЬЗОВАНИЕ МАССОВОЙ ВСТАВКИ[/b]: я читал, что это поможет повысить производительность. [b]Увеличить размер фрагмента (интервал фиксации)[/b]: фрагмент из 1000 швов слишком мал, поэтому нужно больше SELECT/INSERT. Размер фрагмента необходим, чтобы избежать ошибок OutOfMemory Java Heap Space. [b]Но я не знаю, как определить правильный размер фрагмента, кроме случайного тестирования значений[/b] [/list] Вопросы [list] [*][b]Видите ли вы веские причины для использования промежуточной таблицы в этом случае?[/b] [*][b]Вы знаете, как мне определить правильный размер фрагмента?[/b]
Существуют ли какие-либо стандарты в отношении значений? [*] Могу ли я пробовать случайные значения только до тех пор, пока оно не завершится в приемлемое время? [/list]
[*][b]Как вы думаете, можно ли попробовать секционированное задание? / Многопоточные задания могут быть полезны в моем случае?[/b] Или это будет излишним? [list] Поскольку все потоки будут писать в одну и ту же базу данных (возможное узкое место?)< /li> [/list]
У меня есть приложение Spring Boot, в котором я использую Kafka Streams (KStream и GlobalKTable) вместе с пакетным заданием Spring. Несмотря на настройку Spring.batch.job.enabled: false, я продолжаю сталкиваться со следующей ошибкой:
Мне нужно вставить миллион случайных строк в базу данных Oracle из Java-кода в таблицу сотрудников, где есть - (имя, дата, пол), нужно вставить примерно 50/50 мужчин и женщин, а также чтобы имена тоже были равномерно распределены (от А до Я)...
В настоящее время я работаю над проектом, используя Java Spring Boot и Apache Kafka, где несколько микросервисов общаются через Kafka. Наша цель состоит в том, чтобы обрабатывать 100 000 транзакций в секунду (TPS) (или события журнала), при этом...
У меня есть ~ 100 000 до 1 000 000 строк для вставки в базу данных Oracle18c. Я совершенно новый с Oracle и этим порядком данных. Я считаю, что должен быть какой -то оптимальный способ сделать это, но сейчас мне удалось только внедрить строку по...