The session machinery takes care of providing you with one connection per thread; since you can only execute sequential code within one thread that connection cannot become a bottleneck.
Different parts of the code can request their own session; the session machinery will reuse session connections as required. This is not something you generally have to worry about, that's all handled for you by z3c.saconfig
and its dependencies.