博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 垂直分表技术的实战演练,有实战代码。
阅读量:5134 次
发布时间:2019-06-13

本文共 1446 字,大约阅读时间需要 4 分钟。

垂直分表技术

垂直分割指的是:表的记录并不多,但是字段却很长,表占用空间很大,检索表的时候需要执行大量的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'];//获取文章id3 $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);//将两个数据合并,就得到了最终想要的数据了

 

转载于:https://www.cnblogs.com/bossaiguo/p/8494531.html

你可能感兴趣的文章
js-格式化数字保留两位小数-带千分符
查看>>
【Java】forward & redirect 的差异
查看>>
Java学习笔记--字符串和文件IO
查看>>
【BZOJ1951】古代猪文(CRT,卢卡斯定理)
查看>>
poj 2823 线段树
查看>>
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>
SQL语法(3)
查看>>
在js在添版本号
查看>>
Maximum Gap
查看>>
sublime3
查看>>
[转]快速矩阵快速幂
查看>>
CMap的使用(转)
查看>>
Exception Type: IntegrityError 数据完整性错误
查看>>
《浪潮之巅》十八十九章笔记
查看>>
Power Strings
查看>>
[转载]Hash
查看>>
Nuget:Newtonsoft.Json
查看>>
你是这样理解shell编程的嘛?
查看>>
前端性能优化之重排和重绘
查看>>
Assets和Raw区别
查看>>