项目中有一部分需要用到8位不重复的随机整数,即有1到99999999种可能,即1亿个可能。这可是一个不小的数据量。那要怎么去实现呢?
1、尝试使用Access
在看到这个需求时,第一反应就是使用数据库。但是客户又要求不能使用SQL等数据库,于是又换了个思路,既然不能使用SQL,那使用Access来替换
不就可以了吗?
于是想着在程序中产生随机数,并将其与数据库中已经使用的随机数进行比对,如果不存在,则使用该随机数,并且插入到数据库中。基于这个想法
,做了个简单的测试。当数据量达到百万级时,运行速度明显变量,当达到千万级时,更是慢之又慢,而项目中随机数的使用频率,最快时一秒中可在达到5到8个,这明显满足不了需求。
再网上查了下资料,有说到当Access达到64M时,效率会明显降低,而1亿个随机数,按8个字节一个也有760几M,虽然可以通过设置,将Access设置到2G,但效率低了,无法满足要求。
使用Access的尝试失败。
2、尝试使用SQL
在使用Access测试时,发现CPU和内存的消耗居高不下,于是就想着这应该是频繁的查找和插入造成的,如果可以避开这一步,那是不是就能提高效率了呢?有了这个思路,又遇到新的问题。那如果不在程序中动态生成随机数,不就得预先生成一个随机数的字典,然后不断的去读取吗?那这个随机数的字典要如何去产生呢?这时想到了SQL。
1、尝试使用Access
在看到这个需求时,第一反应就是使用数据库。但是客户又要求不能使用SQL等数据库,于是又换了个思路,既然不能使用SQL,那使用Access来替换
不就可以了吗?
于是想着在程序中产生随机数,并将其与数据库中已经使用的随机数进行比对,如果不存在,则使用该随机数,并且插入到数据库中。基于这个想法
,做了个简单的测试。当数据量达到百万级时,运行速度明显变量,当达到千万级时,更是慢之又慢,而项目中随机数的使用频率,最快时一秒中可在达到5到8个,这明显满足不了需求。
再网上查了下资料,有说到当Access达到64M时,效率会明显降低,而1亿个随机数,按8个字节一个也有760几M,虽然可以通过设置,将Access设置到2G,但效率低了,无法满足要求。
使用Access的尝试失败。
2、尝试使用SQL
在使用Access测试时,发现CPU和内存的消耗居高不下,于是就想着这应该是频繁的查找和插入造成的,如果可以避开这一步,那是不是就能提高效率了呢?有了这个思路,又遇到新的问题。那如果不在程序中动态生成随机数,不就得预先生成一个随机数的字典,然后不断的去读取吗?那这个随机数的字典要如何去产生呢?这时想到了SQL。
虽然项目中提到不