文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

分库分表怎样分?

2014-07-22 04:55

关注

分库分表怎样分?

1)分库
    业务拆分 - 如顾客,商品,订单各自分独立的库
    主备 - 主机做读写,备机只做数据备份
    主从(读写分离) - 主机写,从机读
    主主 - 任意一台机做写,互相复制
    集群 - 一主多备、一主多从、多主多从,主机写,所有机都可以读

1)分片(类似分库)
  分片是把数据库横向扩展(Scale Out)到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。
  Shard这个词的意思是“碎片”。
  如果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据库的碎片(DatabaseShard)。
  将整个数据库打碎的过程就叫做分片,可以翻译为分片。
  形式上,分片可以简单定义为将大数据库分布到多个物理节点上的一个分区方案。每一个分区包含数据库的某一部分,称为一个片,分区方式可以是任意的,并不局限于传统的水平分区和垂直分区。
  一个分片可以包含多个表的内容甚至可以包含多个数据库实例中的内容。每个分片被放置在一个数据库服务器上。
  一个数据库服务器可以处理一个或多个分片的数据。
  系统中需要有服务器进行查询路由转发,负责将查询转发到包含该查询所访问数据的分片或分片集合节点上去执行。

2)分表
  分表从表面意思说就是把一张表分成多个小表。
  1)垂直分表 - 列数太多的大表分成多张表,分后表的结构变了,列数变少,表保存数据的行数不变
  2)水平分表 - 表保存数据的行数太多的表分到多张表去保存,分后表的结构不变,表保存数据的行数变少。
  分区和分表的区别与联系
    分区和分表的目的都是减少数据库的负担,提高表的增删改查效率。
    分区只是一张表中的数据的存储位置发生改变,分表是将一张表分成多张表。
    当访问量大,且表数据比较大时,两种方式可以互相配合使用。
    当访问量不大,但表数据比较多时,可以只进行分区。
  常见分区分表的规则策略(类似)
    Range(范围)
    Hash(哈希)
    按照时间拆分
    Hash之后按照分表个数取模
    在认证库中保存数据库配置,就是建立一个DB,这个DB单独保存user_id到DB的映射关系
  
3)分区
  数据分区是一种物理数据库的设计技术,它的目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。
  分区并不是生成新的数据表,而是将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中,实际上还是一张表。
  另外,分区可以做到将表的数据均衡到不同的地方,提高数据检索的效率,降低数据库的频繁IO压力值,分区的优点如下:
  相对于单个文件系统或是硬盘,分区可以存储更多的数据;
    数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可;
    精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率;
    可跨多个分区磁盘查询,来提高查询的吞吐量;
    在涉及聚合函数查询时,可以很容易进行数据的合并;
  mysql5 开始支持分区功能

  CREATE TABLE sales (
      id INT AUTO_INCREMENT,
      amount DOUBLE NOT NULL,
      order_day DATETIME NOT NULL,
      PRIMARY KEY(id, order_day)
  ) ENGINE=Innodb 
  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);

常用分库分表中间件
  sharding-JDBC
  MyCAT
  Atlas

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯