два шага: executeQuery и fetch. То есть execute возвращает указатель, а фетч уже достает сами данные. Указатель на что возвращает execute, где находятся данные перед fetch? Нагуглить чет не получается
Термин указатель тут не подходит. Кратко - exec подготавливает первую порцию данных и выдает обет типа "курсор", который служить для дальнейшего выполнения запроса и получения данных из него
что значит первая порция данных? И что происходит при чтении? В мускуле создается временная таблица по которой движется курсор? Я чет не могу найти нормальной инфы на эту тему.
Первые несколько строк
Нет, курсор это не таблица. Это объект в API библиотеки доступа к запросам
все равно непонятно. Допустим, я вытаскиваю 1000 строк. query у нас вытащит "первые несколько строк", а где будут находится остальные в этот момент?
разобрался, если в терминах php то есть две функции: mysql_query и mysql_fetch_arrow. при выполнении mysql_query по умолчанию весь результат сразу же копируется в буфер драйвера. Можно вместо mysql_query использовать mysql_unbuffered_query, тогда данные не попадут в буфер и останутся на стороне мускуля со всеми сожранными ресурсами.
В базе данных.
Не _arrow а наверное _array
что значит в базе данных?
а да. ночью уже не соображаю)
НИКОГДА весь результат не копируется в буфер драйвера (если он конечно не очень маленький). Он туда просто тупо НЕ ВЛЕЗЕТ.
Запрос в открытом виде (сделано начало выполнения и не сделана вся выборка данных) на сервере конечно потребляет кое-какие ресурсы, но эти ресурсы не так уж и велики, и их размер не пропорционален объёму выборки.
а можно ссылку на источник? я просто читал mysql по максимуму, страница 255
База данных — это такая система организации данных на диске (дисках) для хранения и эффективной обработки данных.
На источник чего?
Обсуждают сегодня