一、分区概念 

分区是指允许根据指定的规则,跨文件系统分配单个表的多个部分。表的不同部分在不同的位置被存储为单独的表

通俗地讲表分区是将一大表,根据条件分割成若干个小表。数据库存存储的时候会存在多个文件中而对于程序或者数据库来说,依旧是一张表,就是将mysql相关的数据文件,分成了多个存储。 MYSQL 5.1之后支持分区】

如:某用户表的记录超过了1500万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区。当然也可根据其他的条件分区。 mysql含char类型单表不建议超过500万数据,标量类型不建议超过1000万】

 

二、为什么要对表进行分区
为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率。
分区的一些优点包括:
      1)、与单个磁盘或文件系统分区相比,可以存储更多的数据。
      2)、对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。相反地,在某些情况下,添加新数据的过程又可以通过为那些新数据专门增加一个新的分区,来很方便地实现。
      3)、一些查询可以得到极大的优化,这主要是借助于满足一个给定WHERE语句的数据可以只保存在一个或多个分区内,这样在查找时就不用查找其他剩余的分区。因为分区可以在创建了分区表后进行修改,所以在第一次配置分区方案时还不曾这么做时,可以重新组织数据,来提高那些常用查询的效率。
      4)、涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理。这种查询的一个简单例子如 “SELECT  COUNT (*) from user”。 并行这意味着该查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果
      5)、通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量。

三、mysql表文件说明:

 

mysql两种常用存储引擎myisam和innodb

myisam不支持事务;innodb支持事务

myisam的数据库的物理文件结构为:

.frm文件:与表相关的原始数据信息都存放在frm文件,包括表结构的定义信息等。各种存储引擎都需要frm文件,并且存放于数据库名目录下。

.myd文件:myisam存储引擎专用,用于存储myisam表的数据

.myi文件:myisam存储引擎专用,用于存储myisam表的索引相关信息

innodb的数据库的物理文件结构为:

.frm文件

.ibd文件和.ibdata文件:

这两种文件都是存放innodb数据的文件,之所以用两种文件来存放innodb的数据,是因为innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是用独享表空间存放存储数据。

独享表空间存储方式使用.ibd文件,并且每个表一个ibd文件

共享表空间存储方式使用.ibdata文件,所有表共同使用一个ibdata文件

关于共享表空间和独享表空间:http://www.linuxidc.com/Linux/2015-01/111241.htm