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

Съвети за настройка на производителността на MySQL за оптимизиране на базата данни

Структурираният език за заявки (SQL) е език за програмиране със специална цел, използван за съхраняване, манипулиране и извличане на данни от базата данни. Той е намерил приложения в много системи за релационни бази данни, включително MySQL, Postgres, Oracle, SQL Server и други.

Използвайки SQL изрази, разработчиците лесно извършват различни функционални операции с база данни, като създаване, актуализиране и изтриване на данни.

Тъй като обемите на данни нарастват и технологията става все по-сложна, става все по-важно да се оптимизира правилно базите данни на MySQL, за да се осигури изживяване на крайния потребител и да се намалят разходите за инфраструктура. Инструментите за настройка на производителността на MySQL могат да помогнат на професионалистите в базата данни бързо да идентифицират тесните места, да се насочат към недостатъчни операции чрез преглед на плановете за изпълнение на заявки и да премахнат всякакви игри за отгатване.

С добавената сложност на нарастващите обеми данни и непрекъснато променящите се натоварвания, настройката на производителността на базата данни и оптимизиране на MySQL заявки вече са необходими за максимално използване на ресурсите и производителността на системата.

Има няколко причини, които правят настройката на SQL малко сложна за разработчиците. Първо, това изисква обширна техническа експертиза, за да се напишат и разбират различни планове за изпълнение. Докато писането на чисти и пълни SQL изрази е отговорност на този, който събира задълбочени познания за него.

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


Пригответе се за актуализация на основните уеб показатели

Електронна книга за ускоряване на вашия уебсайт, преди да започнете да губите трафик.

Благодаря Ви

Списъкът ви е на път към вашата входяща кутия.


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

Предимствата от настройката на производителността на MySQL

Основното предимство на идентифицирането на фактора, движещ производителността за базата данни, ви позволява да избегнете прекомерно обезпечаване и намаляване на разходите чрез правилно оразмеряване на вашите сървъри. Той също така ви дава представа дали преместването на съхранение на данни или добавянето на капацитет на сървъра ще донесе подобрение в производителността или не, и ако е така, тогава колко ще бъде.

Базата данни за настройка за оптимизиране на производителността на MySQL заявки не идва с бледи предизвикателства. Въпреки това, след като бъде настроена правилно, базата данни дава стойностни резултати от производителността с страхотни функционалности. Той не само намалява нежеланото натоварване на задачи, но и оптимизира базата данни MySQL за по-бързо извличане на данни.

Може да харесате и: Съвети за производителност на PHP за оптимизиране на вашите уебсайтове

Оптимизирайте заявките с MySQL Указания за оптимизиране на заявки

Следвайте тези най-добри практики за настройка на производителността на MySQL и оптимизиране на скоростта на базата данни.

На първо място, осигурете индексиране на всички предикати в клаузите WHERE, JOIN, ORDER BY и GROUP BY. WebSphere Commerce силно набляга на индексирането на предикатите, за да увеличи производителността на SQL. Тъй като неправилното индексиране на SQL заявки може да причини сканиране на таблици, което в крайна сметка да доведе до проблеми със заключване и други проблеми.

Ето защо силно препоръчвам да индексирате всички предикатни колони, така че базата данни да може да изпита оптимизация на MySQL заявки.

Може да харесате и: Ръководство за оптимизиране на производителността на Laravel

Избягвайте използването на функции в предикати

Базата данни не използва индекс, ако има някаква функция, предварително дефинирана в колоната.

Например:

SELECT * FROM TABLE1 WHERE UPPER(COL1)='ABC'Copy

Поради функцията UPPER() базата данни не използва индекса на COL1. Ако няма начин да избегнете тази функция в SQL, ще трябва да създадете нов индекс, базиран на функции, или да генерирате персонализирани колони в базата данни, за да подобрите производителността.

Избягвайте използването на заместващ знак (%) в началото на предикат

Предикатът LIKE '%abc' предизвиква пълно сканиране на таблицата. Например:

SELECT * FROM TABLE1 WHERE COL1 LIKE '%ABC'Copy

В повечето случаи това използване на заместващи знаци носи големи ограничения на производителността.

Избягвайте ненужните колони в клауза SELECT

Вместо да използвате „SELECT *“, винаги посочвайте колони в клаузата SELECT, за да подобрите производителността на MySQL. Тъй като ненужните колони причиняват допълнително натоварване на базата данни, забавяйки нейната производителност, както и целия систематичен процес.

Използвайте вътрешно свързване вместо външно, ако е възможно

Използвайте външно свързване само когато е необходимо. Ненужното му използване не само ограничава производителността на базата данни, но също така ограничава опциите за оптимизация на MySQL заявки, което води до по-бавно изпълнение на SQL изрази.

Използвайте DISTINCT и UNION само ако е необходимо

Използването на оператори UNION и DISTINCT без основна цел причинява нежелано сортиране и забавяне на изпълнението на SQL. Вместо UNION, използването на UNION ALL носи по-голяма ефективност в процеса и подобрява производителността на MySQL по-точно.

Клаузата ORDER BY е задължителна в SQL, ако очаквате да получите сортиран резултат

Ключовата дума ORDER BY сортира набора от резултати в предварително дефинирани колони на изрази. Въпреки че изявлението носи предимство за администраторите на базата данни за получаването на сортираните данни, то също така оказва влияние върху производителността по малко при изпълнението на SQL. Тъй като заявката първо трябва да сортира данните за получаване на крайния набор от резултати, което причинява малко сложна операция при изпълнението на SQL.

Може да харесате и: Как да съединя две таблици в MySQL

Не използвайте MySQL като опашка

Опашките могат да повлияят на производителността на вашата база данни направо от ядрото и могат да влязат в базите данни на вашите приложения без ваше знание. Например, ако настройвате състояние за конкретен елемент, така че „подходящ процес“ да има достъп до него, вие неволно създавате опашка. Това, което прави, е, че натрупва допълнително време за зареждане за достъп до ресурса без някаква сериозна причина.

Опашките създават проблеми по две основни причини. Те сериализират вашето работно натоварване, предотвратявайки паралелното изпълнение на задачи и често водят до таблица, която съдържа незавършена работа, както и исторически данни от вече завършени задачи. Това не само добавя латентност към приложението, но също така добавя пречка за настройката на производителността на MySQL.

Може да харесате и: Как да използвате Redis за опашка

Разберете четирите основни ресурса

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

За да разберете правилно основните ресурси, трябва да се съсредоточите върху две конкретни области, т.е. да изберете правилния хардуер и да отстраните проблеми с него.

Винаги се уверете, че използвате универсални компоненти за производителност, когато избирате хардуер за базата данни MySQL. Не само изберете най-доброто от стека, но и се уверете, че трябва да има правилен баланс между тях. Често сме виждали, че организациите са склонни да избират сървъри с бързи процесори и големи дискове, но се бъркат с гладна памет, което в крайна сметка убива производителността.

В някои сценарии добавянето на памет става много важно за подобряване на производителността, когато става въпрос за величината. Изглежда малко противоинтуитивно, но в повечето случаи прекомерното използване на дискове влияе директно върху производителността на базата данни. Тъй като недостигът на достатъчно памет за съхраняване на данните на сървъра се оказва скъпоструващ при дерайлира на производителността на базата данни.

Когато става въпрос за отстраняване на неизправности, винаги следете работата на четирите основни ресурса. Потвърдете качествено, че се представят според нуждите, подобряване на нормите. Редовното разглеждане на този одит бързо ще разреши големи проблеми.

Заявки за пагинация

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

Можете да намерите оптимизации в самия потребителски интерфейс. Вместо да показвате точния брой страници в резултатите и връзки към отделна страница, можете просто да покажете връзка към следващата страница. Можете също да попречите на хората да посещават неподходящи страници.

От страната на заявката, вместо да използвате LIMIT с изместване, можете да изберете още един ред, отколкото ви е необходим, и когато потребителят щракне върху връзката „следваща страница“, можете да посочите този последен ред като начална точка за следващия набор от резултати . Например, ако потребителят е прегледал страница с редове от 101 до 120, ще трябва да изберете и ред 121; за да изобразите следващата страница, трябва да запитате сървъра за редове, по-големи или равни на 121, ограничение 21.

Оптимизиране на MySQL подзаявки

Най-важният съвет, който мога да ви дам относно подзаявките, е, че трябва да предпочитате присъединяване, където е възможно, поне в текущите версии на MySQL.

Подзаявките са обект на интензивна работа от екипа на оптимизаторите и предстоящите версии на MySQL може да имат повече оптимизации на подзаявки. Проверявайте кои от оптимизациите ще се окажат в освободения код и каква разлика ще направят. Моята мисъл тук е, че „предпочитам присъединяване“ не е съвет за бъдещето. Сървърът става все по-умен през цялото време и случаите, в които трябва да му кажете как да направи нещо, вместо какви резултати да върне, стават все по-малко.

Mysql Query Cache

Един от най-важните аспекти на измерването на производителността е кеширането на съдържанието. MySQL осигурява кеширане на заявки за база данни, което кешира текста на оператора SELECT и извлечения резултат. Следователно, всеки път, когато правите дублирана база данни, извиквате MySQL кеша на заявки, той ще ви отговори и ще покаже резултата от кеша и няма да се анализира многократно извикване. По този начин можете да увеличите максимално процеса на оптимизиране на кеша на MySQL.

За да настроите MySQL кеша на заявки, трябва да добавите няколко настройки към MySQL. На първо място, трябва да проверите дали кешът на заявките е наличен или не със следната команда:

mysql> SHOW VARIABLES LIKE 'have_query_cache';

Това ще покаже резултата, ДА. Това означава, че MySQL кешът работи добре.

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| have_query_cache | YES   |

+------------------+-------+

Сега можете да настроите размера и типа на кеша на MySQL заявките. Не забравяйте, че минималният размер по подразбиране е 40KB. Максималният размер може да бъде 32MB. Можете да настроите MySQL query_cache_size, като използвате следната команда:

mysql> SET GLOBAL query_cache_size = 40000;

Типът на кеша на заявките може да определи поведението на всички връзки. Можете също да деактивирате кеша на заявки за заявки като:

mysql> SET SESSION query_cache_type = OFF;

Можете също да зададете стойности като 0,1 и 2 за настройка на състоянието на връзката.

Използвайте Memcached за MySQL кеширане

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

Memcached съхранява стойностите (v) с ключа (k) и извлича стойностите (v) с ключа (k), без дори да анализира заявките на базата данни и стои далеч от всички тези проблеми.

За да прочетете повече за Memcached, можете да прочетете ръководството как да настроите Memcache в php.

Приключваме!

Тази статия предоставя подробно описание на най-добрите практики за оптимизиране на база данни и удобни съвети за настройка на производителността на MySQL, които всеки разработчик трябва да знае. Това е пълно ръководство за онези бекенд разработчици, които не са сигурни относно лошата си производителност на базата данни и се нуждаят от някои удобни техники за оптимизиране на 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. Може ли Hibernate да работи със синтаксиса на MySQL ON DUPLICATE KEY UPDATE?

  2. където 1=1 изявление

  3. Най-добрият начин за хостване на MySQL в Azure Cloud

  4. Как да архивирате/възстановявате MySQL/MariaDB и PostgreSQL с помощта на инструменти „Automysqlbackup“ и „Autopostgresqlbackup“

  5. Въведение в SQL типове данни