为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

2 回答

分库干啥?

一般一个项目就连接一个数据库啊,一个库里放上百十张表都没问题的?在config都设置了,反正我是没用过分库,你可以在百度查查。

0 回复 有任何疑惑可以回复我~
#1

ReallyWangGod

当查询复杂,数据量巨大时,服务器硬件条件就会成为瓶颈,这时就需要分库
2018-03-07 回复 有任何疑惑可以回复我~

如果是用MySQL做DB,可以用ENGINE=MRG_MyISAM 实现水平分表,原理和实例,自行Google一下。

核心点:

1、合并表(负责查询,不存数据,ENGINE=MRG_MyISAM)、子表(负责增/删/改,ENGINE=MyISAM)

2、除引擎类型外,表结构需要完全一致

3、子表的主键必须全局唯一,利用合并表的查询结果,主键不能出现重复的。比如:通过php自带uniqid函数,封装一个方法是个选择

拿posts表举例,两个字段:id,title

合并表: posts

子表按季度分:

posts_201501

posts_201502

posts_201503

posts_201504

...

插入数据的时候,判断当前时间决定插入哪张表,比如现在,则插入post_201501表

http://img1.sycdn.imooc.com//58300d1d000165f408460226.jpg

取数据的时候,和Eloquent平常用法一致,省了很多分表带来的处理逻辑代码

http://img1.sycdn.imooc.com//58300d3e0001cab010420192.jpg

其他

1、migrations里面,自己写个合并表和子表的构造程序即可

2、这种水平分表,对原代码的改动比较小,不用处理复杂的跨表查询逻辑,所以觉得还挺方便的

3、MyISAM不支持事务,但查询方面强于InnoDB,这种做法比较适合分拆查询业务,数据过大的表

4、没在实践项目中用过,仅参考,Have fun~


1 回复 有任何疑惑可以回复我~
#1

手机用户曾小乱 提问者

分库呢?
2016-11-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
轻松学会Laravel-基础篇
  • 参与学习       64170    人
  • 解答问题       281    个

Laravel框架基础视频教程,轻松入门,了解Laravel的优势

进入课程

laravel怎么分表分库?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信