前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用“COMB(Combine)”类型设计思路

使用“COMB(Combine)”类型设计思路

原创
作者头像
用户7705674
修改2021-10-08 15:06:45
3480
修改2021-10-08 15:06:45
举报
文章被收录于专栏:css小迷妹css小迷妹

使用“COMB(Combine)”类型   COMB数据类型的基本设计思路是这样的:既然UniqueIdentifier数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么我们能不能通过组合的方式,保留UniqueIdentifier的前10个字节,用后6个字节表示GUID生成的时间(DateTime),这样我们将时间信息与UniqueIdentifier组合起来,在保留UniqueIdentifier的唯一性的同时增加了有序性,以此来提高索引效率。也许有人会担心UniqueIdentifier减少到10字节会造成数据出现重复,其实不用担心,后6字节的时间精度可以达到1毫秒,时间4095年,两个COMB类型数据完全相同的可能性是在这1毫秒内生成的两个GUID前10个字节完全相同,这几乎是不可能的!注意这16字节转化为16进制再转化为字符串存储时也是32字节。   首先,MySQL时间戳timestamp是采用int存储,4个字节,最多32位,可以从1970年1月1日00:00:00一直到2037年,精度为一秒,其值作为数字显示。   下面说明:6个字节的时间精度问题,6字节共48位

  那么精度为毫秒,可以用4095年,算上0可以用4096年。 其实可以直接用System.currentTimeMillis()获取当前时间距离1970年1月1日0点0分0秒的毫秒数,然后转化为16进制,可以表示到10889年,

代码语言:javascript
复制
`import java.util.UUID;

/**
 * 
 * @author xie 由于randomUUID()方法生成的uuid除了4个版本位:49-52位,
 * 2个变体位(表示uuid的显示形式,即-在哪个位置,8-4-4-4-12 Java默认的,当然还有其他的形式):65-66位,
 * 都是为了随机而产生的比如,伪随机数,MAC地址等,我们替换第1-48位,保证主键尽量有序,还不删掉有用信息
 */
public class Main {
public static void main(String[] args) throws Exception {
	long nowTime = System.currentTimeMillis();
	System.out.println(nowTime + "");
	String uuid = UUID.randomUUID().toString().replaceAll("-", "");
	System.out.println(uuid + "");
	String now16 = Long.toHexString(nowTime);
	System.out.println(now16 + "");
	StringBuffer str = new StringBuffer(uuid);
	int length = now16.length();
	if (length <= 12) {
		str.replace(0, 12 - length, "0");
		System.out.println(str.replace(12 - length, 12, now16).toString());// 这么设定是为了生成的uuid字符串还是32字节
	} else {
		throw new Exception("时间超出10889年,请重新设计主键!");
	}
}

}`

索引的类型

索引是在存储引擎中实现的,而不是在服务器层中实现的。所以,每种存储引擎的索引都不一定完全相同,并不是所有的存储引擎都支持所有的索引类型。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 索引的类型
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档