Hi All,

 

I am analysing the monetdb memory access pattern to identify various strides in LLC accesses. But most of the accesses per object are being observed as non-strided which is not what I expected. As monetdb involves BATs and these are arrays so I was thinking that there would be more strided pattern rather than random accesses unless BAT arrays are being treated as trees and random access is being used to access the items. To understand it further, I have now retrieved the execution plan of TPCH Q1 and the plan has various segments like follows:

 

X_455:bat[:oid,:str]  := sql.bind(X_7,"sys","lineitem","l_linestatus",2,5,16);                                                             

X_1346 := algebra.kdifference(X_400,X_455);                                                                                                 

X_1379 := algebra.kunion(X_1346,X_455);                                                                                                    

X_1412 := algebra.leftjoin(X_1180,X_1379);                                                                                                  

(X_1452,X_1453) := group.multicolumns(X_1293,X_1412);                                                                                      

X_1514 := bat.mirror(X_1452);                                                                                                              

X_1516 := algebra.leftjoin(X_1514,X_1412);

 

I have two questions:

 

1)  As there are many repeated segments like above in whole query plan, so what is the context behind multiple repeated segments please.

2)  I want to understand what is the input to most common operators like leftjoin, kdifference, kunion and whether they process those inputs sequentially or randomly. What is the best way to get this understanding please? From the plan it is obvious that the input is the BAT(s), but how do the operators access the BAT is really a question.

 

Thanks for the help.

 

Kind Regards, Ahmad