Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: Multi Threaded server not working for many inserts?
andreyNSPAM_at_bookexchange.net (NetComrade) wrote
> Do you not agree that MTS adds an extra layer to query execution,
> therefore an extra layer of complexity, which usually means an extra
> piece to break.
I for one don't.
The only real difference is with the network interface. Instead of the dedicated server doing the read() of the packets, the dispatcher is. The request is then queued via a virtual circuit to the shared pool, where it is serviced by a shared server. Afterwards the results are send back via the dispacther to the client.
The code base of a shared server and a dedicated server is the same. The only real difference is who is doing the read() and send() of IP packets - the way the request is serviced remains exactly the same.
I've written my share of TCP/IP servers through the years (Unix and Windows) and last year designed and wrote one that used the exact same architecture as Oracle's MTS. It scaled very well as I was able on average to service 5 clients (sending 1 request every 10ms) with a single shared server thread (the real world clients btw only send on average of 1 request every 5 seconds). The only complexity is the network threads (aka dispatchers) interface with the shared pool as you need a mechanism for it to pass a request to an idle shared server thread. Oracle does it via a very well designed "virtual circuit" interface - mine was a bit clumsier than that (I serialised access via thread safe control & access lists), but it still worked fine. :-)
I fail to see why MTS is considered a problem - it is an extremely scalable architecture. And I have yet to run into any show stoppers with MTS that required me to trash it and revert to dedicated server mode instead.
-- BillyReceived on Fri Mar 19 2004 - 07:53:14 CST