Ускоряване на MySQL

По време на работа периодично срещам бавни Drupal сайтове и спирачките много често са причинени от бавно изпълнение на заявки към Mysql. Има различни причини, но често бавното изпълнение на заявка се дължи на факта, че при изпълнение на заявка MySQL е принуден да използва временни таблици на диска. За това се използва директорията, посочена в променливата tmpdir на конфигурационния файл my.cnf. Според мен правилното решение в такива ситуации е да се оптимизира базата данни (използване на най-подходящите типове полета за съдържанието, правилна настройка на индексите и изграждане на правилни заявки към базата данни, които вземат предвид индексите в базата данни). Но ние също можем да помогнем на MySQL, ако преместим тези временни таблици в RAM (това решение е подходящо за сървъри с голямо количество RAM), което ще ни позволи да извършваме операции, свързани с използването на временни таблици по-бързо, като спестим операции за запис и четене от диск, тъй като всичко ще се извършва в RAM. За да преместим папката tmpdir в RAM, ще монтираме 4 Gb tmpfs дял в папката /var/lib/mysql/tmp, като използваме следните стъпки:

  1. Създайте папка за съхраняване на временни файлове, например: /var/lib/mysql/tmp
  2. Променете собственика на папката и групата на mysql
  3. Откриване на потребителския идентификатор (uid) и групата (gid) mysql
  4. Добавете запис към файла fstab
  5. Монтиране на нов tmpfs дял
  6. Редактиране на MySQL конфигурационния файл /etc/mysql/my.cnf
  7. Рестартиране на MySQL

Пон, 12/03/2012 - 09:11

Никога не съм мислил, че е толкова просто. Благодаря ти Роман за полезна публикация.

Пон, 12/03/2012 - 09:13

Радвам се, че се оказаздрави. Честно казано, не очаквах малко. Исках да го направя по различен начин.

роман (непроверен)

ср., 17.07.2013 г. - 06:53 ч

6. Редактирайте конфигурационния файл на MySQL /etc/mysql/my.cnf tmpdir=/var/lib/mysqltmp правописна грешка? tmpdir=/var/lib/mysql/tmp

Пет, 19.07.2013 - 06:38

Отговор на 6. Редактиране на файла от Роман (не е потвърдено)

Да, запечатано. благодаря, оправено

Сергей (не е потвърдено)

Пет, 29.05.2015 - 14:24

Пет, 29.05.2015 - 14:29

Отговор на Благодаря ви за добрия намек, но от Serge (не е потвърдено)

Струва ми се, че би било по-правилно да се направи масов избор, съмнявам се, че mysql ще използва tmp за вмъкване.

Сергей (не е потвърдено)

Пет, 29.05.2015 г. - 18:11 ч

Аким (не е потвърдено)

Чет, 09/17/2015 - 13:58

Благодаря ти. Преместването на директорията tmpdir на mysql в RAM решава проблема с kjournald, когато журналирането на файловата система блокира същата файлова система. Както се оказа, mysql е този, който генерира високо натоварване на kjournald с голям брой четения и записи в директорията tmpdir

Дмитрий (не е потвърдено)

вт., 10/11/2016 - 08:14 ч

И кажете ми защо веднага след създаването тези файлове се изтриват, възможно ли е да деактивирате това по някакъв начин?

Андрю (не е потвърдено)

Чет, 02/16/2017 - 08:54

как мога да кеширам повече памет? Кеширам само 4 килобита

събота, 25.02.2017 г. - 11:52 ч

Отговорът на въпроса как мога да кеширам ... от Андрей (не е потвърдено)

Паула (не е потвърдено)

ср., 31.05.2017 г. - 16:44 ч

Здравейте, Serge вече повдигна този въпрос малко по-високо, но все пак - как да се уверите, че всичко работи според очакванията?df -h показва, че пространството в монтирания дял не се използва(заето 0), на свой редmysqltuner показва, че се създават временни таблици.

Чет, 06/08/2017 - 06:28

Отговор на Hello… от Paula (не е потвърдено)