Mysql 8 Медленнее, чем 5,7 на Docker - PullRequest
0 голосов
/ 21 февраля 2020

Я новичок в docker, и недавно я пытался настроить свой проект на docker. Я успешно развернул приложение на nginx и php и успешно перенес eDB в контейнер. У меня есть планы перехода с MySQL 5,7 на 8, но я заметил, что запросы на выбор намного медленнее в MySQL 8.

Mysql 5,7

DockerFile

FROM mysql:5.7.29
CMD ["mysqld"]
EXPOSE 3306

docker составить:

version: '3.5'

services:
  database:
    build:
        context: ./database
    restart: always
    environment:
      - MYSQL_DATABASE=dbname
      - MYSQL_USER=username
      - MYSQL_PASSWORD=password
      - MYSQL_ROOT_PASSWORD=rootpwd
    ports:
      - "3306:3306"
    volumes:
      - /Path/to/data/folder:/var/lib/mysql

volumes:
  my-datavolume_five:

Mysql8

DockerFile

FROM mysql:8.0.18
CMD ["mysqld"]
EXPOSE 3306

docker -композит

version: '3.5'

services:
  database:
    build:
        context: ./database
    restart: always
    environment:
      - MYSQL_DATABASE=testdb
      - MYSQL_USER=user
      - MYSQL_PASSWORD=pwd
      - MYSQL_ROOT_PASSWORD=rootpwd
    command: ['--default-authentication-plugin=mysql_native_password']
    ports:
      - "3306:3306"
    volumes:
      - /Path/to/database/folder:/var/lib/mysql

volumes:
  my-datavolume:

I У меня есть пример запроса, который выполняет SELECT, и я пробовал его в нескольких сценариях ios, и он всегда оказывается медленным. Я выполнил запрос 100 раз за все время oop, и разница составляла 20 секунд.

Еще одна попытка - выполнить запрос 100 раз по уникальным идентификаторам, и разница между 15 и 20 секундами все еще была. (mysql 8 медленнее).

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

пример запроса, выполняемого в l oop с 100 идентификаторами


"select * from booking_table where account_id = '" . $id . "' and status = 'booked' and checked_in = 1 and checked_out = 0 and type in ('type_a','type_b') and cancelled = 0 and end_date > '<end_date_time>'";

Мне нужно знать, есть ли определенные настройки по умолчанию, которые я мог бы пропустить, и относится ли это к mysql config или docker config.

...