Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL максимално използване на паметта

Максималното използване на паметта на MySQL зависи много от хардуера, вашите настройки и самата база данни.

Хардуер

Хардуерът е очевидната част. Колкото повече RAM, толкова по-добре, по-бързи дискове ftw . Не вярвайте на тези месечни или седмични новинарски писма. MySQL не мащабира линейно - дори на хардуера на Oracle. Малко по-сложно е от това.

Изводът е:няма общо правило за това какво се препоръчва завашатата Настройка на MySQL. Всичко зависи от текущото използване или прогнозите.

Настройки и база данни

MySQL предлага безброй променливи и превключватели за оптимизиране на поведението му. Ако срещнете проблеми, наистина трябва да седнете и да прочетете (ф'инг) ръководството.

Що се отнася до базата данни - няколко важни ограничения:

  • машина за таблици (InnoDB , MyISAM , ...)
  • размер
  • индекси
  • използване

Повечето MySQL съвети за stackoverflow ще ви разкажат за 5-8 така наречените важни настройки. Първо, не всички от тях имат значение - напр. разпределянето на много ресурси за InnoDB и неизползването на InnoDB няма голям смисъл, защото тези ресурси се прахосват.

Или - много хора предлагат да увеличите max_connection променлива - добре, те малко знаят, че това също предполага, че MySQL ще задели повече ресурси за обслужване на тези max_connections -- ако има нужда. По-очевидното решение може да бъде да затворите връзката към базата данни във вашия DBAL или да намалите wait_timeout за да освободите тези нишки.

Ако схванете моето отклонение - наистина има много, много за четене и научаване.

Двигатели

Таблиците са доста важно решение, много хора забравят за тях рано и след това изведнъж се борят с 30 GB MyISAM таблица, която се заключва и блокира цялото им приложение.

Не искам да кажа MyISAM е гадно , но InnoDB може да бъде настроен, за да отговаря почти или почти толкова бързо, колкото MyISAM и предлага такова нещо като заключване на ред при UPDATE докато MyISAM заключва цялата таблица, когато е записана.

Ако сте свободни да стартирате MySQL в собствената си инфраструктура, може да искате да разгледате percona сървър защото сред включването на много приноси от компании като Facebook и Google (те знаят бързо), включва също и собствената замяна на Percona за InnoDB , наречен XtraDB .

Вижте моята същност за настройка на percona-server (и -client) (в Ubuntu):http://gist.github .com/637669

Размер

Размерът на базата данни е много, много важен - вярвате или не, повечето хора в Intarwebs никога не са се занимавали с голяма и интензивна настройка на MySQL, но те наистина съществуват. Някои хора ще тролират и ще кажат нещо като „Използвайте PostgreSQL!!!111“, но нека ги игнорираме засега.

Изводът е:съдейки от размера, трябва да се вземе решение за хардуера. Не можете наистина да накарате база данни от 80 GB да работи бързо на 1 GB RAM.

Индекси

Не е:колкото повече, толкова по-весело. Трябва да се зададат само необходими индекси и използването трябва да се провери с EXPLAIN . Добавете към това EXPLAIN на MySQL е наистина ограничено, но е начало.

Предложени конфигурации

Относно тези my-large.cnf и my-medium.cnf файлове -- дори не знам за кого са написани. Навийте своя собствен.

Тунинг грунд

Чудесно начало е настройката . Това е bash скрипт (подсказка:ще ви трябва linux), който взема изхода на SHOW VARIABLES и SHOW STATUS и го обгръща в, надявам се, полезна препоръка. Ако сървърът ви е работил известно време, препоръката ще бъде по-добра, тъй като ще има данни, на които да ги базирате.

Тунинг грундът обаче не е вълшебен сос. Все пак трябва да прочетете всички променливи, които предлага да промените.

Четене

Наистина искам да препоръчам mysqlperformanceblog . Това е чудесен ресурс за всякакви съвети, свързани с MySQL. И не е само MySQL, те също знаят много за правилния хардуер или препоръчват настройки за AWS и т.н. Тези момчета имат години и години опит.

Друг страхотен ресурс е planet-mysql , разбира се.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи операторът SOUNDS LIKE в MySQL

  2. Инсталиране на MySQL-python

  3. Как да проверите размера на всички таблици в база данни в MySQL

  4. Проблеми при сравнение на MySQL с плаваща запетая

  5. Как да се свържа с MySQL база данни?