设为首页 加入收藏

TOP

MySQL单机优化---分表、分区、分库
2019-09-06 00:27:43 】 浏览:20
Tags:MySQL 单机 优化 ---分表 分区 分库

一、分表:

  水平分表:根据条件把数据分为N个表(例如:商品表中有月份列,则可以按月份进行水平分表)。

    使用场景:一张表中数据太多,查询效率太慢。

     当需要同时查询被水平分表的多张表时:

       在两条SQL语句中间加union,就能把两表数据合并展示。

      union:数据合并时去重。

       Union all:数据合并展示不去重。

 

  垂直分表:将表的字段拆出来变成一张表,两表通过外键建立一对一关系。

    使用场景:有些表记录数并不多,但是字段却很长,表占用空间很大,检索表时需要执行大量I/O,严重降低了性能。

     当需要同时用到两表的数据时,可以通过 left  join 进行两表查询。

 

二、分库:(配置多数据源)

    垂直分库:根据不同业务将不同的表分到不同的数据库。

    水平分库:将同一张表中的数据分到不同的数据库中。

 

三、分区:

    表没变,但是保存表数据的从一个文件被分成了多个文件,用户感知不到。

    分区的作用:     

       select *f rom dept where id in (1m2,3,4)

 

      从MySQL 5.1 中新增了分区(Partition)功能,优势也越来越明显了:

 

          --与单个磁盘或文件系统分区相比,可以存储更多的数据

 

          --很容易就能删除不用或者过时的数据

 

          --一些查询可以得到极大的优化 可以并发查询

 

          --涉及到 SUM()/COUNT() 等聚合函数时,可以并发进行

 

          --IO吞吐量更大(多台服务器)

     分区的方式:       

        常见分区方式:

 

          Range(范围       –基于一个给定的连续空间,把数据分配到不同分区。1-10 11-20

 

          List(预定义列表) –类似Range分区,区别在List分区是基于枚举出的值列表分区,而  Range分区是根据给定的连续区间范围分区 1,23   45,6

 

          Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分        区的表。这个根据给定的分区个数,把数据分配到不同的分区。

 

          Key(键值)-上面Hash模式的一种延伸,这里的Hash KeyMySQL系统产生的。

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java操作ElasticSearch 下一篇Java学习笔记(五)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目