Administrators/Optimize performance/Database/ru

Несколько баз данных
Начиная с версии 2014.07, ядро Arcavias способно использовать одну базу данных для каждого домена. Это действительно большое преимущество, так как нагрузка может быть распределена на до 16 баз данных с неограниченным по производительности железом на каждом сервере баз данных!

Доступные домены:


 * cache
 * attribute
 * catalog
 * coupon
 * customer
 * job
 * locale
 * log
 * media
 * order
 * plugin
 * price
 * product
 * service
 * supplier
 * text

По умолчанию все эти домены используют стандартную базу данных, определённую в resource.php в директории "./config" ядра Arcavias. Для добавления второго сервера базы данных для домена, продублируйте настройку раздела "db", изменив ключ на "db- " и адаптируйте настройки хост, порт, имя пользователя и пароль, например:

'db' => array( 	'adapter' => 'mysql', 	'host' => '192.168.0.1', 	'database' => 'shop', 	'username' => 'arcavias', 	'password' => 'secret', 	'stmt' => array( "SET NAMES 'utf8'", "SET SESSION sql_mode='ANSI'" ), 	'limit' => 2, ), 'db-order' => array( 	'adapter' => 'mysql', 	'host' => '192.168.0.2', 	'database' => 'shop_order', 	'username' => 'arcavias', 	'password' => 'secret', 	'stmt' => array( "SET NAMES 'utf8'", "SET SESSION sql_mode='ANSI'" ), 	'limit' => 2, ),

Все операции по заказам при этом будут отсылаться на второй сервер базы данных, а все остальные операции будут производиться с использование первой базы данных. Запросто можно добавить и дополнительные базы данных для других доменов.

Замечание: обычно для доменов журналирования (log), покупателей (customer) и заказов (order) было бы неплохо использовать другие базы данных, так как эти домены обычно задействуют множество операций записи. Другие домены обновляются реже, обычно только при обновлении товаров и кеш базы данных лучше перераспределяется на сервер Redis.

Использование реплик только для чтения
Если необходимо обрабатывать сверхвысокий трафик и, несмотря на использование разных баз данных для каждого из доменов и кластера серверов Redis для кеширования, база данных всё еще нуждается в увеличении количества запросов (чтения), чем это может обеспечить единственный сервер, используйте репликацию MySQL. Можно настроить несколько вторичных серверов MySQL только для чтения, которые получают изменения от сервера-мастера, при этом вторичные сервера отвечают на запросы на чтение от веб серверов.

Для такого типа настройки необходимо несколько идентично настроенных, кроме настроек баз данных, веб серверов. Вторичная база данных запрашивается группой веб серверов, другие группы веб серверов в то же время могут запрашивать другие вторичные базы данных.

Внимание: при такой настройке важно, чтобы все изменения в содержимом магазина производились на основном MySQL сервере (master), а затем автоматически распространялись на вторичные сервера (slaves)! Это не сработает со следующими доменами, так как магазин должен сохранять или обновлять данные от имени покупателей:


 * cache
 * coupon
 * customer
 * log
 * order