mysqli_free_result () работает медленно, когда все данные не читаются при использовании MYSQLI_USE_RESULT - PullRequest
0 голосов
/ 16 ноября 2018

Я использую MYSQLI_USE_RESULT (небуферизованный запрос) при запросе огромных данных из таблицы.Для тестирования я взял таблицу размером 5,6 ГБ.Я выбрал все столбцы Select * from test_table.

Если я не читаю строки с методом, подобным fetch_assoc() и т. Д. Затем попробуйте закрыть результат с помощью mysqli_free_result().Его закрытие занимает от 5 до 10 секунд.

Иногда я читаю необходимые строки чисел на основе доступной памяти.И затем я называю mysqli_free_result(), это занимает меньше времени по сравнению с тем, что не прочитана ни одна строка.

Таким образом, меньшее количество непрочитанных строк означает меньшее время для освобождения результатов.Больше непрочитанных строк - больше времени для освобождения результатов.

Не документировано, что эта функция потребует времени, насколько мне известно.

Время, затраченное на запрос, составляет около 0,0008 сек.

Это ошибка или ожидаемое поведение?Для меня эта медлительность побеждает весь смысл, используя MYSQLI_USE_RESULT.

MySQL v5.7.21, PHP v7.2.4, используемый для тестирования.

Псевдонимы этой функции mysqli_result::free - mysqli_result::close - mysqli_result::free_result - mysqli_free_result.

...