кеширане MySQL
Първо, заявка за кеширане значително ускорява поколение страница. По същество, тъй като SQL-заявки са почти винаги е основната пречка.
От друга страна, интегрирана кеширане е много по-лесен за използване от кеширането на ниво приложение.
Посочването в довереник "query_cache_type = 1", ние включваме кеширането на всички заявки. В същото време ние не трябва да zaparivatsya кеш обезсилване - база данни се знае кога таблицата се променя и на кеш паметта се изтрива автоматично. Ето един пример.
Ако вместо от файловете, които използваме някакъв друг вид кеширане на ниво приложение, като например MemCache, това не променя нищо - ние все още трябва да се изпълнява чрез кода и го поставете, ако-друго.
С една дума, най-големият плюс кеш MySQL - нареди един от точката, в query_cache_type конфигурационния = 1 и след това заредете основата падна. Дори кодът не е необходимо да се докоснат.
Най-големият недостатък е, че анулирането на кеша се случва твърде прост алгоритъм: ако базовата таблица е променен външен вид, от който искате да направите запитване. Например тя изглежда така. Има 100 000 потребители, ние кеширана. Аз дойдох от и да се промени нещо в профила ви. Тя ще изглежда, че можете да загубите 1 кеш (само за потребителя, че нещо се е променило). Но MySQL изчиства целия потребителите кеш, тъй като не знае в коя потребителска информация се е променила - той вижда само от датата на промяната на маса.
По този начин, ние ще вкара много бърза памет, която имаме толкова малко, както и кеширане ще бъде неефективен.
Но ако имате данни рядко се промени, кеш MySQL - добро решение. Въпреки това, ако сървър с множество сайтове, кеширане е активиран за всички наведнъж. Ето защо, ако паметта е малък, можете ръчно да укажете исканията, които кеш, и кои не са. Ето как
- Намерени в конфигурационния query_cache_type = 2
- В искания, които те искат да кешират директива запис SQL_CACHE:
"SELECT * FROM SQL_CACHE тагове"
Както се вижда, в този случай, ние все още имаме да стартирате код и ponastavlyat SQL_CACHE в искания.
Сега погледнете статистиката (тя ме в продължение на 5 дни)
Добре дошли! Благодаря за статията.
Кажи ми как сте определили - ". Както можете да видите, 96% от заявките, взети от кеша".
Тук имам следните данни:
+-------------------------+----------+
| variable_name | Цена |
+-------------------------+----------+
| Qcache_free_blocks | 9 |
| Qcache_free_memory | 49016624 |
| Qcache_hits | 23509 |
| Qcache_inserts | 24011 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 863 |
| Qcache_queries_in_cache | 16557 |
| Qcache_total_blocks | 33157 |
+-------------------------+----------+
Как да се изчисли ефективни или не се използва?
[Mysqld]
DataDir = / Var / ПЬ / MySQL
гнездо = / Var / ПЬ / MySQL / mysql.sock
потребител = ****
# Деактивирането символични връзки се препоръчва за предотвратяване на разнообразни рискове за сигурността
символни връзки = 0
key_buffer_size = 16M
key_cache_division_limit = 70
tmp_table_size = 16M
max_heap_table_size = 16M
query_cache_size = 64M
query_cache_type = 1
query_cache_limit = 2М
long_query_time = 0.5
slow_query_log_file = /var/log/mysql-slow.log
slow_query_log = 0
пропуснете-InnoDB
thread_cache_size = 4
table_cache = 128
Qcache_hits 44614
Qcache_inserts 1396
(Qcache_inserts / Qcache_hits) * 100% = 3.1%, така.
Qcache_inserts - се случва, когато няма искане в кеша и данните на кеша са остарели, т.е. ние lezim в диска, ние получаваме данни и се съхранява в базата данни на кеш.
Qcache_hits - когато искането е в кеша и ние го получаваме от паметта.
Колкото по-малко съотношение (Qcache_inserts / Qcache_hits) - по-добре. Колкото по-малко данни са взети от диска, и колкото повече данни е взета от кеша.
Във вашия случай на 50% ефективност. В този случай, има достатъчно памет. Очевидно промените данните в таблицата, както и всички кеш за тази таблица се изчистват.
Например, таблица пост позиции.
Кешът куп тип данни
изберете * от пост където ID = 1
изберете * от пост където ID = 2
изберете * от пост където номер = 3
изберете * от пост където ID = N
Но веднага след като ви постави в нова длъжност с базата данни или актуализират на всеки пост нещо, а след това изчисти всички тези кеш.
Между другото, вие long_query_time = 0.5 - няма да работи. MySQL може само да влезете запитвания повече от 1 секунда. т.е., този параметър трябва да е по-голямо от 1.