配置方法 参考资料:http://www.linuxidc.com/Linux/2015-07/120134.htm
读写分离(Read/Write Splitting)。
1.原理:让主数据库(master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库(slave)处理SELECT查询操作。
2.好处:备份数据库,分担数据库压力,承受更大的访问量。
是怎么分配主从数据库的:
Yii2\db\Command.php prepare 方法
if ($forRead || $forRead === null && $this->db->getSchema()->isReadQuery($sql))
{
$pdo = $this->db->getSlavePdo();
} else {
$pdo = $this->db->getMasterPdo();
}
Yii2\db\Schema.php isReadQuery 方法
public function isReadQuery($sql)
{
$pattern = '/^\s*(SELECT|SHOW|DESCRIBE)\b/i';
return preg_match($pattern, $sql) > 0;
}