机器配置64G内存,硬盘3T,作了RADIO5
关于数据库查询问题,独立模式部署,如何提高数据库模糊查询性能,单space,单集合,数据量有2.8亿条,并且对emailName字段建有索引,
执行查询时候,非常慢,相关代码如下:一般都是在统计总量的时候很慢,有啥改进方法了么?
1、是否单个集合不能超过一定的阀值?如1亿条
2、是否单个SPACE文件不能超过多少G?如40G
后端数据newMailMagicSpace大小如下:
-rw-r----- 1 sdbadmin sdbadmin_group 103234469888 Oct 20 21:15 newMailMagicSpace.1.data
-rw-r----- 1 sdbadmin sdbadmin_group 31289573376 Oct 20 21:15 newMailMagicSpace.1.idx
-rw-r----- 1 sdbadmin sdbadmin_group 38004654080 Oct 21 12:22 otherMagicSpace.1.data
-rw-r----- 1 sdbadmin sdbadmin_group 2566979584 Oct 21 12:22 otherMagicSpace.1.idx
其中2.8亿条数据,11个维度,导致newMailMagicSpace空间单个数据文件达100G,2个索引字段文件达到31G
有啥好的参考及说明么?
以下代码是数据模糊查询的API,很慢,
查询总数运行时间:564374ms
db = sdb.getCollectionSpace("newMailMagicSpace");
cl = db.getCollection("newemailCollection");
DBCursor cursor;
BSONObject queryCondition = new BasicBSONObject();
String dnsquery="13590280350";
Pattern pattern = Pattern.compile("^.*"+dnsquery+".*$", Pattern.CASE_INSENSITIVE);
// Pattern pattern = Pattern.compile("^.A"+dnsquery+".*$", Pattern.CASE_INSENSITIVE);
queryCondition.put("emailName",pattern);
///^A/
// queryCondition.put("emailName", dnsquery);
// queryCondition = (BSONObject) JSON.parse("({age:{$ne:20}})");
// 查询所有记录,并把查询结果放在游标对象中
cursor = cl.query(queryCondition, null, null, null, 0, 20);//-1表示所有
long startTime=System.currentTimeMillis();
long emailCount=cl.getCount(queryCondition);
System.out.println("tradeCount=="+emailCount);