冷数据是什么意思,mysql数据库分库分表方案
小编:bj03
冷数据是什么意思
冷数据特指活动不频繁、不会被经常访问甚至永远不会被访问,但仍然需要长期保留的数据。根据被访问的频度不同,数据可以被分为“热数据、温数据、冷数据三种类型。数据集合中通常有高达80%的部分属于不常被访问的冷数据。然而,冷数据并非失去价值,大数据、人工智能等新兴业务对海量冷数据进行检索和挖掘的需求依然存在而且日益迫切。
mysql数据库分库分表方案
分表是分散数据库压力的好方法。
分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库。
当然,首先要知道什么情况下,才需要分表。个人觉得单表记录条数达到百万到千万级别时就要使用分表了。
分表的分类
**1、纵向分表**
将本来可以在同一个表的内容,人为划分为多个表。(所谓的本来,是指按照关系型数据库的第三范式要求,是应该在同一个表的。)
分表理由:根据数据的活跃度进行分离,(因为不同活跃的数据,处理方式是不同的)
案例:
对于一个博客系统,文章标题,作者,分类,创建时间等,是变化频率慢,查询次数多,而且最好有很好的实时性的数据,我们把它叫做冷数据。而博客的浏览量,回复数等,类似的统计信息,或者别的变化频率比较高的数据,我们把它叫做活跃数据。所以,在进行数据库结构设计的时候,就应该考虑分表,首先是纵向分表的处理。
这样纵向分表后:
首先存储引擎的使用不同,冷数据使用MyIsam 可以有更好的查询数据。活跃数据,可以使用Innodb ,可以有更好的更新速度。
其次,对冷数据进行更多的从库配置,因为更多的操作时查询,这样来加快查询速度。对热数据,可以相对有更多的主库的横向分表处理。
其实,对于一些特殊的活跃数据,也可以考虑使用memcache ,redis之类的缓存,等累计到一定量再去更新数据库。或者mongodb 一类的nosql 数据库,这里只是举例,就先不说这个。
**2、横向分表**
字面意思,就可以看出来,是把大的表结构,横向切割为同样结构的不同表,如,用户信息表,user_1,user_2等。表结构是完全一样,但是,根据某些特定的规则来划分的表,如根据用户ID来取模划分。
分表理由:根据数据量的规模来划分,保证单表的容量不会太大,从而来保证单表的查询等处理能力。
案例:同上面的例子,博客系统。当博客的量达到很大时候,就应该采取横向分割来降低每个单表的压力,来提升性能。例如博客的冷数据表,假如分为100个表,当同时有100万个用户在浏览时,如果是单表的话,会进行100万次请求,而现在分表后,就可能是每个表进行1万个数据的请求(因为,不可能绝对的平均,只是假设),这样压力就降低了很多很多。
延伸:为什么要分表和分区?
日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。
什么是分表?
分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些子表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。
什么是分区?
分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据。
**MySQL分表和分区有什么联系呢?**
1、都能提高mysql的性高,在高并发状态下都有一个良好的表现。
2、分表和分区不矛盾,可以相互配合的,对于那些大访问量,并且表数据比较多的表,我们可以采取分表和分区结合的方式(如果merge这种分表方式,不能和分区配合的话,可以用其他的分表试),访问量不大,但是表数据很多的表,我们可以采取分区的方式等。
3、分表技术是比较麻烦的,需要手动去创建子表,app服务端读写时候需要计算子表名。采用merge好一些,但也要创建子表和配置子表间的union关系。
4、表分区相对于分表,操作方便,不需要创建子表。
我们知道对于大型的互联网应用,数据库单表的数据量可能达到千万甚至上亿级别,同时面临这高并发的压力。Master-Slave结构只能对数据库的读能力进行扩展,写操作还是集中在Master中,Master并不能无限制的挂接Slave库,如果需要对数据库的吞吐能力进行进一步的扩展,可以考虑采用分库分表的策略。
**1、分表**
在分表之前,首先要选中合适的分表策略(以哪个字典为分表字段,需要将数据分为多少张表),使数据能够均衡的分布在多张表中,并且不影响正常的查询。在企业级应用中,往往使用org_id(组织主键)做为分表字段,在互联网应用中往往是userid。在确定分表策略后,当数据进行存储及查询时,需要确定到哪张表里去查找数据,
数据存放的数据表 = 分表字段的内容 % 分表数量
**2、分库**
分表能够解决单表数据量过大带来的查询效率下降的问题,但是不能给数据库的并发访问带来质的提升,面对高并发的写访问,当Master无法承担高并发的写入请求时,不管如何扩展Slave服务器,都没有意义了。我们通过对数据库进行拆分,来提高数据库的写入能力,即所谓的分库。分库采用对关键字取模的方式,对数据库进行路由。
数据存放的数据库=分库字段的内容%数据库的数量
**3、即分表又分库**
数据库分表可以解决单表海量数据的查询性能问题,分库可以解决单台数据库的并发访问压力问题。
当数据库同时面临海量数据存储和高并发访问的时候,需要同时采取分表和分库策略。一般分表分库策略如下:
中间变量 = 关键字%(数据库数量*单库数据表数量)
库 = 取整(中间变量/单库数据表数量)
表 = (中间变量%单库数据表数量)
实例:
1、分库分表
很明显,一个主表(也就是很重要的表,例如用户表)无限制的增长势必严重影响性能,分库与分表是一个很不错的解决途径,也就是性能优化途径,现在的案例是我们有一个1000多万条记录的用户表members,查询起来非常之慢,同事的做法是将其散列到100个表中,分别从members0到members99,然后根据mid分发记录到这些表中,牛逼的代码大概是这样子:
复制代码 代码如下:
<?php
for($i=0;$i<100; $i++ ){
//echo "CREATE TABLE db2.members{$i} LIKE db1.members
";
echo "INSERT INTO members{$i} SELECT * FROM members WHERE mid%100={$i}
";
}
?>
2、不停机修改mysql表结构
同样还是members表,前期设计的表结构不尽合理,随着数据库不断运行,其冗余数据也是增长巨大,同事使用了下面的方法来处理:
先创建一个临时表:
/*创建临时表*/
CREATE TABLE members_tmp LIKE members
然后修改members_tmp的表结构为新结构,接着使用上面那个for循环来导出数据,因为1000万的数据一次性导出是不对的,mid是主键,一个区间一个区间的导,基本是一次导出5万条吧,这里略去了
接着重命名将新表替换上去:
/*这是个颇为经典的语句哈*/
RENAME TABLE members TO members_bak,members_tmp TO members;
就是这样,基本可以做到无损失,无需停机更新表结构,但实际上RENAME期间表是被锁死的,所以选择在线少的时候操作是一个技巧。经过这个操作,使得原先8G多的表,一下子变成了2G多。
以上就是关于冷数据是什么意思,mysql数据库分库分表方案的全部内容,以及冷数据是什么意思的相关内容,希望能够帮到您。
本文链接:http://www.afey.cn/smjk/3009.html
版权声明:本文来自用户投稿,不代表本站立场,如有侵犯到您的权益,请联系我们,我们将及时处理,共同维护良好的网络创作环境。
相关文章
-
emr是什么意思,emr系统是什么系统
数码极客emr系统是什么系统 emr系统是计算机化的病案系统。emr系统是用电子设备保存、管理、传输和重现的数字化的病人的医疗记录,它的内容包括纸张病历的所有信息。该系统提供用户访...
-
52kbps网速能干嘛,mp4可以看快手吗
数码极客512kbps网速能干嘛 512kbps网速每秒钟可以传输512KB的数据,如浏览网页、QQ、观看视频、听歌等基本功能均可实现。网速512kbps指的数据传输的速度,bps表示每秒钟所能传送的字节...
-
表面粗糙度测量仪怎么校准,测深仪橡皮有划痕
数码极客测深仪橡皮有划痕有什么问题 测深仪橡皮有划痕是抛光前应对抛光剂鉴定,应更换不合格的抛光剂,或对其作沉淀、过滤等分选。测深仪是新一代全数字化、电脑化产品,具有防尘、防水...
-
realmex7pro至尊版最高亮度
数码极客realmex7pro至尊版最高亮度 realmex7pro至尊版最高亮度1200nit。真我X7 Pro至尊版本次最大的亮点就是采用了一块6.55英寸三星AMOLED双曲面屏幕,单挖孔前置放在了屏幕左上角。...
-
联想lp6充电仓灯一直亮
数码极客联想lp6充电仓灯一直亮 联想lp6充电仓灯一直亮表示正在充电,提示用户电量正常可以正常使用,属于正常情况。迪士尼蓝牙耳机充电仓灯一直亮怎么关闭品牌型号:Redmibook Pro 15系...
-
手机店里的人叫你拍照片张嘴啥的啥意思
数码极客手机店里的人叫你拍照片张嘴啥的啥意思 手机店里的人叫你拍照片张嘴啥的是一种密码锁或者是一种真人验证,验证是否是本人,办理业务,一般会用到眨眼、张嘴、摇头等这种方式。是...
-
电信卡多久会自动注销,电信卡不用了多长时间
数码极客电信卡多久会自动注销 电信卡3个月会自动注销。手机欠费超过3-6个月未缴费。号码会在第3个月进入回收流程,不过仍可缴费取回使用权,如果超过6个月未交费号码则回收,并将相对应...
-
802.ax和802.ac区别
数码极客802.11ax和802.11ac区别 1、频率范围不同:802.11ac支持5GHz。802.11ax支持2.4Hz/5GHz。 2、最高阶编码方式不同:802.11ac支持256QAM。802.11ax支持1024QAM。 3、最大物理层速...
-
调试gpu过度绘制什么意思,调试cpu过度绘制是
数码极客调试gpu过度绘制什么意思 调试gpu过度绘制是指在一个像素点上绘制多次(超过一次)。如显示一个什么都没有做的activity界面算作画了1层,给activity加一个背景是第2层,在上面放了...
-
移动彩云业务是什么意思,中国移动彩印业务是
数码极客移动彩云业务是什么意思 移动彩云业务是中国移动旗下的个人云网盘,向所有用户提供安全、便捷、高效的个人网络硬盘应用服务。用户通过参与空间领取活动可以最多领取高达5T的...
-
cad绘图辅助工具提供这些的目的是什么
数码极客cad绘图辅助工具提供这些的目的是什么 cad绘图辅助工具提供这些的目的是为了让绘图的人能干活,更快捷的绘制cad图,这些绘图工具都很实用,且功能很强大。CAD是指使用CAD软件制作...
-
账单查询0086发几,怎么查电话账单明细
数码极客账单查询10086发几 账单查询10086发1031和1032。快捷查询当月账单可发短信1031至10086,上月账单可发送1032至10086,发短信免费。怎么查电话账单明细10086可以这样查账单明细:先...
-
电信国内定向流量是什么意思,中国电信定向流
数码极客电信国内定向流量是什么意思 中国电信定向流量是指仅在指定手机应用、内容使用的流量包。在使用指定的手机应用、内容时,只要不超过所订购的定向流量包时,所使用的流量不会从...
-
注册steam账号一直显示错误
数码极客注册steam账号一直显示错误 输入captcha时验证码输入有误,导致无法进入。或所处的环境异常,建议用专业软件检测电脑环境再进行注册。因为Steam商店在账号注册流程中加入了Goog...
-
空调IDM什么意思,空调遥控器idm是什么意思
数码极客空调遥控器idm是什么意思 空调遥控器idm意思是定频模式和变频模式的选择开关,变频空调在遥控器上有一个双模切换(IDM)键,当变频空调在开机时,空调自动默认为“变频模式”,用手动按...