Mysql создает временную таблицу очень медленно

Я использую mysql в двух разных системах. У меня одна система с Ubuntu, а другая с Debian.

Мне нужно создать временную таблицу в какой-то момент, чтобы представить данные, и что действительно странно, так это то, что в системе ubuntu это занимает 400 мс (ответ от браузера), а на debian это занимает более 10 секунд !!!

Я проверил 2 значения в конфигурации mysql, и у меня есть: показать глобальные переменные типа tmp_table_size; что одинаково на обоих серверах: 16777216

Но разница в следующем: показать глобальный статус, например created_tmp_disk_tables; что дает 11 на быстром сервере и 102 на медленном сервере.

Я действительно не знаю, где еще искать и как оптимизировать его, чтобы у меня было то же самое на обоих серверах.

Конечно, мой рабочий сервер находится на Debian.

Работает быстрый сервер: mysql версии 5.7.18-0ubuntu0.16.04.1 Медленный сервер работает: mysql версии 5.5.55-0 + deb8u1

На быстром сервере у меня есть:

show global variables like 'default_tmp_storage_engine';
+----------------------------+--------+
| Variable_name              | Value  |
+----------------------------+--------+
| default_tmp_storage_engine | InnoDB |
+----------------------------+--------+
1 row in set (0.00 sec)

На медленном сервере у меня есть:

show global variables like 'default_tmp_storage_engine';
Empty set (0.00 sec)

Вы создаете временную таблицу с данными или только с пустой структурой?

Nico Haase 18.06.2018 11:51

с такими данными, как 1000 строк, что не является огромным

Richard 18.06.2018 11:53

Наверное, настоящая проблема - отобрать эти 1000 строк? Вы можете это проверить?

Nico Haase 18.06.2018 12:18

Можете ли вы проверить переменную конфигурации default_tmp_storage_engine на обоих серверах?

Solarflare 18.06.2018 13:56

Быстрый сервер отвечает InnoDB, а другой отвечает пустым

Richard 18.06.2018 14:06

MySQL 5.5. и 5.7. отличаются двумя основными версиями и многое делают по-разному. Таким образом, причина, по которой ваш запрос выполняется иначе, может иметь несколько причин. Вам нужно будет оптимизировать ваш 5.5. запрос независимо от 5.7. Трудно помочь вам без дополнительной (в настоящее время у нас ее нет) информации (требуется: запрос (который заполняет временную таблицу), объяснение вывода, описания таблиц, возможно, код, который использует временную таблицу). Сначала вы можете попробовать использовать create temporary table... engine=memory при создании своей временной таблицы.

Solarflare 18.06.2018 16:39
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
6
1 593
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предложение рассмотреть для вашего my.cnf-ini

max_heap_table_size=16M  # and should always be same as tmp_table_size

ПОКАЗАТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ, КАК "% tmp_table_size", можно использовать в каждой версии, чтобы увидеть, что у вас есть на данный момент.

Глобальная переменная default_tmp_storage_engine была добавлена ​​между 5.5 и 5.7.

Для получения дополнительной помощи, пожалуйста, найдите контактную информацию в моем профиле.

@richard. Сколько времени занимает Debian? Для получения дополнительной помощи, пожалуйста, найдите контактную информацию в моем профиле, Сетевом профиле.

Wilson Hauck 19.06.2018 21:48

Я обновил mysql до той же версии и использовал engine = memory, и теперь у меня все работает с той же скоростью. Спасибо.

Richard 20.06.2018 14:53

Скажите, пожалуйста, как?

Richard 20.06.2018 15:51

@Richard Если вам нужны дополнительные улучшения производительности, посмотрите мой комментарий от 20 июня в 15:05. Спасибо.

Wilson Hauck 12.08.2018 22:04

Другие вопросы по теме