`

mysql数据库分库

阅读更多

总结下最近做项目的心得体会吧,和大家分享下: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实现及大数据量的排名算法

 

 

 

  • 大小: 3.6 KB
  • 大小: 53.5 KB
分享到:
评论

相关推荐

    MyBatis实现Mysql数据库分库分表操作和总结(推荐)

    MyBatis实现Mysql数据库分库分表操作和总结 MyBatis是一款流行的持久层框架,能够与Mysql数据库进行交互。在大规模的应用系统中,数据库的性能和可扩展性变得非常重要。为了解决这个问题,需要实现数据库的分库分表...

    mysql 数据库分库分表技术,主从复制技术-mysql_learn_demo.zip

    MySQL数据库在处理大规模数据时,性能可能会成为瓶颈。为了解决这一问题,通常会采用分库分表和主从复制等技术。以下是对这些技术的详细解析。 **一、分库分表** 1. **分库分表的概念** 分库分表是将一个大型的...

    mysql高可用分库分表.pdf

    为了提升MySQL数据库的性能和可用性,常采用的策略是数据库分库分表,其中可以分为垂直分库、垂直分表、水平分库、水平分表等方法。 垂直分表是针对数据库表中的列进行拆分,将一张大表拆成若干个结构更小的表,以...

    mysql数据库分库分表实践

    在应对大数据量带来的挑战时,"mysql数据库分库分表实践"成为了许多企业解决数据库性能瓶颈的关键策略。本文将深入探讨这一主题,分析背景、调研的技术特性,并介绍相关的架构设计改造。 一、背景 随着零售行业的...

    Mysql数据库分库和分表方式(常用)

    MySQL数据库在面临大数据量时,为了提升性能和可扩展性,通常会采用分库和分表的策略。本文将详细探讨这两种方法。 1. **分库** 分库是指将一个大型数据库分解为多个较小的数据库,每个数据库专注于特定的功能或...

    MySQL数据库命令大全

    ### MySQL数据库命令详解 #### 一、MySQL服务的管理 MySQL作为一款广泛使用的开源关系型数据库管理系统,其服务的启动和停止是基本的管理操作。 **启动MySQL服务** 使用`net start mysql`命令可以启动MySQL服务...

    Mysql分表分库-core-dbshard2.zip

    "Mysql分表分库-core-dbshard2.zip" 文件可能包含了一个名为 "core-dbshard2-master" 的项目,这个项目很可能是关于MySQL数据库分库分表的实现方案或工具。 分库分表是一种水平扩展(Scaling Out)的方式,当单个...

    MySQL数据库项目式教程完整版课件全书电子讲义教材课件(完整).pptx

    MySQL数据库项目式教程完整版课件全书电子讲义教材课件(完整) 以下是从给定的文件信息中生成的知识点: 数据库概述 * 信息(Information):是现实世界事物的存在方式或运动状态的反映,它通过多种形式展现,如...

    MySQL数据库之分库分表方案_ITPUB博客.mhtml

    MySQL数据库之分库分表方案_ITPUB博客.mhtml MySQL数据库之分库分表方案_ITPUB博客.mhtml MySQL数据库之分库分表方案_ITPUB博客.mhtml

    实验2 MySQL数据库对象管理.pdf

    MySQL数据库对象管理实验知识点: 一、MySQL数据字典的作用与操作 数据字典是数据库系统中关于数据库的描述信息,它可以看作数据库中所有对象的元数据存储。在MySQL中,INFORMATION_SCHEMA数据库提供了访问数据库...

    Python+MySQL分表分库实战

    Python作为一种流行的编程语言,与MySQL数据库结合使用,可以方便地实现分库分表的各种操作和自动化处理。 本实战教程将通过一系列知识点的介绍,讲解如何使用Python配合MySQL来实现分库分表的实战操作。首先,我们...

    数据库分库分表的几种方式.wmv

    mysql数据库分库分表的几种方式,数据库优化的一部分...

    基于jdbcDriver的MySQL分库分表实现-OShard.zip

    本项目"基于jdbcDriver的MySQL分库分表实现-OShard.zip"提供了使用Java JDBC驱动来实现MySQL数据库分库分表的示例。下面将详细阐述相关知识点。 1. **MySQL数据库**:MySQL是一款开源、免费的关系型数据库管理系统...

    ShardingJDBC分库分表mysql数据库实战小滴新版

    课程首先介绍了分库分表的背景,包括 MySQL 数据库架构演变历史以及业务增长下数据库性能优化思路。接着深入探讨了分库分表的各种方式,如垂直分表、垂直分库、水平分表和水平分库,并对其进行了总结。还讲解了 ...

    MySQL数据库设计、优化.pptx

    - 分库分表策略:基于用户ID进行取模,灵活分配到不同的库表中。 5. **字段规范**: - 时间记录:优先选用timestamp而非其他时间类型。 - IP地址:使用4字节的int unsigned存储,配合内置函数进行转换。 - ...

    MySQL数据库优化之分表分库操作实例详解

    总之,MySQL数据库的分表分库优化是应对高并发、大数据量场景的有效手段。通过对数据的合理拆分,可以显著提升系统的响应速度和可扩展性。在实施分表分库时,需根据业务需求和现有架构进行综合考虑,确保既能优化...

    Mycat数据库中间件部署数据库分库操作

    Mycat 数据库中间件部署数据库分库操作 Mycat 数据库中间件部署数据库分库操作是指在 Mycat 数据库中间件中实现数据库的分库操作。Mycat 是一个基于 Java 的数据库中间件,可以将多个 MySQL 数据库实例整合成一个...

    php+mysql数据库无限分类库

    在这个场景中,我们关注的是使用PHP与MySQL数据库结合实现无限分类库。PHP是一种广泛使用的服务器端脚本语言,尤其适合Web开发,而MySQL则是一款功能强大的关系型数据库管理系统,两者搭配可以创建高效、可扩展的Web...

    82分tencent的Mysql云数据库产品认证答案

    腾讯云MySQL云数据库产品认证答案 本资源摘要信息涵盖了腾讯云 MySQL 云数据库产品认证的所有知识点,涵盖了云数据库 MySQL 产品认证、DTS 数据迁移、SQL 优化、公有云 MySQL 初始化、高可用性和容灾等方面的知识点...

Global site tag (gtag.js) - Google Analytics