网站大量收购独家精品文档,联系QQ:2885784924

创建mysql表分区的方法技巧.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
创建mysql表分区的方法 我来给大家介绍一下mysql表分区创建与使用吧,希望对各位同学会有所帮助。表分区的测试使用,主要内容来自于其他博客文章以及mysql5.1的参考手册。 表分区是最近才知道的哦 ,以前自己做都是分表来实现上亿级别的数据了,下面我来给大家介绍一下mysql表分区创建与使用吧,希望对各位同学会有所帮助。 表分区的测试使用,主要内容来自于其他博客文章以及mysql5.1的参考手册 mysql测试版本:mysql5.5.28 mysql物理存储文件(有mysql配置的datadir决定存储路径)格式简介 数据库engine为MYISAM frm表结构文件,myd表数据文件,myi表索引文件。 INNODB engine对应的表物理存储文件 innodb的数据库的物理文件结构为: .frm文件 .ibd文件和.ibdata文件: 这两种文件都是存放innodb数据的文件,之所以用两种文件来存放innodb的数据,是因为innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是用独享表空间存放存储数据。 独享表空间存储方式使用.ibd文件,并且每个表一个ibd文件 共享表空间存储方式使用.ibdata文件,所有表共同使用一个ibdata文件 创建分区 分区的一些优点包括: · 与单个磁盘或文件系统分区相比,可以存储更多的数据。 · 对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。相反地,在某些情况下,添加新数据的过程又可以通过为那些新数据专门增加一个新的分区,来很方便地实现。 通常和分区有关的其他优点包括下面列出的这些。MySQL 分区中的这些功能目前还没有实现,但是在我们的优先级列表中,具有高的优先级;我们希望在5.1的生产版本中,能包括这些功能。 · 一些查询可以得到极大的优化,这主要是借助于满足一个给定WHERE 语句的数据可以只保存在一个或多个分区内,这样在查找时就不用查找其他剩余的分区。因为分区可以在创建了分区表后进行修改,所以在第一次配置分区方案时还不曾这么做时,可以重新组织数据,来提高那些常用查询的效率。 ·? 涉及到例如SUM() 和 COUNT()这样聚合函数的查询,可以很容易地进行并行处理。这种查询的一个简单例子如 “SELECT salesperson_id, COUNT(orders) as order_total FROM sales GROUP BY salesperson_id;”。通过“并行”, 这意味着该查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果。 ·?? 通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量。 简而言之就是 数据管理优化,查询更快,数据查询并行 检测mysql是否支持分区 复制代码代码如下: mysql show variables like %partition%; +-------------------+-------+ | Variable_name?? | Value | +-------------------+-------+ | have_partitioning | YES? | +-------------------+-------+ 1 row in set RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区。 复制代码代码如下: DROP TABLE IF EXISTS `p_range`; CREATE TABLE `p_range` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 /*!50100 PARTITION BY RANGE (id) (PARTITION p0 VALUES LESS THAN (8) ENGINE = MyISAM) */; range分区就是 partition by range(id) 表示按id 1-7的数据存储在p0分区;如果id大于7了则数据不能写入了,因为没有对应的数据分区来存储; 所以这时在创建分区时需要使用maxvalues关键字了 复制代码代码如下: PARTITION BY RANGE (id) ( PARTITION p0 VALUES LESS THAN (8), PARTITION p1 VALUES LESS THAN MAXVALUE) 这样就表示,所有id大于7的数据记录存在在p1分区里。 RANGE分区在如下场合特别有用: ·

文档评论(0)

4753333 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档