powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Как ускорить запись в таблицу через JDBC?
3 сообщений из 53, страница 3 из 3
Как ускорить запись в таблицу через JDBC?
    #39823548
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalovобычно хип у JVM меньше чем max_allowed_packet в MySQL/MariaDB
- тут фигню написал, бывает по разному, зависит от настроек БД/JVM
...
Рейтинг: 0 / 0
Как ускорить запись в таблицу через JDBC?
    #39823567
qasta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalov- я имел в виду OutOfMemoryError в JVM при безлимитном батче (обычно хип у JVM меньше чем max_allowed_packet в MySQL/MariaDB). В любом случае, копить слишком большой батч не стоит - это и расход системных ресурсов, и вероятность потери данных, и снижение доступности БД в момент вставки. В идеале размер батча должен увязываться с настройками БД.
конечно, не стоит. Это и на производительности сказывается, кстати (в случае с Ораклом).
Мы в программе делали сброс накопленного либо через каждые 250 строк или каждые 3 секунды - что раньше наступит (пишу по памяти - это было очень давно).
...
Рейтинг: 0 / 0
Как ускорить запись в таблицу через JDBC?
    #39823579
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинLeonid Kudryavtsev, это очень мало. Тем более, что с большой долей вероятности никаких 1000 транзакций на выходе не будет - по умолчанию многие базы на выходе сами используют нечто вроде preparedstatements и там уже пакетно обрабатывают даже построчные операции.

ПО ОПРЕДЕЛЕНИЮ - Транзакция неделимая операция которая должна быть ГАРАНТИРОВАНО сохранена. Т.ч.. по определению, транзакция завершается только тогда, когда она ФИЗИЧЕСКИ записана на диск (как минимум log файлы /для востановления/, грязные буфферы/дата_блоки вполне могут оставаться в памяти и выкидываться на диск асинхронно).

Некая буфферизация теоретически может быть, если на сервере паралелльно работает 100500 клиентов и за счет ЗАМЕДЛЕНИЯ времени отклика (latch). может увеличиваться пропускная способность (throughtinput). Но если вставки идут в одном потоке (не паралельно), то по определению, никакая база никакой буфферизации делать не должна и НЕ имеет такого права.
(во многих базу синхронизацию с диском /flush/ можно отпилить автогеном /Oracle, PostgreSQL/ тогда будет быстрее, но делают это только истинные самураи-камикадзе которым на целостность данных пофиг)

AFAIK
...
Рейтинг: 0 / 0
3 сообщений из 53, страница 3 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Как ускорить запись в таблицу через JDBC?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]