问答详情
源自:4-1 新建数据表与连接数据库

laravel怎么分表分库?

laravel怎么分表分库?

提问者:手机用户曾小乱 2016-11-18 10:21

个回答

  • qq_二分醒2amor_0
    2016-11-22 16:41:01

    分库干啥?

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

  • qq_二分醒2amor_0
    2016-11-19 16:30:09

    如果是用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://img.mukewang.com/58300d1d000165f408460226.jpg

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

    http://img.mukewang.com/58300d3e0001cab010420192.jpg

    其他

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

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

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

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