課程
/后端開發(fā)
/PHP
/輕松學會Laravel-基礎篇
laravel怎么分表分庫?
2016-11-18
源自:輕松學會Laravel-基礎篇 4-1
正在回答
分庫干啥?
一般一個項目就連接一個數(shù)據(jù)庫啊,一個庫里放上百十張表都沒問題的?在config都設置了,反正我是沒用過分庫,你可以在百度查查。
ReallyWangGod
如果是用MySQL做DB,可以用ENGINE=MRG_MyISAM 實現(xiàn)水平分表,原理和實例,自行Google一下。
核心點:
1、合并表(負責查詢,不存數(shù)據(jù),ENGINE=MRG_MyISAM)、子表(負責增/刪/改,ENGINE=MyISAM)
2、除引擎類型外,表結構需要完全一致
3、子表的主鍵必須全局唯一,利用合并表的查詢結果,主鍵不能出現(xiàn)重復的。比如:通過php自帶uniqid函數(shù),封裝一個方法是個選擇
拿posts表舉例,兩個字段:id,title
合并表: posts
子表按季度分:
posts_201501
posts_201502
posts_201503
posts_201504
...
插入數(shù)據(jù)的時候,判斷當前時間決定插入哪張表,比如現(xiàn)在,則插入post_201501表
取數(shù)據(jù)的時候,和Eloquent平常用法一致,省了很多分表帶來的處理邏輯代碼
其他
1、migrations里面,自己寫個合并表和子表的構造程序即可
2、這種水平分表,對原代碼的改動比較小,不用處理復雜的跨表查詢邏輯,所以覺得還挺方便的
3、MyISAM不支持事務,但查詢方面強于InnoDB,這種做法比較適合分拆查詢業(yè)務,數(shù)據(jù)過大的表
4、沒在實踐項目中用過,僅參考,Have fun~
手機用戶曾小亂 提問者
舉報
Laravel框架基礎視頻教程,輕松入門,了解Laravel的優(yōu)勢
1 回答laravel數(shù)據(jù)庫
3 回答$students as $student 分別代表什么
6 回答LARAVEL
2 回答laravel
3 回答laravel視頻教程怎么下載啊
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2016-11-22
分庫干啥?
一般一個項目就連接一個數(shù)據(jù)庫啊,一個庫里放上百十張表都沒問題的?在config都設置了,反正我是沒用過分庫,你可以在百度查查。
2016-11-19
如果是用MySQL做DB,可以用ENGINE=MRG_MyISAM 實現(xiàn)水平分表,原理和實例,自行Google一下。
核心點:
1、合并表(負責查詢,不存數(shù)據(jù),ENGINE=MRG_MyISAM)、子表(負責增/刪/改,ENGINE=MyISAM)
2、除引擎類型外,表結構需要完全一致
3、子表的主鍵必須全局唯一,利用合并表的查詢結果,主鍵不能出現(xiàn)重復的。比如:通過php自帶uniqid函數(shù),封裝一個方法是個選擇
拿posts表舉例,兩個字段:id,title
合并表: posts
子表按季度分:
posts_201501
posts_201502
posts_201503
posts_201504
...
插入數(shù)據(jù)的時候,判斷當前時間決定插入哪張表,比如現(xiàn)在,則插入post_201501表
取數(shù)據(jù)的時候,和Eloquent平常用法一致,省了很多分表帶來的處理邏輯代碼
其他
1、migrations里面,自己寫個合并表和子表的構造程序即可
2、這種水平分表,對原代碼的改動比較小,不用處理復雜的跨表查詢邏輯,所以覺得還挺方便的
3、MyISAM不支持事務,但查詢方面強于InnoDB,這種做法比較適合分拆查詢業(yè)務,數(shù)據(jù)過大的表
4、沒在實踐項目中用過,僅參考,Have fun~