ПредишенСледващото

phpMySQLInnoDBMemCache

Въведение в Memcached интерфейс за MySQL InnoDB

В MySQL 5.6 имаше кеша в паметта, съвместим магазин ключ-стойност на базата на InnoDB двигателя.

InnoDB Memcache Daemon дава стабилност на InnoDB тип данни ключ-стойност, до която достъп могат да бъдат организирани чрез по-бързо и по-оптимизирани Memcached протокол. При използване на този протокол ще бъде пропуснат: разбор на заявката, неговата оптимизация и останалата част от обработката не са задължителни.

С mysqlnd_memcache можете прозрачно напред вашите искания към този кеша в паметта, съвместим интерфейс.

Стандартни пакети MySQL 5.6, които се доставят на Ubuntu (Trusty), не включват плъгин кеша в паметта. За да използвате този плъгин, трябва да го инсталирате от официалните хранилища ап-MySQL-I (за Debian 7.x Уизи, Ubuntu 12.04 Precise и Ubuntu 14.04 Trusty).

След като сте инсталирали MySQL 5.6 (или по-горе), като влезете в MySQL като корен и направете следното:

innodb_memcached_config.sql скрипт върши няколко неща, и първото нещо, което той прави - тя създава innodb_memcache база данни. който съдържа три таблици:

  1. cache_policies. Тази таблица съхранява правилата за това как да изпълнява GET команди. SET. Изтриване и флъш.
  2. контейнери. Тази таблица съдържа списък на таблиците, които могат да бъдат достъпни чрез кеша в паметта
  3. config_options - Тази маса магазини, настройките за кеша в паметта, а именно - с няколко графи разделителните ценности - сепаратор (по подразбиране вертикална черта "|"), и за третиране на сепаратор маси table_map_delimiter а (точка по подразбиране ".")

От друга страна, на която се изпълнява сценария - изтегляне на плъгин и MemCache демон в рамките на MySQL.

Сега сте готови да използвате този плъгин.

Създаване на кеша в паметта за съхранение

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

Всяка колекция има име, което се използва за достъп до нея чрез MemCache, а също така съдържа редица колони:

  • име. име за достъп до колекцията чрез кеша в паметта
  • db_schema. име на база данни
  • db_table. име на таблица
  • key_columns. име на колоната, съдържаща ключ (дори и ако нямате нищо против множествено число, то е една колона)
  • value_columns. име на колона, определен със запетая, която съдържа стойността. В Memcache стойност на всички стойности на тези колони са разделени от вертикални пръти (както е посочено в Таблица config_options)
  • знамена. който знамена, за да инсталирате кеша в паметта
  • cas_column. Колона Наименование на CAS-стойност инсталиран кеша в паметта консумация
  • expire_time_column. име на колоната, която съхранява времето "protuhaniya" (в секунди), или 0, ако не "прогнивам" никога
  • unique_idx_name_on_key. индекс име, с което е наложено ограничение за UNIQUE ключовата колона. Ако ключът е основният ключ колона въведете основния

За да се организира нашия магазин, ние ще се създаде нова база данни kv_data и маса го kv_store:

След това, ние ще информираме за нашата приставка хранилище, създаване на контейнер:

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

Използването на кеша в паметта интерфейс

Сега, когато имате и работи InnoDB кеша в паметта интерфейс, можете да поставите (вложка) данните в базата данни, както и редовен маса или, разбира се, чрез кеша в паметта протокола - това може да се направи с помощта на телнет-а.

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

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

За да използвате кеша в паметта интерфейс чрез телнет, да я използват, както следва:

Използване на няколко колекции

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

За достъп до данните на друга колекция, трябва да имате две възможности:

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

Преди името на колекцията, за да се разграничи от ключовете е с префикс - два символа @:

Вторият - е да се използва пълното име. В този случай, просто да влезе в игра table_map_delimeter. чрез което ние просто сложи преди събирането на колекцията префикс @@ и след table_map_delimeter. По този начин, препратката към test.key става @@ kv_data.test.key

Аз препоръчвам винаги да използвате този синтаксис, т. За. Можете да променяте произволно събиране в някои причинени от част от код, без да се връща към предишните колекции.

С помощта на приставката mysqlnd_memcache

Сега можете просто да осъществите достъп до данните чрез интерфейс кеша в паметта с помощта на PHP разширение Memcached или кеша в паметта (Memcached разширение. Кеша в паметта разширение). По-конкретно, можете да настроите вашата сесия манипулатор за да използвате този подход. А също така можете да използвате нормални заявки SQL. Въпреки това, с приставката mysqlnd_memcache можете да пренасочите прозрачно SQL заявки на кеша в паметта интерфейс, когато е необходимо.

По подразбиране, заявките са съчетани с регулярен израз, посочен в MYSQLND_MEMCACHE_DEFAULT_REGEXP постоянно:

Ако искането отговаря на изискванията, след което го включете в проверките, които са изброени в колекцията на настройките само полета от масата и това, където клауза е само едно условие с просто сравнение на ключа.

За нашия пример, това условие ще се съобрази с това искане тук:

Въпреки това, нито един от тях няма да:

Такива искания могат да бъдат направени от един от механизмите на разширения: MySQL, MySQLi или ЗНП, и ще бъдат прихванати без ваше.

mysqlnd_memcachene процеси плъгин пишат молби.

Въпреки това ограничение, използването му определено може да подобри вашия код (че не е нужно да приложат призив към кеша в паметта / Memcached API на) и да получите голяма печалба в изпълнение с малки промени.

Запис, репликация и басейн Memcache

Memcached е известен със своята лесна настройка Memcached-и басейн за балансиране на натоварването и устойчивост на откази, но какво да кажем за кеша в паметта-интерфейс за InnoDB? В известен смисъл, подобен на манипулатора, присъства в репликацията на MySQL, фактът, че всеки роб може да се използва като MemCache, и сървъра само за четене, обаче, същите правила за отделяне на четенето и писането са полезни, когато се работи с MemCache консумация.

Вие трябва да сте сигурни, че използвате само mysqlnd_memcache плъгин за достъп до басейн и да го свърже с mysqlnd_ms на плъгин за организацията, за да четат и пишат раздяла. Все пак, това означава, че ще пропусне възможността да се възползват от висока производителност и Memcache-iinterfeysom на запис.

Тъй като няма начин да покаже, кеша в паметта (г) разширяване че сървърите се използват само в режим он чете, не е възможно да се използва стандартната репликация топология майстор + робите като басейн Memcached-ите.

заключение

Memcached интерфейс за InnoDB - това е много повече от един бърз начин да се използва MySQL за прости магазини ключ-стойност, но тя разполага с всички предимства на превъзходното InnoDB двигателя.

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

В следващата статия в тази серия ще разгледаме исканията за кеширане за по-нататъшно подобряване на производителността.

Подкрепете проекта - споделете линка, благодаря!