总结下最近做项目的心得体会吧,和大家分享下:mysql数据库的分库
我们先看下数据库的分库结构:
分库大概有7,8个库(按区域分库)
config对应分库的配置(黄浦区DB_CONFIG1;浦东新区DB_CONFIG2...),黄浦区的区id是1,浦东新区的区id是2:
//model层读取分库:
class XxxModel {
/*
* 新db
*/
private function iDb($region) { // 区县id( 区县id拼接成config)
return M()->db($region, "DB_CONFIG".$region); // db函数在下面model类文件中有定义
}
/*
* 获取日志
* @param $region #区域ID
* @param $uid #用户ID
* @param $coursewareid #类课程ID
* return false|array
*/
public function getRecordByXx($region, $uid, $coursewareid) {
return $this->iDb($region)->table('xxxx_xxxx_record')->where(array("uid" => $uid, "over_time" => 0, "courseid" => $courseid))->find();
}
}
// thinkphp框架DB类库(框架自带,无需修改)
class Model {
// 当前数据库操作对象
protected $db = null;
....
/**
* 切换当前的数据库连接
* @access public
* @param integer $linkNum 连接序号
* @param mixed $config 数据库连接信息
* @param array $params 模型参数
* @return Model
*/
public function db($linkNum,$config='',$params=array()){
static $_db = array();
if(!isset($_db[$linkNum])) {
// 创建一个新的实例
if(!empty($config) && false === strpos($config,'/')) { // 支持读取配置参数
$config = C($config);
}
$_db[$linkNum] = Db::getInstance($config);
}elseif(NULL === $config){
$_db[$linkNum]->close(); // 关闭数据库连接
unset($_db[$linkNum]);
return ;
}
if(!empty($params)) {
if(is_string($params)) parse_str($params,$params);
foreach ($params as $name=>$value){
$this->setProperty($name,$value);
}
}
// 切换数据库连接
$this->db = $_db[$linkNum];
return $this;
}
}
// 构架思路:
第一:数据库分库按一定的规则分成多个数据库;
第二:在配置文件config里定个多个连接数据库配置的(如上图,对应数据库名字);
第三:model层读取等操作表的时候传入该用户的区县id来定位读取哪个数据库;
第四:在总库里建立表记录所有区县所有用户的的uid,区县id等需要跟分库里表关联的字段;
备注:这里只是提供大概的思路,具体业务流程可变更。。
预报下次要给大家分享的:php实现及大数据量的排名算法
相关推荐
mysql 数据库分库分表技术,主从复制技术-mysql_learn_demo
本文主要给大家介绍Mysql数据库分库和分表方式(常用),涉及到mysql数据库相关知识,对mysql数据库分库分表相关知识感兴趣的朋友一起学习吧
主要介绍了MyBatis实现Mysql数据库分库分表操作和总结,需要的朋友可以参考下
mysql分库分表,详细介绍了垂直分表、水平分表、垂直分库、水平分库,包括它们的优缺点,解决的问题,有具体案例
MySQL数据库之分库分表方案_ITPUB博客.mhtml MySQL数据库之分库分表方案_ITPUB博客.mhtml MySQL数据库之分库分表方案_ITPUB博客.mhtml
一、背景 随着零售门店数量的增长,库存表,优惠劵表,消息表,订单表数据量不断的增多,目前一主(写)多从的MySQL 架构难于支撑公司业务的爆发式增长 二、调研 前期在于重点解决 MySQL 的单机...目前生产数据库架构
mysql数据库分库分表的几种方式,数据库优化的一部分...
主要介绍了MySQL数据库优化之分表分库操作,结合实例形式详细分析了mysql数据库分表分库垂直拆分、水平拆分相关原理以及应用案例,需要的朋友可以参考下
国家开放大学的课程:数据运维。在形考中的内容。实验2实验2 MySQL数据库对象管理。包括所有的相关操作。有屏幕截图,很清楚 。
MYSQL数据库优化秘籍,大牛出的,值得你反复研读 MySQL在Linux环境下的安装 文件引擎MyISAM与InnoDB比较 LOAD DATA INFILE/mysqldump DBA的分析命令 MySQL的系统配置参数、诊断操作系统的状态 MySQL的分库分表,分区...
Python+MySQL分表分库实战. 值得收藏与下载哦....!!!!!!!!!!!!
mysql数据库 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database ...
本文讲的是mysql大数据分库和分表 php解决方案。 mysql分库分表方案、mysql 分库方案、php实现mysql分库分表、mysql高并发解决方案。
mycat对mysql数据库进行分库分表demo-mycat-demo-parent
mysql, 面试题, 数据库, 数据管理, 数据库管理, 数据库设计, sql, 数据查询, 数据库优化, 数据库安全, 数据库备份, 数据库恢复, 数据库性能, 数据库索引, 数据库事务, 数据库存储引擎, 数据库连接池, 数据库分库分表...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 关键字: 水平切分,分库,分表,主从,集群 第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一...
本款php无限分类代码比较完整理包括了数据库是mysql的,有增加、删除、编辑、移动的功能。 附带了前台调用实例代码,方便小伙伴们下载使用。
中型:SQL-SERVER、MySQl 小型:access等 关系型数据库 memcached、mongodb、redis 非关系型数据库: 4、阵营的区别? 关系型数据库:安全(保存磁盘基本不可能丢失),容易理解,比较浪费空间(二维表) 非关系型...
4.城乡划分代码说明:mysql数据库,树结构存储。包括:编码;名称;全称;所属省,市,区县,街道;拼音首字母;城市类型(直辖市,省会);同级下排序;深度;城乡分类代码及经纬度。 5.四级地址:...
php无限分类代码比较完整理包括了数据库是mysql的,有增加、删除、编辑、移动的功能。