I can not and will not make an absolute  recommendation  to keep or lose 
the mutex before I performed a full code review. IMHO, the final stages of 
a project is one of the worst times to be making this kind of decision as 
it could impact so much work already accomplished.

If you are certain that each connection can only be used by one 
thread/process at a time, then you should not need to synchronize 
(serialize) access to any connection. Connection pooling IS NOT connection 
sharing. 

It sounds to me that the previous version of your application shared a 
single connection between several threads and required a transaction-level 
mutex to ensure proper SQL command serialization.  You probably do not 
need that now as you are not _sharing_ a single common connection between 
more than one execution at a time. If you DO share a connection between 
two or more threads or processes, you will need to keep the mutex to keep 
one thread from clobbering the SQL being executed by the other.

Does MySQL or ODBC handle the mutex? No, that is part of your execution 
environment (usually handled by the OS). Will ODBC pool connections? Yes, 
if you allow it to do so.  MySQL keeps all connections separated from each 
other until the point data is committed to the database (transactional 
boundaries). How your application uses transactions is up to you. Under 
most circumstances, what one connection is doing is invisible to what 
another connection is doing up to the point at which one of them commits 
their changes to the database. Then those changes may, depending on your 
transaction isolation level, become instantly visible to the other 
connection or not.  As I said, it all depends.

If each thread/process establishes its own connection to the database 
server, you are in a situation (from the point of view of the database 
server) identical to what would be happening if all of your processes were 
connecting in from different physical machines. If you need a mutex to 
serialize access under that scenario, then you should keep it.

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine
 

<[EMAIL PROTECTED]> wrote on 08/30/2005 10:56:20 AM:

> 
> Hi Green,
> 
> 
> We are at the last stage of the project (migration from Oracle to
> MySQL). We are demanded to adopt the MYODBC as a customer requrement.
> As mutex was implemented for oracle so it is there in our code. Now we
> are thinking to remove that because application level we have connection
> id.
> So, please advise us in this case can we remove the mutex?.
> 
> 
> I beleive that in the ODBC and in MySQL mutex will be handled
> automatically, right?.
> 
> 
> 
> Regards
> Narasimha
> 

Reply via email to