|
|
|
|
|
by SigmundA
828 days ago
|
|
Since PG uses one process per connection and the LLVM JIT code is process specific the code can't be shared amongst all connections to the DB. Plans themselves suffer from this since they are in memory data structures not designed to be shared amongst different processes. DB's like MSSQL don't have this issue since they use a single process with threads which is also why it can handle more concurrent connections without an external pooler. Although MSSQL can also serialize plans to a non process specific representation and store them in the DB for things like plan locking. |
|
Oracle uses a process-per-connection model as well (at least on Linux), and they are able to share execution plans across connections. They put all the plans into the "global" shared memory.