/ / Ускорете вашия уеб сайт с MySQL Кеширане на заявки

Ускорете вашия уеб сайт с MySQL Кеширане на заявки

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

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

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

Активиране на кеширането със стартиране на сървъра

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

Ще искате да стартирате тази команда от MySQL конзолата, която ще ви каже дали е налично кеширане на заявки.

mysql> show variables like 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

Не сбъркайте това като означава, че кеширането на заявкивсъщност е активиран, тъй като повечето хостинг доставчици няма да го активират по подразбиране. Колкото и да е странно, моята инсталация на Ubuntu Feisty вече го беше активирала ...

След това ще трябва да проверим и да видим дали кеширането на заявки е активирано. Ще трябва да проверим повече от една променлива, така че можем да направим всичко наведнъж, като проверим за заявката за променлива%

mysql> show variables like 'query%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| query_alloc_block_size       | 8192    |
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 8388608 |
| query_cache_type             | ON      |
| query_cache_wlock_invalidate | OFF     |
| query_prealloc_size          | 8192    |
+------------------------------+---------+

Ето важните елементи в списъка и какво означават:

  • query_cache_size - Това е размерът на кеша в байтове. Ако зададете тази стойност на 0, това ще деактивира ефективно кеширането.
  • query_cache_type - Тази стойност трябва да е ON или 1, за да бъде активирано кеширането на заявки по подразбиране.
  • query_cache_limit - Това е заявката за максимален размер (в байтове), която ще бъде кеширана.

Ако стойността на query_cache_size е зададена на 0 или на васпросто искате да го промените, ще трябва да изпълните следната команда, като имате предвид, че стойността е в байтове. Например, ако искате да разпределите 8MB в кеша, ние бихме използвали 1024 * 1024 * 8 = 8388608 като стойност.

SET GLOBAL query_cache_size = 8388608;

По подобен начин другите опции могат да бъдат зададени със същия синтаксис:

SET GLOBAL query_cache_limit = 1048576;
SET GLOBAL query_cache_type = 1;

Сега как да разберем дали всъщност работи? Можете да използвате командата SHOW STATUS, за да издърпате всички променливи, които започват с „Qc“, за да разгледате какво става под капака.

mysql> SHOW STATUS LIKE 'Qc%';
+-------------------------+--------+
| Variable_name           | Value  |
+-------------------------+--------+
| Qcache_free_blocks      | 65     |
| Qcache_free_memory      | 201440 |
| Qcache_hits             | 18868  |
| Qcache_inserts          | 2940   |
| Qcache_lowmem_prunes    | 665    |
| Qcache_not_cached       | 246    |
| Qcache_queries_in_cache | 492    |
| Qcache_total_blocks     | 1430   |
+-------------------------+--------+
8 rows in set (0.00 sec)

В статистиката ще забележите, че имам изобилиесвободна памет остана. Ако вашият сървър показва много ниски сини сливи, може да се наложи да помислите за увеличаване на тази стойност, но аз не бих похарчил твърде много памет за кеширане на заявки за уеб сървър ... трябва да оставите памет налична за apache, php, ruby ​​или каквото и да използвате.

Активиране в Config File

Ако искате тези промени да преживеят рестартиране илирестартирайте mysql сървъра, ще трябва да ги добавите във вашия /etc/mysql/my.cnf конфигурационен файл за MySQL. Обърнете внимание, че може да е на различно място във вашата инсталация.

Отворете файла с помощта на текстов редактор в режим sudo или root и след това добавете тези стойности, ако те вече не съществуват във файла. Ако те съществуват, просто ги разкажете.

query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576

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