thinkphp5中数据库水平分表与增删改查

thinkphp是国内非常流行的一个PHP语言开发框架,但是在项目开发中随着数据量的不断增大,数据库已经成为影响平台发展的瓶颈问题之一,所以本文波波将简单分享thinkphp5下数据库的水平分表,以及分表后对数据的增删改查。以提升整体性能。

一、数据库分表:

1、我们首先创建数据表system_history。

CREATE TABLE `system_history` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `member_id` int(10) NOT NULL DEFAULT '0',
  `history` int(10) DEFAULT NULL,
  `sex` smallint(1) DEFAULT NULL,
  `age` smallint(3) DEFAULT NULL,
  `type` smallint(1) DEFAULT NULL,
  `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_deleted` smallint(1) DEFAULT '0' COMMENT '1已删0正常',
  PRIMARY KEY (`id`,`member_id`),
  KEY `member_id` (`member_id`),
  KEY `age` (`age`),
  KEY `sex` (`sex`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!50100 PARTITION BY LINEAR KEY (member_id)
PARTITIONS 4 */

2、手动添加数据表system_history_1,system_history_2,system_history_3,system_history_4字段与数据类型与system_history保持一致。
二、数据库增删改查:

1、插入数据。

$rule = array('type' => 'LINEAR KEY','num' =>4);
$temparr = array('member_id'=>$uid);
$time = time();
Db::name("SystemHistory")->partition($temparr,'member_id',$rule)
    ->insert(array('member_id'=>$uid,'history'=>$view_id,'type'=>$type,'datetime'=>date("Y-m-d  H:i:s",$time)));

2、查询数据。

$rule = array('type' => 'LINEAR KEY','num' =>4);
$temparr = array('member_id'=>$uid);
$time = time();
$arr = Db::name("SystemHistory")->partition($temparr,"member_id",$rule)
    ->where(array('member_id'=>$uid,'history'=>$view_id,'type'=>$type))
    ->whereTime('datetime','today')->find();

3、修改数据。

$rule = array('type' => 'LINEAR KEY','num' =>4);
$temparr = array('member_id'=>$uid);
$time = time();
Db::name("SystemHistory")->partition($temparr,'member_id',$rule)
        ->where(array('member_id'=>$uid,'history'=>$view_id,'type'=>$type))
    ->whereTime('datetime','today')->update(array('datetime'=>date("Y-m-d  H:i:s",$time),'is_deleted'=>0));

4、删除数据。

删除数据与查询数据雷同,方法修改为delete()即可。

关于数据库水平分表,其实不止这一种方法。但是不管用哪种方法,其用法都是大同小异,故本文内容仅用于参考。不作为实际项目开发中的应用。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值