相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.2 kb
手册页(邮政编码)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

24.2.4.1线性哈希分区

MySQL还支持线性哈希,它与常规哈希的不同之处在于,线性哈希利用的是线性的2次方算法,而常规哈希使用的是哈希函数值的模数。

在语法上,线性哈希分区与常规哈希之间的唯一区别是线性关键字的分区的子句,如下所示:

CREATE TABLE employees (id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT '1970-01-01', separated DATE NOT NULL DEFAULT ' 99999-12-31 ', job_code INT, store_id INT)

给定一个表达式expr,当使用线性哈希时,记录存储在其中的分区为分区号N全国矿工工会分区,N根据以下算法推导:

  1. 求大于2的下一个次幂全国矿工工会.我们称之为值V;它可以计算为:

    V=权力(2、天花板(日志(2)全国矿工工会)))

    (假设全国矿工工会是13岁。然后日志(13)是3.7004397181411。天花板(3.7004397181411)是4,V功率(2、4),等于16。)

  2. NFcolumn_list) & (V- 1)。

  3. N> =全国矿工工会

    • VV/ 2

    • NN& (V- 1)

假设这个表t1,使用线性哈希分区,有6个分区,使用以下语句创建:

CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR HASH(YEAR(col3))

现在假设您想要向其中插入两条记录t1col3列值“2003-04-14”而且“1998-10-19”.第一个分区的分区号确定如下:

V= power (2, ceiling (log (2,6))) = 8N= year ('2003-04-14') & (8 -1) = 2003 & 7 = 3 (3 >= 6为FALSE:记录存储在分区#3中

存储第二条记录的分区编号计算如下所示:

V= 8N= year ('1998-10-19') & (8 -1) = 1998 & 7 = 6 (6 >= 6为TRUE:需要额外的步骤N= 6 & ((8 / 2) - 1) = 6 & 3 = 2 (2 >= 6为FALSE:记录存储在分区#2中

使用线性散列进行分区的优点是,分区的添加、删除、合并和分割速度大大提高,这在处理包含大量(tb)数据的表时非常有益。缺点是,与使用常规哈希分区获得的分布相比,数据不太可能均匀地分布在分区之间。