• mysql 垂直分表技术的实战演练,有实战代码。


    垂直分表技术

    垂直分割指的是:表的记录并不多,但是字段却很长,表占用空间很大,检索表的时候需要执行大量的IO,严重降低了性能。这时需要把大的字段拆分到另一个表,并且该表与原表是一对一的关系。

    1,垂直分表技术首先要注意的是数据库的设计,把一些字段较大的数据存在另外一张表。比如:文章内容。这两张表的id是一一对应的,另外他们的表名前部分是相同的,后面这一张表的结尾连一个‘_data’。方便后面的数据操作。

     2,数据表设计完成以后就是数据的存储了,这里在注意的是两张表的id是一一对应的。废话不多说,直接撸代码:

     1 /*
     2 本实例是使用phpcms,不熟悉这个框架的朋友也没关系,可能实例化模型是用phpcms方式,其他的都是原生php知识
     3 */
     4 
     5 /*数据的存储*/
     6 $this->case = pc_base::load_model('case_model');//实例化case模型;如thinkphp5:$case=new Case();
     7 $info=array();//用于存储普通数据
     8 $content=array();//用于存储大数据
     9 $info['name']=$_POST['name'];
    10 $info['phone']=$_POST['phone'];
    11 $info['email']=$_POST['email'];
    12 
    13 $id=$this->case->insert($info);//把小字段的数据存进主表当中,并且返回id;
    14 
    15 $this->case->table_name=$this->case->table_name.'_data';//把数据表设置为附表,去附表查询相关内容;
    16 $content['content']=$_POST['content'];
    17 $content['id']=$id;
    18 $this->case->insert($id,$content);

    3,数据的读取,数据的读取关键是利用 array_merger() 方法将两个数据合并

    定义和用法
    array_merge() 函数把一个或多个数组合并为一个数组。
    提示:您可以向函数输入一个或者多个数组。
    注释:如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。
    注释:如果您仅向 array_merge() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。

    1 /*数据的读取*/
    2 $userid=$_GET['userid'];//获取文章id
    3 $data=$this->case->get_one(array('id'=>$id));//取数据;如think5: Case::get(['id'=>$id]);
    4 $this->case->table_name=$this->case->table_name.'_data';//把数据表设置为附表,去附表查询相关内容;
    5 $datas=$this->case->get_one(array('id'=>$id));//查询到附表的字段;一般为大字段。content之类的。
    6 $data=array_merge($data,$datas);//将两个数据合并,就得到了最终想要的数据了
  • 相关阅读:
    1.解决有冲突的分支,切换分支时,文件不在了 2.冲突解决到底???
    Github到了一个工作区里面。嵌套了
    【计蒜课】【数据结构】【栈的复习】
    【计蒜课】【数据结构】【队列的复习】
    【计蒜课】【数据结构】【邻接矩阵使用的复习】
    【计蒜课】【数据结构】【链表的创建、插入、遍历操作的复习】
    【计蒜课】【数据结构】【顺序表查找、删除、遍历操作的复习答案】
    【计蒜课】【数据结构】【顺序表的构造、插入、扩容操作习题】
    实验六
    6.6实验五
  • 原文地址:https://www.cnblogs.com/bossaiguo/p/8494531.html
Copyright © 2020-2023  润新知