首页 > 数据库 > MySQL 5.1 分区技术初探(二)

MySQL 5.1 分区技术初探(二)

2011年12月30号
查看评论 发表评论 303次浏览

  3,连接查询

  同样地,对于连接查询,在有没有分区的条件下,将有性能3倍左右的差距。对于更大的数据量,可能会有更大的性能差距。SQL如下:

  select count(*) from salaries s left join employees e ons.emp_no=e.emp_no where s.from_date between ’1999-01-01′ and ’1999-12-31′ ;

  

图17,无采用分区和采用分区的性能对比

  4,删除查询

  为了删除1998年的销售数据,那么在有分区情况下可以不利用delete查询快速地完成垃圾数据的清理。

图18,删除查询性能对比

  可知,对于有分区的情况下,只需要将某个分区删除掉即可,时间仅为0.05s,相对应原来的2.82s,这个提升是非常高的。当然,利用分区功能删除之后的数据文件信息如下:

图19,利用分区功能删除后的文件信息

  那么接下来如果接着插入1998年的数据,数据是否丢失了呢?还是会写不进去?答案也都是否定,它会将数据写入p16分区中。有兴趣的读者可以自己收到试试。

四、总结和不足

  分区的好处有很多:

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

  2,对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据;

  3,一些查询可以得到极大的优化,如where语句数据可以只保存在一个或多个分区内;

  4,涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理;

  5,通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量。

  在设计分区过程中,需要考虑的因素有很多,如:

  1,分区的列;

  2,分区使用的函数,特别是非Integer类型的列;

  3,服务器性能;

  4,内存大小。

  根据分区技术,有一些技巧:

  1,若索引的大小> RAM,考虑选用分区,不采用索引;

  2,尽量不采用Primary Key做分区的key;

  3,当CPU性能高的时候,考虑使用Archive存储引擎;

  4,对于大量的历史数据,考虑使用Archive+PARTITION。

  总之,

  1,MySQL分区技术是一种逻辑的水平分表技术;

  2,它只访问需要访问的分区,从而提高性能;

  3,支持range, hash, key, list和复合分区方法;

  4,支持MySQL服务器所支持的任何存储引擎;

  5,除了Key分区方法,Partition的key 必须是整数(或者能转化成整数)。

页面: 1 2

类别数据库 标签
  1. 目前没有评论
你必需 登陆 才能发表评论.