性能测试小白认识UUID的第一天

今天在做性能测试时,突然发现,压测过去的数据,好多都出现了 log_id重复的问题, 之前也都没有遇到过,之前的log_id都是用System.currentTimeMillis()+""来直接生成的,想着生成的时间戳都是毫秒级别的,不会出现完全相同的情况,就算是并发,100以内的并发量并不大额

可是,重复的数据还是产生了,就10个并发都会产生相同的时间戳,BeanShell PreProcessor难道是同一时刻执行的,对于jmeter中如何调用java的jvm来执行脚本,原理不是很清楚,求大神指点。。。。。。。

然后从同事介绍哪里,知道了UUID这个强大的工具,原来java还有这个工具,直接在BeanShell PreProcessor中加上这个,就可以直接生成log_id了,太神奇了,

String Str1=UUID.randomUUID().toString().replace("-", "");

通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准,亦为自由软件基金会组织在分散式计算环境领域的一部份。UUID的目的,是让分散式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定,如此一来,每个人都可以创建不与其它人冲突的UUID,每一毫秒内都能生成无穷多的不同的串
一组UUID,是由一串16位组(亦称128位)的16进位数字所构成,是故UUID理论上的总数为216 x 8=2128,约等于3.4 x 1038。也就是说若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完(完全不用考虑数据量的多少)所以无需考虑它的重复性,这真是java之光(⊙o⊙)…

 

同样的应用在MySQL中也可以直接使用,主要是用于生成数据插入到表中,比如常见的ID字段

SELECT UUID_SHORT();//生成17位数字组成的唯一id值,【长度为:(0 ~ 2^64-1) 10^19 20位数字】长度不固定,根据不同的mysqld服务来决定
SELECT UUID();//生成类似于这样的28c18005-afdb-11eb-871c-0242ac100003数字值

UUID_SHORT()

“ 短 ”通用标识符作为64位无符号整数返回。返回的值 UUID_SHORT()与UUID()函数返回的字符串格式128位标识符 不同,并且具有不同的唯一性属性。UUID_SHORT()如果满足以下条件,则保证值 是唯一的:

  1. 在server_id当前服务器的值介于0和255之间,您的设置主从服务器中是唯一的
  2. 您不会在mysqld restarts 之间设置服务器主机的系统时间
  3. UUID_SHORT()在mysqld重启 之间, 你平均每秒调用的次数少于1600万次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值