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

Най-добри практики за оптимизиране на база данни на MySQL

„Най-добрата практика“ е:

  1. Измерете производителността, като изолирате съответната подсистема, колкото можете по-добре.
  2. Определете основната причина за затруднението. Обвързан ли си I/O? обвързан с процесора? Обвързана с паметта? Чакате ключалки?
  3. Направете промени, за да облекчите основната причина, която открихте.
  4. Измерете отново, за да демонстрирате, че сте отстранили тесното място и с колко .
  5. Отидете към стъпка 2 и повторете, ако е необходимо, докато системата заработи достатъчно бързо.

Абонирайте се за RSS емисия на адрес http://www.mysqlperformanceblog.com и прочетете неговите исторически статии. Това е изключително полезен ресурс за мъдрост, свързана с производителността. Например, вие попитахте за InnoDB срещу MyISAM. Заключението им:InnoDB има средно около 30% по-висока производителност от MyISAM. Въпреки че има и няколко сценария на използване, при които MyISAM превъзхожда InnoDB.

Авторите на този блог също са съавтори на „High Performance MySQL“, книгата, спомената от @Andrew Barnett.

Отново коментар от @ʞɔıu:Как да разберете дали сте обвързани за вход/изход спрямо обвързан с процесора спрямо обвързан с памет, зависи от платформата. Операционната система може да предлага инструменти като ps, iostat, vmstat или top. Или може да се наложи да получите инструмент на трета страна, ако вашата ОС не предоставя такъв.

По принцип, кой ресурс е фиксиран на 100% използване/насищане, вероятно ще бъде вашето тесно място. Ако натоварването на процесора ви е ниско, но вашето I/O натоварване е максимално за вашия хардуер, тогава сте обвързани с I/O.

Това обаче е само една точка от данни. Лекарството може да зависи и от други фактори. Например, сложна SQL заявка може да извършва сортиране на файлове и това поддържа I/O зает. Трябва ли да хвърлите повече/по-бърз хардуер към него или трябва да преработите заявката, за да избегнете сортирането на файлове?

Има твърде много фактори за обобщаване в публикация на StackOverflow и фактът, че съществуват много книги по темата, подкрепя това. Поддържането на ефективно функциониране на бази данни и оптималното използване на ресурсите е работа на пълен работен ден, изискваща специализирани умения и постоянно обучение.

Джеф Атууд току-що написа хубава статия в блога за намирането на тесни места в системата:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхранение на UUID като низ в mysql с помощта на JPA

  2. Защо не мога да вмъкна 10 цифри, когато колоната ми е INT(10)

  3. Използване на DISTINCT и COUNT заедно в MySQL заявка

  4. Проблем с сравнението на дати в MySQL

  5. Не може да се свърже с базата данни след известно време на внедряване на сървъра