Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > MySQL nbuffered queries


Автор: BuShaRt 4.7.2014, 20:32
В PHP есть возможность переключаться между Buffered и Unbuffered режимами запроса. Что это означает? 
- Если мы работаем в Buffered режиме (default), то выполнение скрипта "замораживается" в момент отправки MySQL запроса, то того момента, пока его результат не будет полностью получен и помещен в соотвествующие переменную языка.
- Если мы работаем в Unbuffered режиме, то скрипт продолжает выполняться и мы можем начать обрабатывать полученные от MySQL данные, не дожидаясь полной загрузки. Это может быть полезно, если наш скрипт является мэппером данных, на пример.

Тут описание http://www.php.net/manual/en/mysqlinfo.concepts.buffering.php

Вопрос. Как переключить в Unbuffered режим Connection/J?



Автор: BuShaRt 4.7.2014, 20:49
В интернетах нашел такой совет "stmt.setFetchSize(Integer.MIN_VALUE); ".. Вроде сработало.
Так можно делать? Это именно то, что мне нужно? =)

Автор: chiffa 5.7.2014, 01:24
А почему не запускать SQL-запрос в отдельном потоке?

Автор: BuShaRt 5.7.2014, 12:09
Потоки.... Потоки.. Моя PHP программировать. Моя не уметь поток делать..

Автор: chiffa 5.7.2014, 13:51
Хех, как же я Вас понимаю, сам начинал с ПХП )))

Смотри, там ничего, сложного. Вот код:



Код



public static class MyThread extends Thread { //Создаем класс потока
    
        public void run() { //создаем метод который его будет запускать
         
       
         // здесь указываем код, который будет выполняться в отдельном потоке и не будет вешать основное приложение

         
                          } 
            
                                     }   





Для запуска потока используем new MyThread().start();

После отработки не забудь остановить текущей поток: Thread.currentThread().stop();


Кстати, некий "аналог" потоков в ПХП можно считать Аякс (асинхронные запросы)

Автор: BuShaRt 7.7.2014, 21:23
Надеялся избежать необходимости разбираться в потоках, но в процессе решения поставленной задачи все же пришлось. Сижу, читаю маны. Забегу вперед и поинтересуюсь.

Цитата(chiffa @  5.7.2014,  13:51 Найти цитируемый пост)
После отработки не забудь остановить текущей поток: Thread.currentThread().stop();

Это надо написать внутри метода run()?

Автор: LSD 8.7.2014, 14:59
Асинхронного режима в JDBC - нет. setFetchSize() говорит сколько строк подгружать за раз, например выбрали 1000 строк и на клиент "подкачиваем" их партиями по 100 штук.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)