Lopez David E-r9374c writes:
> Monty
> 
> BTW, it's a thrill to hear from the CTO.
> 
> The procedure for locking a table is more complex but will
> attempt to describe it further for you. Any of the 150 daemons
> can insert to the hash tables. The data in the row can be used
> by all 150 daemons. The primary key in hash table is the 
> "id" field which is an auto-increment type. This "id" field
> is the hash value inserted in the main table as foreign key.
> 
> When a daemon starts up, it reads the hash table with each
> entry a key-value pair. The value is the "id" field. During
> the course of logging info to the main table, it may find
> an entry that is not in it's local hash in RAM. When this 
> occurs, it does a sql select on the hash. If a row is returned,
> it will insert the key-value pair into the it's hash and 
> insert an entry into the main table. 
> 
> If no row is returned, then the following happens:
>   1) lock table ...
>   2) select ...
>   3) if no row is returned, 
>   4)    insert ...
>   5)    use LAST_INSERT_ID() to get the value of the key
>   6) else get the key-value pair
>   7) unlock table
>   8) put key-value pair in RAM hash
>   9) insert row in main table (using new key-value pair)
> 
> Since >99% of the time, the data hash table information is
> already stored in the daemon hash table on initial start up.
> We wanted to lock the table so two different daemons would
> not enter the same information in the hash tables. Extremely
> unlikely, but the boss is paranoid. Or is it more experienced.
> 
> Hope that clears the insertion process on the hash tables. I'm
> glad that if a connection is lost in steps 2-6, mysql would
> automatically unlock the tables. That will satisfy the db
> specification nicely. The architecture for our db came
> from the optimization chapter in the manual. Thanks!
> 
> David
> 

Hi!

Still , locking a table is not necessary  as MySQL server remembers
LAST_INSERT_ID() value, for each connection (thread) separately.

Simply, this value is not (only) remembered on per-table basis, but
also for each thread (connection) separately.


-- 
Regards,
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Mr. Sinisa Milivojevic <[EMAIL PROTECTED]>
 / /|_/ / // /\ \/ /_/ / /__   MySQL AB, Fulltime Developer
/_/  /_/\_, /___/\___\_\___/   Larnaca, Cyprus
       <___/   www.mysql.com


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to