powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблемы с выборкой и передачей данных
6 сообщений из 6, страница 1 из 1
Проблемы с выборкой и передачей данных
    #39732804
EvgIvn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опишу тут ситуацию, может кто подскажет или у кого есть мысли по оптимизации всего этого хозяйства.

VDS сервер Debian 9 nginx-php-fpm MySQL. У хостера в Европе. Не супер, но и не лоу. Память 2 ГБ. Проц - ?
БД MySQL. В ней таблица с 6 миллионами записей.
Есть скрипт, осуществляющий выборку данных.

С моего компьютера, программа осуществляет post запрос к этому серверу в интернете.
Вызывает скрипт, проще говоря. А скрипт выбирает данные из БД MySQL и отправляет их программе по http протоколу.

Запрос такой
Код: php
1.
SELECT `value` FROM `table_1` WHERE `ticker`='MYTICKER' ORDER BY `id` DESC LIMIT 5000


Т.е. 5000 записей с конца. Все данные всегда выбираются с конца (самые свежие).

Проблема в том, что при выборке 5000 значений таким образом, всё виснет.
В ssh консоли проц загружается под 100%, в MySQL Workbench вижу что запрос висит и не выполняется. В конце получаем ошибку 504.
И нужно перезагружать сервер вручную.

В чем тут может быть дело?
Может запрос не оптимален? Или скорость выборки зависит от количества записей в таблице?
Мысли, идеи, советы?


Код скрипта (если вдруг нужно)

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function get_data()
{
$mysqli_request="SELECT `value` FROM `table_1` WHERE `ticker`='MYTICKER' ORDER BY `id` DESC LIMIT 5000"; //5000 много - виснет, а 1000 нет.
$mysqli_result=$mysqli->query($mysqli_request) or die ($mysqli->error);
$mysqli->close; //Принудительно закрываем соединение
$num_rows = $mysqli_result->num_rows;
for ($i=1;$i<=$num_rows; $i++)
{
$row = $mysqli_result->fetch_assoc();
$value=$row['value'];
$response_array[$i]=$value;
}
$response_array['request_identifier']=$request_identifier;
$response=json_encode($response_array); 
return $response; //$response - ответ программе
}


...
Рейтинг: 0 / 0
Проблемы с выборкой и передачей данных
    #39732809
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgIvn,

Показывайте DDL таблицы и план запроса.

Скорее всего, нужен индекс (ticker, id)
...
Рейтинг: 0 / 0
Проблемы с выборкой и передачей данных
    #39732813
EvgIvn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftEvgIvn,
Показывайте DDL таблицы и план запроса.
Скорее всего, нужен индекс (ticker, id)
Я пока не в курсе про DDL таблицы и план запроса. Почитаю что это и где это.
Индекс есть на id. И на другом поле, по которому иногда тоже идет выборка.
Но ticker - это поле с возвращаемыми данными. Не назначать же индексы всем полям?
...
Рейтинг: 0 / 0
Проблемы с выборкой и передачей данных
    #39732828
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgIvnНо ticker - это поле с возвращаемыми данными. Не назначать же индексы всем полям?Нет, ticker - это поле, по которому идёт отбор в данном запросе. По всем полям, конечно, не нужно. Индексы строятся для конкретных нужд, в частности, под конкретные запросы.
...
Рейтинг: 0 / 0
Проблемы с выборкой и передачей данных
    #39732837
Polar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgIvn,

Что в поле value ? Тип данных?

Раз уж ты только одно поле вытаскиваешь из таблицы, то советую почитать доки по функции mysqli_fetch_all и возможно отказаться от цикла.
...
Рейтинг: 0 / 0
Проблемы с выборкой и передачей данных
    #39732842
Polar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EvgIvn,

А также желательно узнать memory_limit в настройках php (обычно php.ini ) возможно там мало памяти(по умолчанию 128 Mb) и надо увеличить.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблемы с выборкой и передачей данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]