资讯专栏INFORMATION COLUMN

mysql分表、分区

littlelightss / 395人阅读

摘要:分表和分区有什么联系呢都能提高的性高,在高并发状态下都有一个良好的表现。表分区相对于分表,操作方便,不需要创建子表。自定义规则分表范围这种模式允许将数据划分不同范围。例如可以建立一个对表主键进行分区的表。

什么是分表?

分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些子表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。

什么是分区?

分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据。

mysql分表和分区有什么联系呢?

1.都能提高mysql的性高,在高并发状态下都有一个良好的表现。
2.分表和分区不矛盾,可以相互配合的,对于那些大访问量,并且表数据比较多的表,我们可以采取分表和分区结合的方式(如果merge这种分表方式,不能和分区配合的话,可以用其他的分表试试),访问量不大,但是表数据很多的表,我们可以采取分区的方式等。
3.分表技术是比较麻烦的,需要手动去创建子表,app服务端读写时候需要计算子表名。采用merge好一些,但也要创建子表和配置子表间的union关系。
4.表分区相对于分表,操作方便,不需要创建子表。
我们知道对于大型的互联网应用,数据库单表的数据量可能达到千万甚至上亿级别,同时面临这高并发的压力。Master-Slave结构只能对数据库的读能力进行扩展,写操作还是集中在Master中,Master并不能无限制的挂接Slave库,如果需要对数据库的吞吐能力进行进一步的扩展,可以考虑采用分库分表的策略。
5.数据库分表可以解决单表海量数据的查询性能问题,分库可以解决单台数据库的并发访问压力问题

分表的几种方式:
1、mysql集群

事实它并不是分表,但起到了和分表相同的作用。集群可分担数据库的操作次数,将任务分担到多台数据库上。集群可以读写分离,减少读写压力。从而提升数据库性能。

2、自定义规则分表

1 Range(范围)–这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区。
2 Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。
3 Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。
4 List(预定义列表)–这种模式允许系统通过预定义的列表的值来对数据进行分割。
5 composite(复合模式) –以上模式的组合使用。

3、利用merge存储引擎来实现分表
CREATE TABLE IF NOT EXISTS `alluser` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(50) DEFAULT NULL,
    `sex` int(1) NOT NULL DEFAULT "0",
    INDEX(id)
) TYPE=MERGE UNION=(user1,user2) INSERT_METHOD=LAST AUTO_INCREMENT=1;

mysql>show engines;的时候你会发现mrg_myisam其实就是merge。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/47667.html

相关文章

  • MySQLMySQL分区与传统的分库分表

    摘要:传统的分库分表传统的分库分表都是通过应用层逻辑实现的,对于数据库层面来说,都是普通的表和库。分区也存在与传统分表一样的问题,可扩展性差。子分区子分区是分区表中每个分区的再次分割。查询优化分区的目的是为了 传统的分库分表 传统的分库分表都是通过应用层逻辑实现的,对于数据库层面来说,都是普通的表和库。 分库 分库的原因 首先,在单台数据库服务器性能足够的情况下,分库对于数据库性能是没有影响...

    xuexiangjys 评论0 收藏0
  • Spider引擎(解决分库分表的尴尬)

    摘要:并且对后台数据库的引擎没有任何限制。目前引擎已经集成到了中。比如这个,在收到这个请求后,会跟进分区情况选择对应的进行转发。处理完成后,再将结果返回给,再将结果转发给发起请求的客户端。 场景假设 场景1:有两个分布在不通实例上的多张不通的表,想要通过某个字段关联,做一个统计,或者想将分布在不同实例的表,合并到一个实例中来做一些查询。 场景2:由于数据库容量的瓶颈或者是由于数据库访问性能的...

    zoomdong 评论0 收藏0
  • 美团DB数据同步到数据仓库的架构与实践

    摘要:离线还原数据完成采集后,下一步就是利用来还原业务数据。整个任务的管理,在美团数据平台的框架下进行,包括任务原语的表达和调度机制等,都同其他类似。对做的第二个改造,由美团的框架所决定。 背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据。在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据(DB...

    vspiders 评论0 收藏0
  • Mysql 架构及优化之-表分区

    摘要:例如可以将一个表通过年份划分成若干个分区。哈希这中模式允许通过对表的一个或多个列的进行计算,最后通过这个码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。 写在前面 单张表超过1000W行已经算作是大数据存储场景常规海量数据优化:大表拆小表、sql语句优化今天我们重点介绍大表拆小表的优化 拆表方式 水平拆表 将表user中的1000w行数据拆成user1表和use...

    megatron 评论0 收藏0
  • MySQL性能管理及架构设计(三):SQL查询优化、分库分表 - 完结篇

    摘要:第二阶段依照执行计划和存储引擎进行交互这个阶段包括了多个子过程一条查询可以有多种查询方式,查询优化器会对每一种查询方式的存储引擎统计信息进行比较,找到成本最低的查询方式,这也就是索引不能太多的原因。 上一篇:MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化 一、SQL查询优化(重要) 1.1 获取有性能问题SQL的三种方式 通过用户反馈获取存在性能问...

    kycool 评论0 收藏0

发表评论

0条评论

littlelightss

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<