On Tue, May 10, 2016 at 3:00 AM, konstantin knizhnik <k.knizh...@postgrespro.ru> wrote: > What's wrong with it that worker is blocked? You can just have more workers > (more than CPU cores) to let other of them continue to do useful work.
Not really. The workers are all running the same plan, so they'll all make the same decision about which node needs to be executed next. If that node can't accommodate multiple processes trying to execute it at the same time, it will have to block all of them but the first one. Adding more processes just increases the number of processes sitting around doing nothing. > But there are some researches, for example: > > http://www.vldb.org/pvldb/vol4/p539-neumann.pdf > > showing that the same or even better effect can be achieved by generation > native code for query execution plan (which is not so difficult now, thanks > to LLVM). > It eliminates interpretation overhead and increase cache locality. > I get similar results with my own experiments of accelerating SparkSQL. > Instead of native code generation I used conversion of query plans to C code > and experiment with different data representation. "Horisontal model" with > loading columns on demands shows better performance than columnar store. Yes, I think this approach should also be considered. > At this moment (February) them have implemented translation of only few > PostgreSQL operators used by ExecQuals and do not support aggregates. > Them get about 2 times increase of speed at synthetic queries and 25% > increase at TPC-H Q1 (for Q1 most critical is generation of native code for > aggregates, because ExecQual itself takes only 6% of time for this query). > Actually these 25% for Q1 were achieved not by using dynamic code > generation, but switching from PULL to PUSH model in executor. > It seems to be yet another interesting PostgreSQL executor transformation. > As far as I know, them are going to publish result of their work to open > source... Interesting. You may notice that in "asynchronous mode" my prototype works using a push model of sorts. Maybe that should be taken further. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (firstname.lastname@example.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers