You are viewing a plain text version of this content. The canonical link for it is here.
Posted to docs-cvs@perl.apache.org by pe...@apache.org on 2004/07/04 06:16:31 UTC

cvs commit: modperl-docs/src/docs/1.0/guide databases.pod

perrin      2004/07/03 21:16:30

  Modified:    src/docs/1.0/guide databases.pod
  Log:
  Added note about issues with InnoDB tables and default isolation level
  
  Revision  Changes    Path
  1.10      +22 -0     modperl-docs/src/docs/1.0/guide/databases.pod
  
  Index: databases.pod
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/databases.pod,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- databases.pod	9 May 2002 10:34:43 -0000	1.9
  +++ databases.pod	4 Jul 2004 04:16:30 -0000	1.10
  @@ -438,6 +438,28 @@
   This can tie up the server and prevent other threads from updating the
   tables.
   
  +=head1 Transactions Not Committed with MySQL InnoDB Tables
  +
  +Sometimes, when using MySQL's InnoDB table type, you may notice that
  +changes you committed in one process don't seem to be visible to other
  +processes.  You may not be aware that InnoDB tables use a default
  +approach to transactions that is actually more cautious than PostgreSQL
  +or Oracle's default.  It's called "repeatable read", and the gist of
  +it is that you don't see updates made in other processes since your
  +last commit.  There is an explanation of this here:
  +http://dev.mysql.com/doc/mysql/en/InnoDB_Consistent_read_example.html
  +
  +This is actually not directly related to mod_perl, but you wouldn't
  +notice this issue when using CGI because reconecting to the database on
  +each request resets things just as doing a commit does.  It is the
  +persistent connections used with mod_perl that make this issue visible.
  +
  +If you suspect this is causing you problems, the simplest way to
  +deal with it is to change the isolation level to "read committed" --
  +which is more like what PostgreSQL and Oracle do by default -- with
  +the "set transaction" command, described here:
  +http://dev.mysql.com/doc/mysql/en/InnoDB_transaction_isolation.html
  +
   =head1 Optimize: Run Two SQL Engine Servers
   
   Sometimes you end up running many databases on the same machine. These
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: docs-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-cvs-help@perl.apache.org