千家信息网

数据库分库和分表是什么意思

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍"数据库分库和分表是什么意思",在日常操作中,相信很多人在数据库分库和分表是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"数据库分库和分表是什么
千家信息网最后更新 2024年09月22日数据库分库和分表是什么意思

这篇文章主要介绍"数据库分库和分表是什么意思",在日常操作中,相信很多人在数据库分库和分表是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"数据库分库和分表是什么意思"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!


一、什么情况下拆

  • 数据量不断增加的情况下,当前单个的数据库和数据表已经无法满足海量数据。索引压力大。

  • 数据库的吞吐量达到了瓶颈。

  • 希望在后期扩容时,对应用层的配置改变最少。

这个时候,就需要重新设计,一个字,拆!


二、常见的拆分手法

拆分的总思想:分而治之

  1. 水平拆分

保留原有的数据库(表)结构,将一个库(表)拆分为多个库(表)。比如t_user表拆分为t_user1、t_user2。

优点

  • 单库(表)的数据保持的一定数量级范围内,保证性能

  • 切分时结构相同,代码改造少

  • 提高了系统的稳定性和负载能力

分片纬度

  • 哈希

数据切片比较均匀,压力被分散了。 但是,查询就需要进行聚合了。

  • 时间

适用于有明显时间特点的。针对不同时间段的数据访问频率不同,可以配置不同的硬件资源来节约成本。也方便归档。

  1. 垂直拆分

根据业务的纬度,将原本的一个库(表)拆分为多个库(表),每个库(表)和原来的结构不同。比如t_user表拆分为t_user_basic、t_user_detail。

优点

  • 业务逻辑更清晰

  • 动静分离、冷热分离

冷数据查询多,可以考虑MyISAM引擎;热数据更新多,可以考虑InnoDB引擎。

读多写少的数据,可以多配置几个从库;对于热数据,可以使用多个主库构建分库分表的结构。

对于特殊的活跃数据,可以考虑使用redis等缓存,等累计到一定数据量时再更新数据库。

  • 数据维护简单

  • 按照成本、应用的等级、应用的类型将表放到不同的机器上,方便管理

两种方式统一的缺点

  • 分布式事务的问题

  • join的问题

  • 跨节点的排序、分页问题

  • 多数据源的管理问题


三、实现方案

  1. 客户端分片

  2. 代理层分片

  3. 支持事务的分布式数据库(TiDB、OceanBase)


四、带来的问题

  1. 扩容

  • 操作繁琐

  • 迁移数据时,数据量大会导致不一致,要先清洗旧数据,洗完之后再使用新规则,再做全量对比。

  • 金融交易数据,将数据动静分离。历史数据不会被更新,可以拉长双写的时间窗口,当过了这个窗口后,直接迁移那些不会被更新的历史数据。

  • 数据量大时,抽样对比。

  1. 查询问题

  • 难支持多维度查询,可以做数据异构冗余。或者搜索引擎。

  • 买家下单后的商品信息查询时不能和下单前不一致,这个时候需要做快照。

  1. 事务问题

  2. 同组数据的跨库问题

  • 尽量把同一组数据放到同一台数据库服务器上。


五、实战

去年2018年,在*美时,做的一个物流电商项目,其中在存储运单时,由于每个月的运单数当时已经成型(百万)。所以,将订单表按照时间分片,并且将主键和复杂查询数据存储至es。这样,在以时间维度查询时直接走DB,在其他查询条件时,先走es查询出主键,再根据主键信息查询DB。

  • 这样建表,有个好处是表可以无限制的根据时间创建并使用。

  • 同时,也会带来坏处,当业务猛增,数据量暴增时,按月分可能无法满足,这个时候就需要改变路由策略。

  • 最大的坏处是,这样会产生冷数据问题,比如一年前、两年前、甚至更久的数据可能已经几乎不会再访问。这种情况可以走es或者离线hive

到此,关于"数据库分库和分表是什么意思"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数据 数据库 问题 查询 时间 分库 分表 不同 意思 结构 学习 更新 业务 事务 多个 引擎 情况 时候 应用 配置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 sql数据库修改数据后怎么撤回 内蒙古数据软件开发服务标准 深圳易鸿达软件开发有限公司 局域网服务器搭建 海康视频服务器怎么连接电脑 网络安全流量汇聚分流 骂人视频软件开发 软件开发师考公务员 大学生网络安全精英赛复赛题库 如何查ibm服务器错误日志 vb数据库连接顺序 小白测评原神数据库 绵阳成都网络技术培训机构 华为云服务器如何配置安全组 数据流图数据库 因特网总服务器放在海底 数据库在工程中的作用 网络安全知识内容手抄报五年级 大学生网络安全知识竞赛能查到吗 兰州信创云服务器 网络安全各自责任 男生学计算机网络技术好吗 厦门亿联网络技术有限公司 安庆医院软件开发要多少钱 软件开发的新技术论文 闵行区项目数据库服务费 软件开发工程师经验工资趋势 网络安全动员令 电脑服务器报废会计分录 四大核心技术在数据库的关系
0