laravel怎么分表分库?

来源:4-1 新建数据表与连接数据库

手机用户曾小乱

2016-11-18 10:21

laravel怎么分表分库?

写回答 关注

2回答

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

    分库干啥?

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

    Really...

    当查询复杂,数据量巨大时,服务器硬件条件就会成为瓶颈,这时就需要分库

    2018-03-07 17:20:38

    共 1 条回复 >

  • 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~


    手机用户曾小...

    分库呢?

    2016-11-21 10:28:44

    共 1 条回复 >

轻松学会Laravel-基础篇

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

64171 学习 · 281 问题

查看课程

相似问题