原文链接:https://blog.csdn.net/T_karine/article/details/112510352

一、数据库分区

1. 定义
-数据库分区是将数据量大的表的数据均摊到不同的硬盘、系统或不同服务器存储介质中(将数据从物理上分成若干个小表存储),实际上还是一张表。
-将表的数据均衡到不同的地方,为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。提升查询效率。2. 优点
1、相对于单个文件系统或是硬盘,分区可以存储更多的数据;
2、数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可;
3、精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率;
4、可跨多个分区磁盘查询,来提高查询的吞吐量;
5、在涉及聚合函数查询时,可以很容易进行数据的合并;3. 分类
3.1水平分区
-背景:数据量庞大
-介绍:对表的行进行分区,不同物理不同分组里面的物理分割数据集得以组合,从而进行个体分割或集体分割。所有在表中定义的列在每个数据中都能找到。所以表的特性依然得以保持。(每行数据的字段不减少)3.2垂直分区
-背景:每行数据字段多,但有些字段包含大text且不经常被访问,这些字段就需要被切割出去。
-介绍:对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个列都包含了其中的列所对应的行。4. 使用场景
* 一张表的查询速度已经慢到影响使用;
* SQL经过优化还是很慢;
* 数据量大;
* 表中的数据是分段的;
* 对数据的操作往往只涉及一部分,而不是所有的数据。

二、分表

1. 定义
就是把一张表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表明,然后操作它。2. 作用
* 减少查询时间
* 磁盘I/O性能提高(数据分布在不同的文件)
* 读写锁影响的数据量小
* 插入数据库需要建立索引的数据减少3. 使用场景
* 一张表的查询速度慢到影响使用时;
* SQL经过优化;
* 数据量大;
* 当插入数据或联合查询速度变慢时。4. 分区和分表的区别
* 目的都是减少数据库的负担,提高表的增删改查效率。
* 分区只是一张表中的数据的存储位置发生改变,分表是将一张表分成多张表。
* 当访问量大且表数据比较大时,两种方式可以互相配合使用。
* 当访问量不大,但表数据比较多时,可以只进行分区。5. 常见分区分表的规则策略
* Range(区域、距离等)
* Hash
* 按照时间拆分
* Hash之后按照分表个数取模

三、分库
​——一旦分表,一个库中的表就会越来越多。


1. 目的
为突破单节点数据库服务器的I/O能力限制,解决数据库扩展性问题。2. 水平拆分
-将一张表分成多张表并存放在不同的数据库中。
-问题:1.影响主键自增;2.单表查询会变成多表(如count函数操作)3. 垂直拆分
-将系统中不存在关联关系或需要join的表可以放在不同数据库不同的服务器中。
-问题:1.ACID被打破;2.Join操作困难;3.外键约束受到影响。4. 应用背景
* 单台DB的存储空间不够
* 随着查询量的增加,单台数据库服务器已经没法支撑
垂直分库-->水平分库-->读写分离

总结:优先考虑分区,当分区不能满足需求时,开始考虑分表,合理的分表对效率的提升会优于分区。

数据库分区、分表、分库相关推荐

  1. 数据库中间件(分表分库路由)

    分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm. 根据一定的规则把数据文件(MYD)和索引文件(MYI)进行了分割,分区后的表 ...

  2. mysql 分区 分表 分库分表

    分区 把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上 mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.ini中的d ...

  3. 由mysql分区想到的分表分库的方案

    在分区分库分表前一定要了解分区分库分表的动机. 对实时性要求比较高的场景,使用数据库的分区分表分库. 对实时性要求不高的场景,可以考虑使用索引库(es/solr)或者大数据hadoop平台来解决(如数 ...

  4. 冷热分离和直接使用大数据库_用读写分离与分表分库解决高访问量和大数据量...

    原标题:用读写分离与分表分库解决高访问量和大数据量 一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量.连接数.处理能力都有限.当单表的数据量达到1000W或100G以后,由于查询维度 ...

  5. 学会数据库读写分离、分表分库

    https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优 ...

  6. 如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语

    如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语句的形式 ...

  7. 超大数据量存储常用数据库分表分库算法总结

    这篇文章主要介绍了超大数据量存储常用数据库分表分库算法总结,本文讲解了按自然时间来分表/分库.按数字类型hash分表/分库.按md5值来分表/分库三种方法,以及分表所带来的问题探讨,需要的朋友可以参考 ...

  8. mysql 分表分库mycat_Mysql数据库之如何Mycat分表分库?

    Mycat分表分库虽然能解决大表对数据库系统的压力,但也有一些不利,因此Mycat分表分库要先解决的问题是,分不分库,分哪些库,什么规则分,分多少分片.那么究竟是怎么分的呢? 1.能不分就不分,100 ...

  9. 数据库优化,分表分库

    简介:TDDL(Tabao Distributed Data Layer)是淘宝开源的一个用于访问数据库的中间件,集成了分库分表,主备,读写分离,权重调配,动态数据库配置等功能.本文以2007年TDD ...

  10. 总结下Mysql分表分库的策略及应用

    上月前面试某公司,对于mysql分表的思路,当时简要的说了下hash算法分表,以及discuz分表的思路, 但是对于新增数据自增id存放的设计思想回答的不是很好(笔试+面试整个过程算是OK过了,因与个 ...

最新文章

  1. WordPress.com使用JavaScript替换掉PHP
  2. 使用ASP.NET2.0显示照片
  3. 2019新面貌:博客改版计划进行中!
  4. Oracle\Sqlserver\Mysql\Sybase\DB2五类数据库通信协议
  5. JFreeChart 1.0.6 用户开发指南(中文)
  6. ProtocolHandler继承体系
  7. 当安装软件后提示依赖没有安装时
  8. (转)Android中JNI编程的那些事儿
  9. 技术剖析 | Axonius为什么能获得 2019 RSAC创新大奖 1
  10. 数据标记系列——图像分割 Curve-GCN
  11. Python 分析 35 年的考研英语真题词汇,解读孤独的考研大军!
  12. [.NET] : 设定Windows Service启动类型
  13. 【转】Leopard 安装教程
  14. r 中文乱码_配置R语言环境,这一篇就够了!
  15. C++游戏编程教程(五)——项目实战
  16. 【日常点滴015】python中学完pandas后的代码练习 附源数据文件
  17. 计算机是概念化不是程序化,走进计算思维
  18. 目前NAXX所用到的一些BUFF和药水
  19. 程序员爬取 5000+ 口红商品数据,差点比女朋友更懂口红?
  20. 个人博客系统功能展示

热门文章

  1. docker(虚拟化,沙箱(沙盒),简介,docker和vm的区别,安装,基本操作,基本使用) 镜像的操作 容器的操作 使用mysql镜像 使用canda创建虚拟环境
  2. phoenix学习四节 Secondary Indexing 二级索引
  3. 新手购车九大注意事项
  4. 分组密码算法加密模式
  5. java c web开发框架_C/C Web框架
  6. git flow使用
  7. 奇迹服务器该如何选择?
  8. 详细推导HMM模型之:EM算法
  9. leetcode438. Find All Anagrams in a String
  10. matlab 计算协方差矩阵