SQL标准没有提供太多有关数据存储物理方面的指导。SQL语言本身旨在独立于与其配合使用的模式,表,行或列基础的任何数据结构或媒体。尽管如此,大多数先进的数据库管理系统已经发展了一些方法来确定要用于存储特定数据的物理位置的文件系统,硬件或什至两者。在MySQL中, InnoDB存储引擎长期以来一直支持表空间的概念(请参见第15.6.3节“表空间”),甚至可以在引入分区之前将MySQL Server配置为使用不同的物理目录来存储不同的数据库(有关如何完成此操作的信息,请参见 第8.12.2节“使用符号链接”)。
分区使您可以根据需要在很大程度上设置的规则在文件系统中分布各个表的各个部分,从而使这一概念更进一步。实际上,表的不同部分作为单独的表存储在不同的位置。用户选择的用来完成数据划分的规则称为分区功能,在MySQL中可以是模数,与一组范围或值列表的简单匹配,内部哈希函数或线性哈希函数。该函数根据用户指定的分区类型进行选择,并将用户提供的表达式的值作为其参数。此表达式可以是列值,作用于一个或多个列值的函数或一组一个或多个列值,具体取决于所使用的分区类型。
在,,和[ ] 分区的情况下RANGE,分区列的值传递给分区函数,该函数返回一个整数值,该整数值表示应在其中存储该特定记录的分区号。此函数必须是非恒定且非随机的。它可能不包含任何查询,但可以使用在MySQL中有效的SQL表达式,只要该表达式返回或一个整数 ,使得 LISTLINEARHASHNULLintval
-MAXVALUE <= intval <= MAXVALUE
(MAXVALUE用于表示所讨论整数类型的最小上限。 -MAXVALUE表示最大下限。)
对于[ LINEAR] KEY, RANG