Mycat2(一)简介、分库分表概念

news2024/12/23 17:42:25

文章目录

  • mycat是什么;为什么要用;
  • mycat的作用
  • 原理
  • 分库分表的意义
    • 数据库优化的层次:
  • 数据切分的方式,带来的问题和解决方案
    • 分库分表带来的问题
  • mycat的特性与详细配置含义
  • mycat2与mycat1.6区别
    • mycat2映射模型
    • 多数据源解决方案
    • mycat核心概念
    • mycat全局ID
  • mycat监控与日志查看

mycat是什么;为什么要用;

mycat是数据库中间件。(中间件:是一类链接软件组件和应用的计算机软件,以便于软件各部件之间的交互)。
为什么要用mycat:

  1. Java与数据库高耦合。
  2. 高访问量高并发对数据库的压力。
  3. 读写请求数据不一致。

mycat的作用

  1. 读写分离
  2. 数据分片(分库分表):垂直拆分(分库)、水平拆分(分表)、垂直水平拆分(分库分表)
  3. 多数据源整合

原理

Mycat的原理中最重要的一个动词是“拦截”’,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。
在这里插入图片描述

分库分表的意义

作为数据库优化方案,解决数据库性能瓶颈问题。
数据库性能瓶颈出现的原因:连接、速度、存储。
常见数据库瓶颈问题:
- 数据库数量大,查询效率低
- 分布式数据库架构复杂对接困难
- 高访问、高并发对数据库压力大

数据库优化的层次:

  1. SQL与索引
  2. 表、存储引擎
  3. 集群架构:主从复制(一主一从、一主多从、双主架构、多主多从)、分库分表
    主从:replicate 冗余
    分片:shard
  4. 数据库配置优化(连接数)
  5. OS、Hardware

架构演进:单应用单数据库 -> 多应用单数据库 -> 多应用独立数据库

数据切分的方式,带来的问题和解决方案

分表:解决单表数据量过大导致的查询效率下降。理论分表500W,以实际业务为准。

  1. 垂直切分:基于字段的切分。
    eg:学生信息表拆分为学生基本信息表、学生学籍信息表、学生扩展信息表等
  • 垂直切分(单库)
    在这里插入图片描述
  • 垂直切分(多库)
    在这里插入图片描述
  1. 水平切分:基于数据的切分。得到的表结构是相同的,只是数据存储在不同表。
    eg:
  • 水平切分(单库):
    • 渠道交易流水表:channel_tran、channel_tran_month、channel_tran_history
    • 商户费用明细表:fee_detail_202211、fee_detail_202212、fee_detail_202301
  • 水平切分(单库):
    在这里插入图片描述

分库分表带来的问题

  1. 跨库的关联查询(要尽量避免跨库关联查询)

    • 字段冗余
    • 数据同步 etl
    • 全局表,在所有数据库都建立上
    • ER表跨库。eg:order_info、order_detail要求id相同的放到同一个库。
    • 数据组装
  2. 分布式事务:
    CAP:一致性、可用性、分区容错性。
    BASE:BA基本可用、S软状态(中间状态)、E最终一致

    • 全局事务:XA(两阶段提交)Atomikos
    • 基于可靠消息服务的分布式事务
      在这里插入图片描述
    • 柔性事务:TCC(Try Confirm Cancel)
      在这里插入图片描述
  3. 排序、分页、函数计算问题
    limit 1,10
    dn1: 1 3 5 7 9
    dn2: 2 4 6 8 10

  4. 全局主键
    Oracle:sequence

    • 时间戳(但时间戳不可以直接作为主键)
    • UUID(费空间、无序不适合做主键)
    • redis取一段数据做主键
    • 雪花算法(有序、QPS较高)

mycat的特性与详细配置含义

mycat2与mycat1.6区别

在这里插入图片描述
mycat2:路由注释、XA事务、MySQL8。

mycat2映射模型

在这里插入图片描述

多数据源解决方案

DAO(AbstractRoutingDataSource) - ORM(shardbatis) - JDBC(Sharding-JDBC) - Proxy(mycat) - Server(redis等特定数据库)

mycat核心概念

术语:主机/实例、物理数据库、物理表、分片、分片节点、分片键、分片算法、逻辑表、逻辑数据库

mycat全局ID

  1. 文件方式
  2. 数据库方式
  3. 本地时间戳
  4. ZK方式

mycat监控与日志查看

9066管理端口
show @@help;

参考文档:
http://dl.mycat.org.cn/mycat-definitive-guide.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript控制元素(标签)的显示与隐藏

使用JavaScript有多种方式来隐藏元素: 方式一、使用HTML 的hidden 属性,隐藏后不占用原来的位置 hidden 属性是一个 Boolean 类型的值,如果想要隐藏元素,就将值设置为 true,否则就将值设置为false 【HTML hidden 属性…

【STM32+cubemx】0030 HAL库开发:DDS芯片AD9833实现简单的波形发生器

大家好,我是学电子的小白白,今天带大家了解一款波形发生器芯片——AD9833。 AD9833是AD公司出品的一款DDS波形发生器,能够产生正弦波、三角波和方波输出。 1)什么是DDS 通俗来讲,DDS是一种把波形预先存储在芯片内部的…

H5对接NSS主扫遇到的一些问题

需要对接以下这些钱包: WXPAY(微信)ALIPAY(支付宝)LINEPAY(linePay)PAY_PAY (PayPay)RAKUTEN_PAY(乐天)MER_PAY(MerPay)AU_PAY(auPay)DOCOMO_PAY(Dpay)判断钱包类型 这…

注册中心Nacos

Nacos是Spring Cloud Alibaba提供的一个软件 这个软件主要具有注册中心和配置中心(课程最后讲解)的功能 我们先学习它注册中心的功能 微服务中所有项目都必须注册到注册中心才能成为微服务的一部分 注册中心和企业中的人力资源管理部门有相似 当前微服务项目中所有的模块,在…

用户购车旅程转变下,深度运营中的难点痛点如何突破?

在数字互联的营销环境下,消费者的购车旅程和用户行为发生了极大的改变,线上决策比重逐渐增强,到店决策周期越来越短,消费者可以在线完成70%-80%的车型甄选和决策。在这种环境下,未来如何实现更高效的用户运营和快速的销…

Python基础(十八):学员管理系统应用

文章目录 学员管理系统应用 一、系统简介 二、步骤分析 三、需求实现 1、显示功能界面 2、用户输入序号,选择功能 3、根据用户选择,执行不同的功能 4、定义不同功能的函数 学员管理系统应用 一、系统简介 需求:进入系统显示系统功能…

汽车租赁小程序源码 上门取车

小程序端: 首页、订单、我的 上门取送:仅限上门取送范围、到店取还:为您推荐最近的门店 套餐1、领优惠券、签到积分、限时活动、车型推荐 订单:订单中心、短租订单、长租订单 个人中心:我的优惠、租车券、优惠券、…

Android入门第55天-在Android里使用OKHttp组件访问网络资源

简介 今天的课程开始进入高级课程类了,我们要开始接触网络协议、设备等领域编程了。在今天的课程里我们会使用OKHttp组件来访问网络资源而不是使用Android自带的URLConnection。一个是OKHttp组件更方便二个是OKHttp组件本身就带有异步回调功能。 下面就进入课程。…

《北京市数字经济促进条例》图解来了

《北京市数字经济促进条例》 2023/1/1 二十大对建设数字经济作出重要部署。党的二十大报告中指出,“加快建设网络强国、数字中国”、“加快发展数字经济,促进数字经济和实体经济深度融合,打造具有国际竞争力的数字产业集群”。习总书记强调…

【算法】P1 算法简介

算法什么是算法正确与错误的算法算法可以解决什么问题本专栏有哪些算法什么是算法 算法 (Algorithm) 取某个值或集合作为 输入,并产生某个值或集合作为 输出。算法就是把输入转换为输出的计算,描述这个计算的过程来实现输入与输出的关系。 正确与错误的…

学习Elasticsearch这一篇就够了(2)

DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试…

12_SpringMVC_拦截器

在之前学习JAVAWEB 的时候,我们学习了过滤器的知识。过滤器的作用是保护请求的服务器资源,在请求资源被执行之前,如果请求地址符合拦截范围,则会先执行过滤器。过滤器的执行时机,是在Servlet之前执行的。但是在使用了S…

Vue 3 技术揭秘

作者介绍 muwoo,前端技术专家。曾就职于蚂蚁集团,之前对 Vue 2.x 源码有过深层次的研究和探索,并在 Github 上开源了相关的技术文章:Vue 2.x 技术揭秘,目前已有超过 2k star 。 自 Vue 3 诞生以来,就一直关…

30 岁转行做程序员,晚了吗?

2019年,我从某大型国有企业正式辞职,告别了工作了6年的北锤小城。这时候,鄙人年芳30,曾经一批来这里奋斗的同事们,要么走上管理岗位、要么成家立业买房买车,他们是打算把一生奉献给这里的,然而也…

【Javascript基础】--零基础--超详细且简洁的Javascript笔记--Javascript基础知识(02)

Hello, world! 首先&#xff0c;让我们看看如何将脚本添加到网页上。 对于服务器端环境&#xff08;如 Node.js&#xff09;&#xff0c;你只需要使用诸如 "node my.js" 的命令行来执行它。 “script” 标签 比如&#xff1a; <!DOCTYPE HTML> <html>…

搭建Seata分布事务(基于Nacos注册+Mysql配置)

文章目录一&#xff1a;拉取Seata镜像二&#xff1a;运行Seata容器2.1. 容器内目录拷贝到宿主机2.2. 编辑 registry.conf 和 file.conf2. 2.1. 编辑注册中心相关文件2.2.2. 编辑Seata存储数据的相关配置文件2.3. 宿主机文件拷贝至容器内部三&#xff1a;Nacos注册中心相关配置操…

TikTok发布What‘s Next趋势报告,2023年有哪些增长机会?

获悉&#xff0c;近日TikTok for Business发布了《Whats Next 2023 TikTok 全球流行趋势报告》&#xff0c;帮助营销人员了解消费者的需求在来年将如何变化&#xff0c;以及这对他们在TikTok内外的策略将产生怎样的影响。这份报告将有趣与实用相结合&#xff0c;重点剖析了品牌…

阿里巴巴新产“Java架构核心宝典”,全是流行技术,限时开放

导言 什么是架构师&#xff1f;对于程序员来说&#xff0c;聊架构是一个永不过时的话题。实际上&#xff0c;每一家公司都有自己对架构师不同的定位&#xff0c;因为不同的公司&#xff0c;所处的阶段、业务模式以及应用场景都不一样&#xff0c;因此对架构师的要求不一样&…

直播带货不再独揽大旗,货架电商神秘崛起,链动2+1模式助力引流

​“WXG&#xff08;微信事业群&#xff09;最亮眼的业务是视频号&#xff0c;基本上是全场&#xff08;全公司&#xff09;的希望。”12月22日&#xff0c;在线上召开内部员工大会时&#xff0c;腾讯CEO马化腾再度把视频号推至C位。这句话昨天也一度冲上热搜。 马化腾在内部员…

后台Service限制

每次在后台运行时&#xff0c;应用都会消耗一部分有限的设备资源&#xff0c;例如 RAM。 这可能会影响用户体验&#xff0c;如果用户正在使用占用大量资源的应用&#xff08;例如玩游戏或观看视频&#xff09;&#xff0c;影响会尤为明显。 为了提升用户体验&#xff0c;Androi…