tp5mysql分表_TP5.1分表,partition分表实例,根据自增主键水平分表

tp5mysql分表_TP5.1分表,partition分表实例,根据⾃增主键
⽔平分表
新兴县实验小学
thinkphp是国内⾮常流⾏的⼀个PHP语⾔开发框架,但是在项⽬开发中随着数据量的不断增⼤,数据库已经成为影响平台发展的瓶颈问题之⼀,所以本⽂将简单分享thinkphp5下数据库的⽔平分表,以及分表后对数据的增删改查。以提升整体性能。
1,这⾥采⽤的是mysql单独建⼀张“tb_article”表来获取⾃增ID
辽宁省新闻出版学校输电线路覆冰CREATE TABLE`tb_article` (
`id`bigint(20) unsigned NOT NULLAUTO_INCREMENT,
`stub`char(1) COLLATE utf8_bin NOT NULL DEFAULT '',PRIMARY KEY(`id`),UNIQUE KEY`stub` (`stub`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
2,分表设置$rule分了3个表,建表tb_article_1,tb_article_2,tb_article_3,⾥⾯字段要⼀致,⽤来存放内容
CREATE TABLE`tb_article_1` (
`id`INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '⽂章id',
`user_id` INT(11) NOT NULL COMMENT '作者id',
`add_time`INT(10) DEFAULT NULL COMMENT '时间',
2019理论韩国理论中文`typeid`INT(1) DEFAULT NULL COMMENT '⽂章栏⽬ 1财经 2娱乐 3体育',
`title`varchar(155) NOT NULL COMMENT '⽂章标题',
`content`text NOT NULL COMMENT '⽂章内容',PRIMARY KEY(`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='⽂章表1';
3,新建模型
namespace app\index\model;usethink\Model;class Article extendsModel
{protected $table = 'tb_article';private functiongetRule(){return['type' => 'mod', //分表⽅式
'num' => 3 //分表数量
];
}
//获取插⼊ID,根据ID来取模分表public functiongetLastId(){$data['stub']='a';return $this->insertGetId($data, true);
}public function saveData($data, $id){return $this->partition(['id' => $id], "id", $this->getRule())->insert($data);
}public function getArticleById($where, $field = "*", $id){return $this->partition(['id' => $id], "id", $this->getRule())-
>where($where)->field($field)->select();
}
ogc
}
4,新建控制器
namespace app\index\controller;
use think\Controller;useapp\index\model\Article as ArticleModel;classArticle extends Controller
{//分表测试
public functionarticleAdd(){$Article = newArticleModel();$id = $Article->getLastId();$data =['id' => $id,
'user_id' => 10,
'add_time' => time(),
'typeid' => 3,
'title' => '这⾥是新闻标题','content' => '这⾥是新闻内容',];if($Article->saveData($data,$id)){
$this->success('⽂章添加成功!');
}
}public functiongetArticle(){$id = input('id');if($id){$Article = newArticleModel();$news = $Article-
>getArticleById(['id'=>$id],'*',$id);return json($news);
}
}}
应付账款管理ThinkPHP5内置了partition⽅法,可⽤于实现简单的分表。新增,修改,删除,查询单条数据时,⽤partition⽅法都可以轻松搞定,因为这些操作有⼀个共同的特点,就是能事先明确的知道,我要操作的是哪⼀条记录。但有⼀个需求,ThinkPHP5似乎没有解决,⽐如当⼀个⼤表,被拆分成若⼲个⼦表时,如何根据相关条件及排序获取分页数据。这种需求场景下,由于事先并不知道哪些数据会出现在第⼀页,哪些数据会出现在第⼆页,这些根据检索条件动态匹配的列表数据,该如何查询呢?

本文发布于:2024-09-22 00:54:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/153046.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:分表   数据   条件   娱乐
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议