MyCat分库分表

简介: 分库分表 1.数据量太大,SQL查询慢怎么办? 从sql语句入手 exist和in in 和 not in like 从数据库设计入手 加索引(不是越多越好) 尽量多考虑使用数值型

分库分表

1.数据量太大,SQL查询慢怎么办?

  • 从sql语句入手

    • exist和in
    • in 和 not in
    • like
  • 从数据库设计入手

    • 加索引(不是越多越好)
    • 尽量多考虑使用数值型,(性别,int 1,0;不用char 1,0)
    • 尽量多考虑使用定长而非变长(idNumber varchar(11))

2.mysql

  • 单表存储上限:$(2^{32})^2$

    • 理论上限,实际上是达不到的:实际行数上限还受myisam_data_pointer_size限制
  • 第二个上限是表的存储空间大小限制(Storage limits):256TB

3.千万级别的表查询怎么优化?

  • 相关字段加索引
  • 优化SQL查询语句
  • 不解决,把坑留给后面的接手的客户和程序员
  • 加缓存,如:redis,memcached
  • 数据库读写分离
  • 数据库拆分

4.分库分表,怎么分

  • 把原本存储在同一个库的数据分块存储到多个库上,把原来存储在一个表中的数据分块存储到多个表上。
  • 分库分表目的:分散单台设备负载
  • 常用切分方案:

    • A:垂直(纵向)拆分

      • 按照不同的表(或者Schema来切分割到不同的数据库(主机)之上)
      • 垂直拆分
    • B:水平(横向)拆分

      • 根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台 数据库(主机)之上。
      • 水平拆分
    • C:垂直水平拆分
    • 垂直水平拆分

5.分库分表的解决方案

  • 应用层

    • 当当[sharding-jdbc],阿里[TDDL]
  • Proxy 中间层

    • 社区:Mycat(cobar)
    • 数字:Atlas,金山:kingshard,百度:heinsberge
    • 商业版:Oneproxy,youtube:vitess
  • 方案比较
Cobar TDDL ShardingJDBC Mycat
分库支持 Yes Yes Yes Yes
分表支持 No Yes Yes Yes
框架类型 Proxy 应用集成 应用集成 Proxy
中间层 Yes No No Yes
ORM支持 任意 多种 多种 多种
数据库支持 mysql 多种 多种 多种
外部依赖 No Diamond No No
社区活跃度 停滞 停滞 较活跃 活跃
文档丰富 Yes 中等文本 Yes Yes
持续更新 No 中等文本 Yes Yes

6.Mycat分库分表原理和实现

  • 分片规则和策略 ---> 多种分片规则策略,还可以自定义
  • 分布式全局唯一ID ---> 多种分布式全局唯一ID实现
  • 多数据源管理问题 ---> 统一管理所有数据源
  • 跨域跨表join问题 ---> 全局表/sharedjoin/catlet
  • 其他特点:

    • 独创ER关系分片,解决ER分片难处理问题
    • 采用全局分片技术,每个节点同时并发插入和更新数据,都可以读取数据
    • 通过人工智能的Caltlet支持分片复杂SQL实现以及存储过程支持等。
  • 通俗易懂解析MyCat

    • mycat就是一个数据库中间件,数据库的代理,它屏蔽可物理数据,应用连接mycat,然后mycat再连接物理数据库
    • 它支持水平拆分(分库分表,通过分库达到分表),支持多种分片规则。比如:范围切片、自然月分片、hash取值分片等
    • 它支持mysql、oracle、mongodb、sql server,并支持数据库集群。
    • 底层原理
  • MyCat核心配置文件

    • server.xml 配置连接mycat的用户名、密码、数据库名
    • schema.xml 配置schema,datanode,datahost
    • rule.xml 分片规则

7.Mycat分库分表后的问题

  • 垂直拆分带来的问题:

    • 部分业务表无法join,只能通过接口方式,提高了系统复杂度
    • 存在单表性能瓶颈,不易扩展
    • 事务处理复杂
  • 水平拆分带来的问题:

    • 拆分规则难以抽象
    • 分片事务一致性难以解决
    • 维护难度较大
    • 跨表join性能差
目录
相关文章
|
2月前
|
弹性计算
阿里云学生服务器免费领取:2026年最新学生优惠政策,先领300元无门槛代金券
2026年阿里云学生专享:完成学信网认证,免费领300元无门槛代金券,覆盖ECS、轻量服务器等主流云产品;券有效期1年,可全额抵扣订单,轻松实现0元上云!
|
存储 NoSQL 关系型数据库
分布式锁实现
分布式锁实现
188 0
|
数据采集 消息中间件 人工智能
AI Agent:构建以数据为中心的智能体
在过去一年里大模型领域主要有两大领域的热点,一个是 LLM,几乎每月速度革新,大家关心的是效果和成本。另一个是 AI Agent,大家尝试解决各个领域应用问题,大家关心的是场景和竞争力。下面我们重点分享一下 AI Agent 的趋势和实践。
2138 13
|
机器学习/深度学习 算法 搜索推荐
《朴素贝叶斯:开启客户细分与精准营销的智能引擎》
在竞争激烈的商业环境中,客户细分和精准营销至关重要。朴素贝叶斯算法基于贝叶斯定理,假设特征独立,通过计算特征概率实现高效分类。该算法帮助企业深入理解客户,优化资源利用。通过收集多维度数据、特征提取与预处理、模型训练及客户分类,企业能制定个性化营销策略,提升转化率和客户忠诚度。某电商平台的成功案例显示,该算法显著提高了营销效果和投资回报率。
432 20
|
监控 安全 前端开发
前端安全:XSS攻击与防御策略
抵御XSS攻击的关键策略包括输入验证、输出编码、设置安全HTTP头如CSP和X-XSS-Protection、谨慎管理存储和会话、使用DOMPurify等库进行数据清理、采用安全编码实践、教育用户和开发人员、实施多层防御、持续测试和更新。其他措施如使用非渲染模板引擎、限制错误信息、使用WAF、加密数据、遵守安全编码标准和进行安全审计也是重要步骤。
1427 0
|
Ubuntu Shell Linux
|
存储 人工智能 Cloud Native
再谈数据湖3.0:降本增效背后的创新原动力
越来越多企业选择数据湖作为企业数据存储、管理的解决方案。同时,数据湖的应用场景也在不断发展,各行各业都在云上构建数据湖,从一开始的简单分析,到互联网搜索推广和深度分析以及近两年大规模的AI训练,都是基于数据湖架构进行的。
13904 25
再谈数据湖3.0:降本增效背后的创新原动力
|
存储 Serverless
【数据结构】万字一文手把手解读哈希————(开/闭散列)解决哈希冲突完整详解(6)
【数据结构】万字一文手把手解读哈希————(开/闭散列)解决哈希冲突完整详解(6)
|
存储 机器学习/深度学习 消息中间件
HDFS高可用与高扩展机制
HDFS高可用与高扩展机制
673 0
HDFS高可用与高扩展机制

热门文章

最新文章