Yii2 主从 数据库

配置方法 参考资料:http://www.linuxidc.com/Linux/2015-07/120134.htm

读写分离(Read/Write Splitting)。

1.原理:让主数据库(master)处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库(slave)处理SELECT查询操作。

2.好处:备份数据库,分担数据库压力,承受更大的访问量。

是怎么分配主从数据库的:

Yii2dbCommand.php     prepare 方法

 if ($forRead || $forRead === null && $this->db->getSchema()->isReadQuery($sql))
 {
        $pdo = $this->db->getSlavePdo();
 } else {
        $pdo = $this->db->getMasterPdo();
 }

Yii2dbSchema.php    isReadQuery 方法

    public function isReadQuery($sql)
    {
        $pattern = '/^s*(SELECT|SHOW|DESCRIBE)/i';
        return preg_match($pattern, $sql) > 0;
    }
原文地址:https://www.cnblogs.com/cgjcgs/p/5643965.html