Описание:
Я столкнулся с проблемой производительности запроса MySQL, который эффективно выполняется на моем локальном компьютере (0,02 секунды), но занимает значительно больше времени. время выполнения в промежуточной среде. Время выполнения на стадии варьируется случайным образом; иногда это занимает около 4 секунд, а иногда превышает 10 секунд. Пример запроса:
SELECT
table1.qid,
table1.original_text,
table1.resolved_text,
table1.resolved_values
FROM table_1
INNER JOIN table_2
ON table_1.id = table_2.variation_id
WHERE table_2.users_id = 6;
Дополнительная информация:
И table_1, и table_2 имеют индексы для столбцов, используемых в предложения JOIN и WHERE.
Количество ожидаемых для сканирования строк, указанное EXPLAIN, кажется разумным.
Я проверил это промежуточный экземпляр имеет достаточно ресурсов, и явного конфликта за ресурсы нет.
Вопросы:
Что может привести к несогласованному выполнению запроса в промежуточной среде?
Почему время выполнения одного и того же запроса так сильно различается?
Почему добавление дополнительного фильтра qid приводит к такой резкой разнице в производительности?
Существуют ли какие-либо конкретные конфигурации сервера, настройки MySQL или факторы окружающей среды, которые могут повлиять такое поведение?
Примечание: Когда я запускаю запрос непосредственно через phpmyadmin или через любой клиент MySQL, он выполняется быстро.< /p>
Мне нужны идеи или предложения по дальнейшей диагностике и решению этой проблемы. Будем очень признательны за любую помощь или подсказки!
Добавил все детали выше
[b]Описание:[/b] Я столкнулся с проблемой производительности запроса MySQL, который эффективно выполняется на моем локальном компьютере (0,02 секунды), но занимает значительно больше времени. время выполнения в промежуточной среде. Время выполнения на стадии варьируется случайным образом; иногда это занимает около 4 секунд, а иногда превышает 10 секунд. [b]Пример запроса:[/b] [code]SELECT table1.qid, table1.original_text, table1.resolved_text, table1.resolved_values FROM table_1 INNER JOIN table_2 ON table_1.id = table_2.variation_id WHERE table_2.users_id = 6 AND table_1.qid = 201; [/code] [b]Контекст:[/b] [list] [*]Мне нужно выполнить этот запрос для разных значений user_id в цикл с использованием Python и SQLAlchemy. [*]Время выполнения непостоянно; он меняется случайным образом при многократном выполнении запроса при промежуточном этапе. [*]Я использовал оператор EXPLAIN для анализа запроса, и, похоже, он использует соответствующие индексы:[/list] [b]ОБЪЯСНИТЬ Вывод:[/b] [code]1 SIMPLE table_1 NULL ref PRIMARY,qid_index qid_index 4 const 1 100.00 NULL 1 SIMPLE table_2 NULL ref uid_index,var_index var_index 4 table_1.id 133 0.04 Using where
[/code] [b]Наблюдения:[/b] [list] [*]Запрос работает хорошо в локальной среде, но становится медленно на промежуточном сервере. [*]Профилирование показывает, что фаза выполнения занимает большую часть времени. [*]Небольшой вариант этого запроса без qid фильтр быстро работает в промежуточной среде: [/list] [code]SELECT table1.qid, table1.original_text, table1.resolved_text, table1.resolved_values FROM table_1 INNER JOIN table_2 ON table_1.id = table_2.variation_id WHERE table_2.users_id = 6;
[/code] [b]Дополнительная информация:[/b] [list] [*]И table_1, и table_2 имеют индексы для столбцов, используемых в предложения JOIN и WHERE. [*]Количество ожидаемых для сканирования строк, указанное EXPLAIN, кажется разумным. [*]Я проверил это промежуточный экземпляр имеет достаточно ресурсов, и явного конфликта за ресурсы нет. [/list] [b]Вопросы:[/b] [list] [*]Что может привести к несогласованному выполнению запроса в промежуточной среде? [*]Почему время выполнения одного и того же запроса так сильно различается? Почему добавление дополнительного фильтра qid приводит к такой резкой разнице в производительности? [*]Существуют ли какие-либо конкретные конфигурации сервера, настройки MySQL или факторы окружающей среды, которые могут повлиять такое поведение? [/list] [b]Примечание:[/b] Когда я запускаю запрос непосредственно через phpmyadmin или через любой клиент MySQL, он выполняется быстро.< /p> Мне нужны идеи или предложения по дальнейшей диагностике и решению этой проблемы. Будем очень признательны за любую помощь или подсказки! Добавил все детали выше
Описание:
Я столкнулся с проблемой производительности запроса MySQL, который эффективно выполняется на моем локальном компьютере (0,02 секунды), но занимает значительно больше времени. время выполнения в промежуточной среде. Время выполнения на...
Описание:
Я столкнулся с проблемой производительности запроса MySQL, который эффективно выполняется на моем локальном компьютере (0,02 секунды), но занимает значительно больше времени. время выполнения в промежуточной среде. Время выполнения на...
В моей базе данных есть таблица, содержащая около 400 тыс. строк, и я выполняю следующий оператор (запрос, который выполняет laravel):
select * from `activities` where `device_id` = ? and `battery_level` is not null order by `created_at` desc limit...
В моей локальной среде с использованием стандартного вызова API Process_request вызов запроса требуется от 8 до 20 секунд. В моей оболочке EC2 Python я смог запустить ее один раз, но потребовалось 34 секунды, что недопустимо для моего варианта...
В моей локальной среде с использованием стандартного вызова API Process_request вызов запроса требуется от 8 до 20 секунд. В моей оболочке EC2 Python я смог запустить ее один раз, но потребовалось 34 секунды, что недопустимо для моего варианта...