Hi!

>>>>> "Peter" == Peter Zaitsev <[EMAIL PROTECTED]> writes:

Peter> Hello mysql,
Peter>   1) Today I tried to reload my tables with backuing up and recovering
Peter>   whole database by mysqldump - it seems like it does not work -
Peter>   mysqld crashed during loading data back even after I've removed all
Peter>   bad tables and bdb logs to have a clean system.

Peter>   This looks like the same problem as I reported with insert test -
Peter>   BDB hanges/crashes during huge multiple insert queries.
Peter>   I've uploaded the mysqldump output wich crashes mysqld during load
Peter>   to the secret directory as layers_la00.sql.gz.
Peter>   The thing is after I've dumped the same data without the extended
Peter>   insert I could load it back without any problems.

I will look at this as after the weekend.

Peter>   2) Then I was loading the data from .sql file I saw the followings:

Peter> onyx:/spylog/db # mysqladmin processlist | grep -v Sleep
Peter> 
+-----+-------+------------+-------------+------------+------+-------------------+------------------------------------------------------------------------------------------------------+
Peter> | Id  | User  | Host       | db          | Command    | Time | State            
 | Info                                                                                
                 |
Peter> 
+-----+-------+------------+-------------+------------+------+-------------------+------------------------------------------------------------------------------------------------------+
Peter> | 34  | root  | localhost  | la00        | Field List | 494  | Repair by 
sorting |                                                                              
                        |
Peter> | 36  | root  | localhost  | lacontrol   | Query      | 64   | System lock      
 | insert into layers_la00.g00keywords (counter_id,keyword) values (106339,'RSBAC')    
                 |
Peter> | 38  | root  | localhost  | la00        | Field List | 468  | Waiting for 
table |                                                                                
                      |
Peter> | 39  | root  | localhost  | layers_la00 | Query      | 0    | update           
 | INSERT INTO g03dirs VALUES (110912,8288,'pictures/company/itartass/calendar')       
                 |
Peter> | 81  | root  | localhost  | la00        | Field List | 296  | Waiting for 
table |                                                                                
                      |
Peter> | 121 | titan | php.local  | counter     | Query      | 5    | System lock      
 | SELECT lsh.begin AS period, sh.hosts7d,sh.visitors7d
Peter>                                  FROM layers_la00.g00layers_stat_hits AS ls |
Peter> | 125 | root  | localhost  |             | Query      | 0    |                  
 | show processlist                                                                    
                 |
Peter> 
+-----+-------+------------+-------------+------------+------+-------------------+------------------------------------------------------------------------------------------------------+

Peter> as you see here one thread is doing repear as this happened after
Peter> mysqld crash, but note first insert query in system lock state (I've
Peter> saw several queries at this place, but all of them spent in system
Peter> lock time several tenths of seconds) this can nothing to do with
Peter> recovery (this table was just created by mysqldump couple of minutes
Peter> before) - I habe the only explanation which looks ok the  system lock
Peter> takes place while many inserts are going to othe table (g03dirs) - as
Peter> soon as the table changed all other queries which was in system lock
Peter> state got a chance to run. The other thing is mysqldump does not uses
Peter> lock tables to insert data so this looks like real perfomance
Peter> (concurency) problem Some
Peter> more examples:

The "System Lock" means that you got some problem with fnctl() on your
system.

The fix is to restart mysqld with --skip-locking and without
--enable-locking to ensure that fcntl() lock is not used.

If you are using 'mysqldump --opt', it should generate locks for the
tables.  What command did you use ?

Peter> onyx:/spylog/db # mysqladmin processlist | grep -v Sleep
Peter> 
+-----+-------+------------+-------------+---------+------+--------+------------------------------------------------------------------------------------------------------+
Peter> | Id  | User  | Host       | db          | Command | Time | State  | Info       
                                                                                       
   |
Peter> 
+-----+-------+------------+-------------+---------+------+--------+------------------------------------------------------------------------------------------------------+
Peter> | 36  | root  | localhost  | lacontrol   | Query   | 384  | update | replace 
into layers_la00.g00stat_404refs (layer_id,id,visitors,loads,hits) values
Peter> (2,2,0,4,0),
Peter> (2,9, |
Peter> | 39  | root  | localhost  | layers_la00 | Query   | 0    | update | INSERT 
INTO g03stat_404pages VALUES (149,1563,0,1,0)                                          
       |
Peter> | 272 | root  | localhost  |             | Query   | 0    |        | show 
processlist                                                                            
         |
Peter> 
+-----+-------+------------+-------------+---------+------+--------+------------------------------------------------------------------------------------------------------+

Peter> as you see here replace is "hanged" - it's simple query wich should
Peter> not take so long. But just few seconds after:

Do you know if some other thread was using the table at this point ?

Peter> onyx:/spylog/db # mysqladmin processlist | grep -v Sleep
Peter> 
+-----+-------+------------+-------------+---------+------+-------------+------------------------------------------------------------------------------------------------------+
Peter> | Id  | User  | Host       | db          | Command | Time | State       | Info  
                                                                                       
        |
Peter> 
+-----+-------+------------+-------------+---------+------+-------------+------------------------------------------------------------------------------------------------------+
Peter> | 36  | root  | localhost  | lacontrol   | Query   | 16   | update      | 
replace into layers_la00.g00stat_enterpages (layer_id,id,hits,loads) values
Peter> (2,2048,2,2),
Peter> (2,1,60,60 |
Peter> | 39  | root  | localhost  | layers_la00 | Query   | 0    | update      | 
INSERT INTO g03stat_404refs VALUES (6,76851,0,1,0)                                     
              |
Peter> | 271 | titan | mail.local | counter     | Query   | 1    | System lock | select
Peter>               visitors,
Peter>               visitors7d,
Peter>               visitors30d,
Peter>              |
Peter> | 273 | root  | localhost  |             | Query   | 0    |             | show 
processlist                                                                            
         |
Peter> 
+-----+-------+------------+-------------+---------+------+-------------+------------------------------------------------------------------------------------------------------+


Peter> As you see here the mysqldump moved to loading other table and the
Peter> replace passed, and now the other replace is waiting for insert.  And
Peter> so on the thing continues with each table.

Ok, I see what you mean.  This looks VERY strange.

This could be a thread concurrency problem;
Do you use our patched glibc on your machine ?
Is the table you are inserting into a BDB table or a MyISAM table ?
Is g03stat_404refs a MyISAM or a BDB table ?

Peter> This does not only touches update queries but the simple one also:

mysql> select count(*) from layers_la00.g00dirs;
Peter> +----------+
Peter> | count(*) |
Peter> +----------+
Peter> |        0 |
Peter> +----------+
Peter> 1 row in set (32.08 sec)

Peter> this also affects all tables  - I just tried to check this with newly
Peter> created table in other database:

mysql> create table z (z int) type=BDB;
Peter> Query OK, 0 rows affected (0.90 sec)

mysql> select count(*) from z;
Peter> +----------+
Peter> | count(*) |
Peter> +----------+
Peter> |        0 |
Peter> +----------+
Peter> 1 row in set (0.03 sec)

mysql> select count(*) from z;
Peter> +----------+
Peter> | count(*) |
Peter> +----------+
Peter> |        0 |
Peter> +----------+
Peter> 1 row in set (20.08 sec)

Peter> Also I checked more and it seems like BDB lets other query to run not
Peter> only then last insert to the table completes, but sometimes more often
Peter> and sometimes more seldom...

Regards,
Monty


---------------------------------------------------------------------
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