|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
вадя, Не забывай про консистентность. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 11:56 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
интересно... процедура: Код: sql 1. 2. 3. 4. 5. 6.
груви (ну почти жава) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
оба резалтсета действительно выдаются одновременно. но когда я добавил в урл параметр traceProtocol=true то в логе увидел что второй результат приходит как надо - через 3 секунды но jdbc в mysql так написан... пытался отключить read-ahead но не помогло... кусок лога трейса - в последней строке начинает читать второй резалтсет: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 17:19 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
Немного покопался, https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-implementation-notes.html Код: java 1.
Позволяет получить первый ResultSet сразу, но в этому случае не получилось получить после этого второй. На работе с ораклом вроде такой проблемы нету. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 17:27 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
странно всё это.... как-то не экономично все это ... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 17:49 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
А сделать в хранимке: Код: plsql 1. 2. 3.
превратив две выборки в одну? Или я чего-то не понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 18:05 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
Basil A. SidorovА сделать в хранимке: Код: plsql 1. 2. 3.
превратив две выборки в одну? Или я чего-то не понимаю? превратятся, а в чём будет профит? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 18:18 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, результат будет тот же - вернутся записи после выполнения всех селектов, что и есть сейчас + куча неудобств ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 18:20 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
А какая польза в это всем? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 18:30 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
Если заказана/требуется сортировка, то сервер сначала получит весь набор данных и только потом начнёт возвращать результат клиенту. Если сортировки не требуются, то возможны варианты. P.S. Профит в том, что не надо делать ту работу, которую сервер БД в состоянии сделать без вашего вмешательства. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 18:31 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, не, тут совсем не это.... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 18:55 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Логи: 2018-10-02 19:23:21.752 INFO 21494 --- [ main] start... 2018-10-02 19:23:21.858 INFO 21494 --- [ main] executed 2018-10-02 19:23:21.858 INFO 21494 --- [ main] first 1 ... 2018-10-02 19:23:21.860 INFO 21494 --- [ main] first 3 2018-10-02 19:23:23.858 INFO 21494 --- [ main] second abc А чего через JDBC апи не работает... толи фича, толи баг ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 19:29 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
это работает Код: java 1.
но первый Код: java 1.
кидает SQLException: Attempt to close streaming result set com.mysql.cj.protocol.a.result.ResultsetRowsStreaming@2e8e8225 that was not registered. закоментил rs.close() - падает с тем-же ексепшином на следующем методе. взял rs.close() в try-catch игнорируя ексепшн и все заработало - фетчит все по мере получения! явная бага в драйвере ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2018, 23:39 |
|
Как работает jdbc?
|
|||
---|---|---|---|
#18+
Dmitry., Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Комбинация набора результатов только для чтения, доступного только для чтения, с размером выборки Integer.MIN_VALUE служит в качестве сигнала к результату набора строк для последовательности строк. После этого любые результирующие наборы, созданные с помощью инструкции, будут загружаться по строкам. С этим подходом есть некоторые оговорки. Вы должны прочитать все строки в результирующем наборе (или закрыть его), прежде чем вы сможете выдать какие-либо другие запросы в соединении, или будет выбрано исключение. Самые ранние блокировки этих операторов могут быть освобождены (будь то MyISAMблокировки на уровне таблицы или блокировки на уровне строк в каком-либо другом хранилище, например InnoDB, когда это завершено). Если оператор находится в пределах объема транзакции, блокировки освобождаются при завершении транзакции (что подразумевает, что оператор должен выполнить сначала). Как и в большинстве других баз данных, операторы не заполняются до тех пор, пока не будут прочитаны все ожидающие ответа результаты, или активный набор результатов для оператора закрыт. Поэтому, используя результаты потоковой передачи, обрабатывайте их как можно быстрее, если вы хотите поддерживать параллельный доступ к таблицам, на которые ссылается оператор, создающий набор результатов. Другой альтернативой является использование потоковой передачи на основе курсора для получения заданного количества строк каждый раз. Это можно сделать, установив для свойства соединения useCursorFetchзначение true, а затем вызывая setFetchSize(int)с intжелаемым количеством строк, которые будут извлекаться каждый раз: Код: sql 1. 2. 3. 4.
как бы получается такой вариант тоже не очень хороший. особенно при больших результатах селекта... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2018, 06:37 |
|
|
start [/forum/topic.php?fid=59&msg=39711985&tid=2121741]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
515ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 616ms |
0 / 0 |