laravel 配置MySQL讀寫分離
前言:說到應對大流量、高併發的解決方案的時候,總會有這樣的回答,如:讀寫分離,主從複製...等,資料庫層今天先不討論,那麼今天我們就來看看怎麼在應用層實現讀寫分離。
框架:laravel5.7
說明:
Laravel預設將 select 的語句讓 read 指定的資料庫執行,insert/update/delete 則交給 write 指定的資料庫,達到讀寫分離的作用。
這些設定對原始查詢 raw queries,查詢生成器 query builder,以及物件對映 Eloquent 都生效。
一、單讀庫配置(一主一從)
開啟database.php檔案,找到mysql配置處,完成效果如下圖
二、多讀庫配置(一主多從)
.env檔案
三、多寫多讀配置(多主多從)
.env檔案
四、sticky
項
說明:sticky 項是一個可選的配置值,可用於在當前請求生命週期內允許立即讀取寫入資料庫的記錄。
如果 sticky 選項被啟用並且一個"寫"操作在當前生命週期內發生,則後續所有"讀"操作都會使用這個"寫"連線(前提是同一個請求生命週期內),
這樣就可以確保同一個請求生命週期內寫入的資料都可以立即被讀取到,從而避免主從延遲導致的資料不一致,是否啟用這一功能取決於你。
解釋:當然,這只是一個針對分散式資料庫系統中主從資料同步延遲的一個非常初級的解決方案,訪問量不高的中小網站可以這麼做,大流量高併發網站肯定不能這麼幹,
主從讀寫分離本來就是為了解決單點效能問題,這樣其實是把問題又引回去了,造成所有讀寫都集中到寫資料庫,對於高併發頻繁寫的場景下,後果可能是不堪設想的,
但是話說回來,對於併發量不那麼高,寫操作不那麼頻繁的中小型站點來說,sticky 這種方式不失為一個初級的解決方案。
示意圖(紅框中)
以上內容希望幫助到大家,更多PHP大廠PDF面試文件,PHP進階架構視訊資料,PHP精彩好文免費獲取可以關注公眾號:PHP開源社群,或者訪問:
「其他文章」
- 基於Nginx的負載均衡原理與實戰
- PHP控制反轉(IOC)和依賴注入(DI)
- 深入理解PHP7核心之Reference
- php中類的不定引數使用示例
- php單例模式的常見應用場景
- laravel 配置MySQL讀寫分離
- PHP的垃圾回收機制(建議收藏)
- 【shell指令碼】字串和陣列的使用
- PHP-FPM是什麼東東?
- PHP 編寫守護程序
- PHP命令列指令碼接收傳入引數的三種方式
- php專案中類的自動載入
- 複習下Linux去除重複項命令uniq
- 深入理解PHP核心:變數及資料型別
- Swoole協程與傳統fpm同步模式比較
- PHP中Session ID的實現原理
- 寫一手好SQL,該從哪裡入手最好?
- PHP命令列指令碼接收傳入引數的三種方式
- 使用 Shell 在多伺服器上批量操作
- PHP實現使用者異地登入提醒功能的方法