|
Как ускорить запись в таблицу через JDBC?
|
|||
---|---|---|---|
#18+
Kachalovобычно хип у JVM меньше чем max_allowed_packet в MySQL/MariaDB - тут фигню написал, бывает по разному, зависит от настроек БД/JVM ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 15:39 |
|
Как ускорить запись в таблицу через JDBC?
|
|||
---|---|---|---|
#18+
Kachalov- я имел в виду OutOfMemoryError в JVM при безлимитном батче (обычно хип у JVM меньше чем max_allowed_packet в MySQL/MariaDB). В любом случае, копить слишком большой батч не стоит - это и расход системных ресурсов, и вероятность потери данных, и снижение доступности БД в момент вставки. В идеале размер батча должен увязываться с настройками БД. конечно, не стоит. Это и на производительности сказывается, кстати (в случае с Ораклом). Мы в программе делали сброс накопленного либо через каждые 250 строк или каждые 3 секунды - что раньше наступит (пишу по памяти - это было очень давно). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 16:04 |
|
Как ускорить запись в таблицу через JDBC?
|
|||
---|---|---|---|
#18+
ОзверинLeonid Kudryavtsev, это очень мало. Тем более, что с большой долей вероятности никаких 1000 транзакций на выходе не будет - по умолчанию многие базы на выходе сами используют нечто вроде preparedstatements и там уже пакетно обрабатывают даже построчные операции. ПО ОПРЕДЕЛЕНИЮ - Транзакция неделимая операция которая должна быть ГАРАНТИРОВАНО сохранена. Т.ч.. по определению, транзакция завершается только тогда, когда она ФИЗИЧЕСКИ записана на диск (как минимум log файлы /для востановления/, грязные буфферы/дата_блоки вполне могут оставаться в памяти и выкидываться на диск асинхронно). Некая буфферизация теоретически может быть, если на сервере паралелльно работает 100500 клиентов и за счет ЗАМЕДЛЕНИЯ времени отклика (latch). может увеличиваться пропускная способность (throughtinput). Но если вставки идут в одном потоке (не паралельно), то по определению, никакая база никакой буфферизации делать не должна и НЕ имеет такого права. (во многих базу синхронизацию с диском /flush/ можно отпилить автогеном /Oracle, PostgreSQL/ тогда будет быстрее, но делают это только истинные самураи-камикадзе которым на целостность данных пофиг) AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2019, 16:17 |
|
|
start [/forum/topic.php?fid=59&gotonew=1&tid=2121265]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
149ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 231ms |
total: | 484ms |
0 / 0 |