索引的优化,属于逻辑的优化,但是数据大后维护成本高。
物理上:通过水平分表,垂直分表;
但水平分表在逻辑上增加sql维护 修改的难度。
维护代价过高,按照某种hash算法进行拆分,简单的拆分模式如取模方式。
分区技术从mysql5.1以后以插件技术,有力避免如上的弊端,成为解决海量数据存储的有力方法。
物理上做了切分,逻辑上表明保持不变。
5.1后甲骨文添加的
分区时在逻辑层进行的水平分表,对与应用程序而言他还是一张表。
5种分区类型
a RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。
b LIST分区: 类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值结合中的某个值来进行选择。
c HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算,这个函
数可以包含MYSQL中有效的,产生非负整数值的任何表达式。(经常用来做分区测试)
d KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且mysql服务器提供其自身的哈希函数。