webman mysql数据表数据超过1000W了 怎么实现分表喃?
laravel的分表 和tp的分表
public function getTableName(){ $date=date("Ym",time()); $table = $this->name . $date; $real_table = 'web_' . $this->name . $date; $result = DB::query("SHOW TABLES LIKE "."'".$real_table."'"); if($result){ return $table; }else{ $sql = "CREATE TABLE ". $real_table ." ( id int(10) unsigned NOT NULL AUTO_INCREMENT, member_id int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'memberID', wechat_id int(10) unsigned NOT NULL DEFAULT '0' COMMENT '微信表ID', project_id int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'projeceId', device_id int(10) unsigned NOT NULL DEFAULT '0' COMMENT '门禁id', create_time int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间', PRIMARY KEY (id), KEY project_id (project_id), KEY member_id (member_id), KEY device_id (device_id), KEY wechat_id (wechat_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='记录表'"; $res=$this->execute($sql); return $table; } }
id
member_id
wechat_id
project_id
device_id
create_time
非常感谢
1000w就分表? 我们单表5000w,照样跑
是一天增加1000W
一天一千万,分表恐怕也不好使,按月分,一月也得三亿条
感觉应该根据业务,进行老数据存档或针对这类表选用其他非关系性数据库
一天1000W条?还用mysql?没有DBA?呵呵
啥业务啊,一天1000W
一天1000w还用啥mysql啊
是什么业务场景啊 我也有一个人脸打卡的模块 数据量每天产生的打卡记录也多 目前根据项目id1-10分一张表
老哥,最后怎么解决的了?说下解决办法吧
自动分表就可以呀
数据库容量弄大一点 比如500G 够用10年了
这种数据应该用mongo或者列存储
分表爽一时,后期维护才是麻烦事
use support\Db; use support\Model; class DemoModel extends Model { protected $table="demo"; public function __construct(array $attributes = []) { $data_table = $this->getTable(); $this->table = $data_table.date('Ym'); $result = Db::schema()->hasTable($this->table); if (empty($result)) { Db::update('create table ' . $this->table . ' like ' . $data_table); } parent::__construct($attributes); } }
谢谢
laravel的分表 和tp的分表
public function getTableName(){
$date=date("Ym",time());
$table = $this->name . $date;
$real_table = 'web_' . $this->name . $date;
$result = DB::query("SHOW TABLES LIKE "."'".$real_table."'");
if($result){
return $table;
}else{
$sql = "CREATE TABLE ". $real_table ." (
id
int(10) unsigned NOT NULL AUTO_INCREMENT,member_id
int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'memberID',wechat_id
int(10) unsigned NOT NULL DEFAULT '0' COMMENT '微信表ID',project_id
int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'projeceId',device_id
int(10) unsigned NOT NULL DEFAULT '0' COMMENT '门禁id',create_time
int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',PRIMARY KEY (
id
),KEY
project_id
(project_id
),KEY
member_id
(member_id
),KEY
device_id
(device_id
),KEY
wechat_id
(wechat_id
)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='记录表'";
$res=$this->execute($sql);
return $table;
}
}
非常感谢
1000w就分表?
我们单表5000w,照样跑
是一天增加1000W
一天一千万,分表恐怕也不好使,按月分,一月也得三亿条
感觉应该根据业务,进行老数据存档或针对这类表选用其他非关系性数据库
一天1000W条?还用mysql?没有DBA?呵呵
啥业务啊,一天1000W
一天1000w还用啥mysql啊
是什么业务场景啊 我也有一个人脸打卡的模块 数据量每天产生的打卡记录也多 目前根据项目id1-10分一张表
老哥,最后怎么解决的了?说下解决办法吧
自动分表就可以呀
数据库容量弄大一点 比如500G 够用10年了
这种数据应该用mongo或者列存储
分表爽一时,后期维护才是麻烦事
谢谢