MySQL分区详解

        SQL标准在数据存储的物理方面没有提供太多的参考指南。SQL语言的使用是独立于它所使用的任何数据结构、图表、表、行或列下的物理介质。但是,大部分高级数据库管理系统已经开发了一些根据文件系统、硬件或者这两者来确定将要用于存储特定数据块物理位置的方法。在MySQL中,InnoDB存储引擎长期支持表空间的概念,并且MySQL甚至在分区引入之前,就能配置为存储不同的数据库使用不同的物理路径。

 

        分区又把这个概念推进了一步,它允许根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。用户所选择的、实现数据分割的规则被称为分区函数,这在MySQL中它可以是模数,或者是简单的匹配一个连续的数值区间或数值列表,或者是一个内部HASH函数,或一个线性HASH函数。函数根据用户指定的分区类型来选择,把用户提供的表达式的值作为参数。该表达式可以是一个整数列值,或一个作用在一个或多个列值上并返回一个整数的函数。这个表达式的值传递给分区函数,分区函数返回一个表示那个特定记录应该保存在哪个分区的序号。这个函数不能是常数,也不能是任意数。它不能包含任何查询,但是实际上可以使用MySQL中任何可用的SQL表达式,只要该表达式返回一个小于MAXVALUE(最大可能的正整数)的正数值。

 

        对于创建了分区的表,可以使用你的MySQL所支持的任何存储引擎;MySQL分区引擎在一个单独的层中运行,并且可以和任何这样的层进行相互作用。在MySQL5.1版中,同一个分区表的所有分区必须使用同一个存储引擎;例如,不能对一个分区使用MyISAM,而对另一个使用InnoDB。但是,这并不妨碍在同一个MySQL中,甚至在同一个数据库中,对于不同的分区表使用不同的存储引擎。

 

来源:http://www.bug315.com/article/15.htm

 

相关阅读:

    MySQL数据库分区简介(一)

    MySQL数据库分区range分区(二)

    MySQL数据库分区 list分区(三)

    MySQL数据库分区hash分区(四)

    MySQL数据库分区 linear hash分区(五)

 

 

 

 

 

 

猜你喜欢

转载自loginleft.iteye.com/blog/2176944