创建
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()
这样聚合函数的查询,可以很容易地进行并行处理。这种查询的一个简单例子如
“SE
LECT
salesperson_id,
COUNT(orders)
as
order_total
FROM
sales
GROUP
BY
salesperson_id
;
”
。通过
“
并行
”
,
这意
味着该查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果。
·
通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量。
简而言之就是
数据管理优化,查询更快,数据查询并行