[Logo] Terracotta Discussion Forums (LEGACY READ-ONLY ARCHIVE)
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
[Expert]
Messages posted by: lijie  XML
Profile for lijie -> Messages posted by lijie [19] Go to Page: Previous  1, 2
Author Message
I use Aggregators.count() to get the total count. But when I set maxResults(1000), the Aggregators.count() result is 1000.
How can I get the 1000 results and total count in one query?
Thanks.
Thanks for your continuous feedback.

Now,I use Aggregators.count() to get the total count. But when I set maxResults(1000), the Aggregators.count() result is 1000.
So I must query twice, first get 1000, another get total count. Am I right?

Another problem: from the results we can see that the first time runs slowly and speeds up after the first time, How can we speed up the first time? Thanks.
Hi fsanglie,
Thanks for your reply.
Your suggestion is right. I have corrected it in my program and the result is very good.

First:
I set the searchable key and value to false:
Searchable searchable = new Searchable();
searchable.setValues(false);
searchable.setKeys(false);
...

and set Query includeKeys and not include the attributes
Query q = c.createQuery();
q.includeKeys();
// q.includeAttribute(create_time);
// q.includeAttribute(city_name);
...

Before the modified, the result:

one thread run ten times
all files read ok, cache.size = 3800000, load cost : 263126
test single search begin...
test single search end , get size 1413027, cost = 13485ms
test single search begin...
test single search end , get size 1413027, cost = 9917ms
test single search begin...
test single search end , get size 1413027, cost = 9267ms
test single search begin...
test single search end , get size 1413027, cost = 9860ms
test single search begin...
test single search end , get size 1413027, cost = 9486ms
test single search begin...
test single search end , get size 1413027, cost = 9571ms
test single search begin...
test single search end , get size 1413027, cost = 9971ms
test single search begin...
test single search end , get size 1413027, cost = 9328ms
test single search begin...
test single search end , get size 1413027, cost = 9595ms
test single search begin...
test single search end , get size 1413027, cost = 9490ms

ten threads run two times:
1st:
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search end , get size 1413027, cost = 66809ms
test single search end , get size 1413027, cost = 97113ms
test single search end , get size 1413027, cost = 97236ms
test single search end , get size 1413027, cost = 97409ms
test single search end , get size 1413027, cost = 99018ms
test single search end , get size 1413027, cost = 99113ms
test single search end , get size 1413027, cost = 99913ms
test single search end , get size 1413027, cost = 112448ms
test single search end , get size 1413027, cost = 112626ms
test single search end , get size 1413027, cost = 113010ms

2nd
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search end , get size 1413027, cost = 73104ms
test single search end , get size 1413027, cost = 77687ms
test single search end , get size 1413027, cost = 78873ms
test single search end , get size 1413027, cost = 79579ms
test single search end , get size 1413027, cost = 101143ms
test single search end , get size 1413027, cost = 101746ms
test single search end , get size 1413027, cost = 102060ms
test single search end , get size 1413027, cost = 102701ms
test single search end , get size 1413027, cost = 104664ms
test single search end , get size 1413027, cost = 104890ms


After modified, the result:
one thread run ten times
all files read ok, cache.size = 3800000, load cost : 257511
test single search begin...
test single search end , get size 1413027, cost = 10399ms
test single search begin...
test single search end , get size 1413027, cost = 8724ms
test single search begin...
test single search end , get size 1413027, cost = 7747ms
test single search begin...
test single search end , get size 1413027, cost = 8175ms
test single search begin...
test single search end , get size 1413027, cost = 8351ms
test single search begin...
test single search end , get size 1413027, cost = 8057ms
test single search begin...
test single search end , get size 1413027, cost = 8063ms
test single search begin...
test single search end , get size 1413027, cost = 8171ms
test single search begin...
test single search end , get size 1413027, cost = 8249ms
test single search begin...
test single search end , get size 1413027, cost = 7847ms

ten thread run two times
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search end , get size 1413027, cost = 59172ms
test single search end , get size 1413027, cost = 60496ms
test single search end , get size 1413027, cost = 60529ms
test single search end , get size 1413027, cost = 60635ms
test single search end , get size 1413027, cost = 60662ms
test single search end , get size 1413027, cost = 60675ms
test single search end , get size 1413027, cost = 63177ms
test single search end , get size 1413027, cost = 63374ms
test single search end , get size 1413027, cost = 63476ms
test single search end , get size 1413027, cost = 63552ms

test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search end , get size 1413027, cost = 47183ms
test single search end , get size 1413027, cost = 49401ms
test single search end , get size 1413027, cost = 49477ms
test single search end , get size 1413027, cost = 56388ms
test single search end , get size 1413027, cost = 57372ms
test single search end , get size 1413027, cost = 58469ms
test single search end , get size 1413027, cost = 58459ms
test single search end , get size 1413027, cost = 58749ms
test single search end , get size 1413027, cost = 61396ms
test single search end , get size 1413027, cost = 61543ms

I find the performce has improved, but also slowly. If we set query maxResults(1000), the result:
ont thread:
test single search begin...
test single search end , get size 1000, cost = 658ms
test single search begin...
test single search end , get size 1000, cost = 160ms
test single search begin...
test single search end , get size 1000, cost = 137ms
test single search begin...
test single search end , get size 1000, cost = 123ms
test single search begin...
test single search end , get size 1000, cost = 104ms
test single search begin...
test single search end , get size 1000, cost = 82ms
test single search begin...
test single search end , get size 1000, cost = 82ms
test single search begin...
test single search end , get size 1000, cost = 83ms
test single search begin...
test single search end , get size 1000, cost = 73ms
test single search begin...
test single search end , get size 1000, cost = 50ms


ten thread in parallel, the result:
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search end , get size 1000, cost = 241ms
test single search end , get size 1000, cost = 250ms
test single search end , get size 1000, cost = 258ms
test single search end , get size 1000, cost = 262ms
test single search end , get size 1000, cost = 332ms
test single search end , get size 1000, cost = 357ms
test single search end , get size 1000, cost = 358ms
test single search end , get size 1000, cost = 372ms
test single search end , get size 1000, cost = 396ms
test single search end , get size 1000, cost = 393ms

test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search end , get size 1000, cost = 193ms
test single search end , get size 1000, cost = 236ms
test single search end , get size 1000, cost = 273ms
test single search end , get size 1000, cost = 247ms
test single search end , get size 1000, cost = 272ms
test single search end , get size 1000, cost = 282ms
test single search end , get size 1000, cost = 293ms
test single search end , get size 1000, cost = 295ms
test single search end , get size 1000, cost = 493ms
test single search end , get size 1000, cost = 315ms

The last result is very good.

If I page the results, when user click page down, must we use query.maxResults(pageIndex * pageSize) to get the data ? Thanks.


We use bigmemory3.7 in linux.
Linux:
CentOS release 6.2

CPU:
4 * Intel(R) Xeon(R) CPU E5606 @ 2.13GHz

Mem:
32G

JDK:
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)

JAVA_OPTS = -Xms10240M -Xmx10240M -XX:MaxPermSize=512m -XX:MaxDirectMemorySize=13000m

Our scenario is :
the cache size is 3800000 objects, each object size is about 2K bytes.
cache initializas:
ccf = new CacheConfiguration();
ccf.setName(CACHE_NAME);
ccf.setMaxEntriesLocalHeap(5000);
ccf.setOverflowToOffHeap(Boolean.TRUE);
ccf.setMaxMemoryOffHeap("10240m");
Searchable searchable = new Searchable();
searchable.addSearchAttribute(new SearchAttribute().name("objectid"));
searchable.addSearchAttribute(new SearchAttribute().name("create_time"));
searchable.addSearchAttribute(new SearchAttribute().name("city_name"));
ccf.addSearchable(searchable);
cache = new Cache(ccf);
cm.addCache(cache);

the search likes :
logger.info("test single search begin...");
Attribute<Date> create_time = c.getSearchAttribute("create_time");
Attribute<String> city_name = c.getSearchAttribute("city_name");
Query q = c.createQuery();
q.includeAttribute(create_time);
q.includeAttribute(city_name);
Criteria c1 = city_name.eq("XXX").or(city_name.eq("YYY"));
q.addCriteria(c1).end();
long start = System.currentTimeMillis();
Results rs = q.execute();
long end = System.currentTimeMillis();
logger.info("test single search end , get size " + rs.size() + ", cost = " + (end - start) + "ms ");

one thread run ten times,the cost time is:
1 times
test single search begin...
test single search end , get size 1413027, cost = 33522ms
2 times
test single search begin...
test single search end , get size 1413027, cost = 6892ms
3 times
test single search begin...
test single search end , get size 1413027, cost = 4526ms
4 times
test single search begin...
test single search end , get size 1413027, cost = 6533ms
5 times
test single search begin...
test single search end , get size 1413027, cost = 3730ms
6 times
test single search begin...
test single search end , get size 1413027, cost = 3464ms
7 times
test single search begin...
test single search end , get size 1413027, cost = 12434ms
8 times
test single search begin...
test single search end , get size 1413027, cost = 4540ms
9 times
test single search begin...
test single search end , get size 1413027, cost = 3624ms
10 times
test single search begin...
test single search end , get size 1413027, cost = 3385ms

ten thread concurrent run, the cost time is :
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search begin...
test single search end , get size 1413027, cost = 37004ms
test single search end , get size 1413027, cost = 37012ms
test single search end , get size 1413027, cost = 38025ms
test single search end , get size 1413027, cost = 38370ms
test single search end , get size 1413027, cost = 38577ms
test single search end , get size 1413027, cost = 38760ms
test single search end , get size 1413027, cost = 46141ms
test single search end , get size 1413027, cost = 46179ms
test single search end , get size 1413027, cost = 46189ms
test single search end , get size 1413027, cost = 46205ms

The result is normal? Why the search in multithread cost too much? How can we optimize?

Thanks.
 
Profile for lijie -> Messages posted by lijie [19] Go to Page: Previous  1, 2
Go to:   
Powered by JForum 2.1.7 © JForum Team