I wonder if anyone can shed some light on the Apache Ignite performance I am seeing.
I am running a single node & have a very simple CacheConfiguration consisting of 4 fields. The program is very much like the put-get-example code shipped with Ignite & I am doing a few tests to see how fast (how many transactions per second) I can read & write data to the cache. 1: Just incrementing the key and doing ignite::cache::Cache::Put(key, dataObject) I can push 100K entries in the cache at about 12K TPS 2: Doing the same for ignite::cache::Cache::Get(key) yields 150K TPS 3: I then use a ignite::cache::query::SqlFieldsQuery & ignite::cache::query::QueryFieldsCursor to do "SELECT A, B, C, D FROM MyCache WHERE _key = ?" Only doing cursor.isValid() && cursor.hasNext() yields 26K TPS 4: The last test I do is as above, but instead of the where clause being '_key = ?' .. I change this to 'A=?'. In other words I use one of the fields as a select criteria. I only get a shocking 20 TPS. Having an index on field A makes no difference. The size of the cache does - when I reduce that to a handful of entries that last rate will go up to about 2K TPS. My questions: - There seems to be a big difference between Put & Get .. is that normal? - There is also big difference between scenario 2 & 3 whilst they are essentially doing the same thing .. why is SQL having so much overhead? And example 3 doesn't even parse the columns out of the cursor whereas example 2 gives me all 4 columns for the key. - And most importantly - why the shocking performance in scenario 4? Thanks -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/
