Mysql海量数据处理

Mysql海量数据处理一说海量数据有人就说了直接用大数据,那只能说不太了解这块,为此我们才要好好的去讲解一下海量的处理海量数据的处理分为两种情况1)表中有海量数据,但是每天不是很快的增长2)表中有还流量数据,而且每天很快速的增长针对这了两种情况,我们给出的解决方案也不太一样,而且也不是所有的项目都是这样的情况。海量数据的解决方案1)使用缓存2)页面静态化技术3)数据库优化4)分离数据库中活跃的…

大家好,又见面了,我是你们的朋友全栈君。

一说海量数据有人就说了直接用大数据,那只能说不太了解这块,为此我们才要好好的去讲解一下海量的处理

  1. 海量数据的处理分为两种情况
    1)表中有海量数据,但是每天不是很快的增长
    2)表中有还流量数据,而且每天很快速的增长
    针对这了两种情况,我们给出的解决方案也不太一样,而且也不是所有的项目都是这样的情况。

  2. 海量数据的解决方案
    1)使用缓存
    2)页面静态化技术
    3)数据库优化
    4)分离数据库中活跃的数据
    5)批量读取和延迟修改
    6)读写分离
    7)使用NoSql和Hadoop等技术
    8)分布式部署数据库
    9)应用服务和数据库分离
    10)使用搜索引擎搜索数据库中的数据
    11)进行业务的拆分

    千万级数数据,mysql实际上确实不是什么压力,InnoDB的存贮引擎,使用B+数存储结构,千万级的数据量,基本也就是三四层的搜索,如果是配置合适的索引,性能基本也不是问题

    但有时候业务上面的增长,导致数据还会继续增长,为了应对这方面的问题而必须要做扩展了此时可能首先考虑的就是分库分表

    数据的切分: 就是通过某种特定的条件,将我们存放在同一个数据库中的数据分散的存放到多个数据库中,以达到分散单台数据库负载的效果,即为分库分表

  3. 分表
    把一张表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表明,然后操作它

    1)什么时候考虑分表?
    * 一张表的查询速度已经慢的受到影响的时候
    * sql经过优化
    * 单张表中数据量爱的
    * 当频繁插入或者联合查询时,查询变慢
    2)分表解决的问题
    * 单表的并发能力提高了,硬盘I/O性能也提高了,写操作效率提高了
    * 查询一次的时间短了
    * 读写缩影的数据变小
    * 插入数据需要重新建立索引的数据减少

  4. 分库
    将一个应用中对应的一个数据库分解成多个数据库,且可以这多个数据库可以存在同一个服务器上,也可以存在于多个服务器上

    1)什么时候考虑分库?
    * 单台DB的存贮空间不够
    * 随着查询量的增加单台数据库服务器已经没法支撑

    2)分库解决的问题
    * 主要目的是为了突破单节点数据库的I/O能力限制,解决数据库扩展性问题

  5. 分区
    把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的

    1)什么时候考虑分区
    * 张表的查询速度已经慢的受到影响的时候
    * sql优化
    * 数据量大
    * 表中的数据是分段的
    * 对数据的操作往往只涉及一部分数据,而不是所有的数据

    2)分区可以解决的问题
    提升查询效率

    3)分区的实现方式
    使用数据库工具,或者sql语句

PARTITION BY RANGE(YEAR(order_day)) (
    PARTITION p_2010 VALUES LESS THAN (2010),
    PARTITION p_2011 VALUES LESS THAN (2011),
    PARTITION p_2012 VALUES LESS THAN (2012),
PARTITION p_catchall VALUES LESS THAN MAXVALUE);

MAXVALUE 表示最大的可能的整数值。

查看某一分区内的数据:
SELECT * FROM sales PARTITION (p_2010);/*查询在该分区内的数据*/

删除分区
ALTER TABLE sale_data DROP PARTITION s20100406 ;

4)分区类型
* RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。
* LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
* HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。
* KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值

6. 分区和分表的区别于联系
* 分区和分表的目的都是减少数据库的负担,提高表的增删改查的效率。
* 分区只是一张表中的数据的存储位置发生变化,分表是将一张表分城多个表
* 访问量大,且数据比较大时,两种方式可以互相配合使用
* 访问量不大,但表数据比较多时,可以只进行分区

7. 垂直分割和横向分割
将表中的一个字段存放在另一个表(或数据库中) 将表中的一些数据存放到另一个表中或数据库中其中两个表的字段一致
在这里插入图片描述在这里插入图片描述

  1. 拆分之后面临的问题**
    1)事物的支持
    ,分库分表,就变成了分布式事务
    2)join时跨库,跨表的问题
    3)分库分表,使用分布式读写分离,分布式为了保证为强一致性,必然带来延迟,导致性能降低,系统的复杂程度高

解决方案
1)分布式事物的解决方法为JTA,而JTA的实现又需要依靠Atomikos框架,而Atomikos又需要SringData+jpa支持,而SptingData+jpa又可以需要Hibernate实现持久化操作
2)选用第三方的数据中间件(Atlas,Mycat,TDDL)同时业务系统需要配合数据存储的升级

9. 总结
能不分就不分,分库分表的行为都会在某种程度上提升业务逻辑的复杂度,业务的时间复杂程度往往会翻倍或指数上升,所以,在分库之前,不要为分而分,去做其他做其它力所能及得事情把,比如升级硬件,网络,数据库版本,读写分离,负载均衡等,所有分库分表的前提是,这些你已经尽力了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152425.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月23日 上午10:16
下一篇 2022年6月23日 上午10:16


相关推荐

  • 企业微信后台模板导入覆盖机制

    企业微信后台模板导入覆盖机制场景描述 企业微信中已经有一些用户了 现在要批量导入一些用户 可能存在重复 先在企业微信后台通讯录管理中 下载用于导入的 Excel 模板 将员工信息整理到里面 然后导入 覆盖原则 通讯录中账号 手机号 邮箱是唯一的 其它 1 账号 邮箱 手机号 完全一样的情况下 可以覆盖导入已有的信息 包括名字 自定义字段 2 账号一样 手机号不一样的情况下 手机号不会被覆盖 其他信息会被覆盖 比如邮箱

    2026年3月18日
    1
  • ltrim函数php,php ltrim函数怎么用?

    ltrim函数php,php ltrim函数怎么用?phpltrim 函数用于删除字符串左边的空格或其他预定义字符 语法为 ltrim string charlist 参数 string 指定需要处理的字符串 参数 charlist 指定要从字符串中删除哪些字符 然后返回已修改的字符串 phpltrim 函数作用 删除字符串左边的空格或其他预定义字符语法 ltrim string charlist 参数 string 表示需要处理的字符串 不可

    2026年3月18日
    2
  • 树莓派连接WiFi(最稳定的方法)[通俗易懂]

    树莓派连接WiFi(最稳定的方法)[通俗易懂]1概述树莓派是一个只有信用卡大小的卡片式电脑,基于ARM架构,采用Linux作为其操作系统;它默认是通过有线接口连接互联网,对于如此小巧的设备,有线连接非常不方便,下面我们介绍下如何让树莓派通过无线网卡连接网络。网上大多数文章介绍的是编辑  /etc/network/interfaces  文件,修改成如下的形式:ifacewlan0inetdhcpwpa-

    2022年5月22日
    67
  • 一文解读光纤收发器单模和多模的区别![通俗易懂]

    一文解读光纤收发器单模和多模的区别![通俗易懂]光纤收发器是进行光电信号转换的设备,现在光纤收发器的技术越发成熟,应用也越来越广泛,所以我们在选择或者采购光纤收发器时,对光纤收发器做一定的了解是有好处的,接下来我们就来给大家详细介绍一下光纤收发器的单模和多模的区别?一起来看看吧!光纤收发器有单模和多模之分,其最根本的区别就是传输距离远近。单模光纤收发器的工作模式是单节点、一个端口信号传输,所以信号传输距离比较长,组成跨城域局域网的建设;多模光纤收发器就刚好相反,其工作模式是多节点、多端口信号传输,所以信号传输距离比较短,但是价格低、使用方便,多用

    2022年10月21日
    5
  • 文心一言本地化部署指南:离线环境下的高效应用实践

    文心一言本地化部署指南:离线环境下的高效应用实践

    2026年3月12日
    5
  • 查看oracle端口号「建议收藏」

    查看oracle端口号「建议收藏」我的oracle安装路径:D:/Study/Oracle打开其中的tnsnames.ora此文件中port=“端口号”端口号一般为1521

    2022年4月18日
    243

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号