程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 VARCHAR 字段按 HASH 分区大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 VARCHAR 字段按 HASH 分区?

开发过程中遇到使用 VARCHAR 字段按 HASH 分区的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 VARCHAR 字段按 HASH 分区的解决方法建议,希望对你解决使用 VARCHAR 字段按 HASH 分区有所启发或帮助;

在给定的表中,我尝试应用分区方案,其中使用的字段是 VARCHAR (23),类似于 GuID。

例如:5cb4932bfbca0c0010343e68

这个想法是使用哈希分区创建 4 个分区。为此,我相信您必须使用一些函数将字段转换为始终适合分区子句的值,我不知道这在 MysqL 中是否可行。

create table myTable (
  ID char(36) NOT NulL,APIID varchar(23) NOT NulL,Classification int(11) NOT NulL,primary key (id)
)
PARTITION BY HASH(APIID)
PARTITIONS 4;

解决方法

是的,您需要提供一个返回整数的散列函数。从HASH partitioning...

要使用 HASH 分区对表进行分区,需要在 create table 语句后附加一个 PARTITION BY HASH (expr) 子句,其中 expr 是一个返回整数的表达式。

最简单的解决方案是将您的 ID 存储为整数,并根据需要将其转换为十六进制字符串。这比存储 varchar 更快并且使用更少的内存。

不幸的是,您的 ID 也太大而无法放入 bigint。它大约是 92 位。相反,使用 varbinary(12)(对于 128 位 UUID 使用 varbinary(16))。

然后您需要编写一个散列函数将该 varbinary 值转换为整数以进行散列。不幸的是,我不知道如何在 MySQL 中做到这一点。

大佬总结

以上是大佬教程为你收集整理的使用 VARCHAR 字段按 HASH 分区全部内容,希望文章能够帮你解决使用 VARCHAR 字段按 HASH 分区所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。