Postgre8.1 doesn't seem to support asynchronous I/O. Has its design been thought off already?
To tried doing with a simple example: For a Index Nest loop join: Fetch the outer tuples in an array, and then send all the corresponding inner-tuple fetch requests asynchronously. Hence while the IO is done for inner relation the new outer-tuple array can be populated and other join operations can happen. This is maximum overlap we could think of (doing minimal changes). [The current implementation does sync IO, that is it fetches a outer tuple, then requests corresponding inner tuple (waits till it gets), does the processing, get another inner/outer tuple and so on.] We have made appropriate changes in nodeNestloop.c but are unable to track down how it issues the IO and gets the tuple in the slot. Help! -- how to issue a async IO (given kernel 2.6 supports AIO), and does a callback sceme or a sync IO on top of AIO, which of these will be best? Also, as Graefe's paper suggests, a producer-consumer (thread-based) is the best way to do this. But how to implement threading? (in case its possible to?) Sincere regards, Raja Agrawal ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match