前言:上一篇我們說了《laravel 配置MySQL讀寫分離》,這次我們說下,laravel的底層代碼是怎樣實現讀寫分離的。
一、實現原理
說明:
1、根據 database.php 配置,創建寫庫和讀庫的鏈接 connection
2、調用 select 時先判斷使用讀庫還是寫庫,而 insert/update/delete 統一使用寫庫
主要文件:Illuminate/Database/Connectors/ConnectionFactory.php
1、判斷 database.php 是否配置了讀寫分離數據庫
文件:Illuminate/Database/Connectors/ConnectionFactory.php
2、看看如何創建讀庫和寫庫的鏈接
3、看看多個讀庫或者寫庫會選擇哪個
4、總結
1,可以設置多個讀庫和多個寫庫,或者不同組合,比如一個寫庫兩個讀庫
2,每次只創建一個讀庫鏈接和一個寫庫鏈接,從多個庫中隨機選擇一個;
二、select和insert/update/delete源碼解析
主要文件:Illuminate/Database/Connection.php
1、select 函數根據第三個輸入參數判斷使用讀庫還是寫庫
2、insert/update/delete 統一使用寫庫
3、總結
1,getReadPdo () 獲得讀庫鏈接,getPdo () 獲得寫庫鏈接。
2,select () 函數根據第三個參數判斷使用讀庫還是寫庫。
以上就是本篇文章的全部了,結束。