总结下最近做项目的心得体会吧,和大家分享下: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实现及大数据量的排名算法
相关推荐
MyBatis实现Mysql数据库分库分表操作和总结 MyBatis是一款流行的持久层框架,能够与Mysql数据库进行交互。在大规模的应用系统中,数据库的性能和可扩展性变得非常重要。为了解决这个问题,需要实现数据库的分库分表...
MySQL数据库在处理大规模数据时,性能可能会成为瓶颈。为了解决这一问题,通常会采用分库分表和主从复制等技术。以下是对这些技术的详细解析。 **一、分库分表** 1. **分库分表的概念** 分库分表是将一个大型的...
为了提升MySQL数据库的性能和可用性,常采用的策略是数据库分库分表,其中可以分为垂直分库、垂直分表、水平分库、水平分表等方法。 垂直分表是针对数据库表中的列进行拆分,将一张大表拆成若干个结构更小的表,以...
在应对大数据量带来的挑战时,"mysql数据库分库分表实践"成为了许多企业解决数据库性能瓶颈的关键策略。本文将深入探讨这一主题,分析背景、调研的技术特性,并介绍相关的架构设计改造。 一、背景 随着零售行业的...
MySQL数据库在面临大数据量时,为了提升性能和可扩展性,通常会采用分库和分表的策略。本文将详细探讨这两种方法。 1. **分库** 分库是指将一个大型数据库分解为多个较小的数据库,每个数据库专注于特定的功能或...
### MySQL数据库命令详解 #### 一、MySQL服务的管理 MySQL作为一款广泛使用的开源关系型数据库管理系统,其服务的启动和停止是基本的管理操作。 **启动MySQL服务** 使用`net start mysql`命令可以启动MySQL服务...
"Mysql分表分库-core-dbshard2.zip" 文件可能包含了一个名为 "core-dbshard2-master" 的项目,这个项目很可能是关于MySQL数据库分库分表的实现方案或工具。 分库分表是一种水平扩展(Scaling Out)的方式,当单个...
MySQL数据库项目式教程完整版课件全书电子讲义教材课件(完整) 以下是从给定的文件信息中生成的知识点: 数据库概述 * 信息(Information):是现实世界事物的存在方式或运动状态的反映,它通过多种形式展现,如...
MySQL数据库之分库分表方案_ITPUB博客.mhtml MySQL数据库之分库分表方案_ITPUB博客.mhtml MySQL数据库之分库分表方案_ITPUB博客.mhtml
MySQL数据库对象管理实验知识点: 一、MySQL数据字典的作用与操作 数据字典是数据库系统中关于数据库的描述信息,它可以看作数据库中所有对象的元数据存储。在MySQL中,INFORMATION_SCHEMA数据库提供了访问数据库...
Python作为一种流行的编程语言,与MySQL数据库结合使用,可以方便地实现分库分表的各种操作和自动化处理。 本实战教程将通过一系列知识点的介绍,讲解如何使用Python配合MySQL来实现分库分表的实战操作。首先,我们...
mysql数据库分库分表的几种方式,数据库优化的一部分...
本项目"基于jdbcDriver的MySQL分库分表实现-OShard.zip"提供了使用Java JDBC驱动来实现MySQL数据库分库分表的示例。下面将详细阐述相关知识点。 1. **MySQL数据库**:MySQL是一款开源、免费的关系型数据库管理系统...
根据提供的文件信息,我们可以推断出这份文档主要包含MySQL数据库相关的考试练习题目。MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),因其性能稳定、易于使用和成本低廉等特点,在互联网应用开发中非常...
课程首先介绍了分库分表的背景,包括 MySQL 数据库架构演变历史以及业务增长下数据库性能优化思路。接着深入探讨了分库分表的各种方式,如垂直分表、垂直分库、水平分表和水平分库,并对其进行了总结。还讲解了 ...
- 分库分表策略:基于用户ID进行取模,灵活分配到不同的库表中。 5. **字段规范**: - 时间记录:优先选用timestamp而非其他时间类型。 - IP地址:使用4字节的int unsigned存储,配合内置函数进行转换。 - ...
总之,MySQL数据库的分表分库优化是应对高并发、大数据量场景的有效手段。通过对数据的合理拆分,可以显著提升系统的响应速度和可扩展性。在实施分表分库时,需根据业务需求和现有架构进行综合考虑,确保既能优化...
Mycat 数据库中间件部署数据库分库操作 Mycat 数据库中间件部署数据库分库操作是指在 Mycat 数据库中间件中实现数据库的分库操作。Mycat 是一个基于 Java 的数据库中间件,可以将多个 MySQL 数据库实例整合成一个...
在这个场景中,我们关注的是使用PHP与MySQL数据库结合实现无限分类库。PHP是一种广泛使用的服务器端脚本语言,尤其适合Web开发,而MySQL则是一款功能强大的关系型数据库管理系统,两者搭配可以创建高效、可扩展的Web...