Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потоковое получение и обработки данных из MySQL 
:(
    Опции темы
BuShaRt
Дата 26.6.2014, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: нет
Всего: 6



Давно и прочно сижу на PHP и всегда полагал, что в работе с MySQL, если я хочу обработать массив данных, полученных из базы, то я должен дождаться завершения полной загрузки и мэппинга этих данных в PHP процесс. Другими словами, я не могу работать с первой записью, пока не получу подледную. А если я хочу работать с огромными таблицами частями, то я должен юзать лимиты и оффсеты.

Недавно одно приложение полностью опровергло мое видение. Суть этого приложения была в том, что оно извлекало из MySQL данные и через HTTP протокол скармливало их third party сервису небольшими партиями.
Меня сразу удивило то, как шустро работало это приложение и я полез изучать. К сожалению доступа к исходному коду я не имеют, да и Java не знаю, поэтому я пошел обходым путем. А именно глянул mysql show processlist, который продемонстрировал мне, что приложение открывает одно соединение на получение всех данных разом и держит его на протяжение всей работы. При этом само приложение формирует первую пачку документов почти со старта и это при том, что наша таблица весит порядка 300 гигабайт т.е. мы точно уверены, что приложение не дожидается полной подгрузки таблицы. 

Выходит, что Java умеет работать с данным из MySQL не дожидаясь их полной загрузки.

Вопросы
Это особенность компилируемых языков программирования или такое можно сделать и на PHP? 
Должны ли мы как-то изменить сам запрос к MySQL? Если да, то как? 
PM MAIL   Вверх
tzirechnoy
Дата 26.6.2014, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 3
Всего: 16




Цитата
Это особенность компилируемых языков программирования или такое можно сделать и на PHP? 


Компилируемость тут вообще ни при чём: http://www.php.net/manual/en/mysqlinfo.con...s.buffering.php.

Там насчёт "почему так по умолчанию" немного не исторично, да и вообще коряво написано -- однако для практических цэлей это описание вполне подойдёт.
PM MAIL   Вверх
BuShaRt
Дата 27.6.2014, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: нет
Всего: 6



Вроде бы - то, что нужно. Большое спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.