Slow Azure Table Search and Insert Operations on small tables -
i trying benchmark search/read & insert queries on ats small size(500 entities). average insert time 400ms , average search + retrieve time 190ms.
when inserting, querying on partition key , condition composed of 1 predicate : [partitionkey] eq <value>
(no more ands/ors). also, returning 1 property.
what reason such results?
search code:
tablequery<dynamictableentity> projectionquery = new tablequery<dynamictableentity>().select(new string[] { "state" }); projectionquery.where(tablequery.generatefiltercondition("partitionkey", querycomparisons.equal, "" + msg.partitionkey)); // define entity resolver work entity after retrieval. entityresolver<bool?> resolver = (pk, rk, ts, props, etag) => props.containskey("state") ? (props["state"].booleanvalue) : null; stopwatch sw = new stopwatch(); sw.start(); list<bool?> slist = table.executequery(projectionquery, resolver, null, null).tolist(); sw.stop();
insert code:
cloudtable table = tableclient.gettablereference("messages"); tableoperation insertoperation = tableoperation.insert(msg); stopwatch sw = new stopwatch(); // execute insert operation. sw.start(); table.execute(insertoperation); sw.stop();
you can refer post possible performance issues: microsoft azure storage performance , scalability checklist.
the reason why can 1 property you're using entityresolver, please try remove that. refer windows azure storage client library 2.0 tables deep dive usage of entityresolver - when should use , how use correctly.
Comments
Post a Comment