InnoDB tables : difficulties with COUNT(*), DELETE etc ...

2001-09-10 Thread BAUMEISTER Alexandre

Bonjour,

  I have a table created with :

CREATE TABLE mybuffer_NAS_D (
  id int(10) unsigned NOT NULL auto_increment,
  service varchar(10) NOT NULL default '',
  date datetime NOT NULL default '-00-00 00:00:00',
  data text,
  PRIMARY KEY  (id),
  KEY id_date (date)
) TYPE=InnoDB;  

  There  are  many  rows in it. And InnoDB take a VERY long time to do
  count(*) :(

mysql select count(*) from mybuffer_NAS_D;
+--+
| count(*) |
+--+
|  4611891 |
+--+
1 row in set (1 min 34.71 sec)

  If  I  select 100 first rows ordered by 'date asc', I see that there
  are less than 100 lines with date'2001-08-16 00:00:00'.
  
mysql select * from mybuffer_NAS_D order by date asc limit 100;
+--+-+-+--+
| id   | service | date| data  
|   |
+--+-+-+--+
| 51155706 | live| 2001-07-02 17:58:08 | 
|TPEEIX?019.95?10?20?30?40?612001/7/2?7117:58:08?J0?K0.0  |
| 51196330 | live| 2001-07-02 17:58:08 | 
|TPEEIX?019.95?10?20?30?40?612001/7/2?7117:58:08?J0?K0.0  |
... cut ...
| 51192850 | live| 2001-08-15 14:30:18 | 
|TISMT?015.19?10?20?30?40?612001/8/15?71?J5.19?K-5|
| 51192851 | live| 2001-08-15 14:30:18 | 
|TISMTW?010.74?10?20?30?40?612001/8/15?71?J0.74?K-5   |
| 51194111 | live| 2001-08-15 14:30:20 | 
|TMAII?013.2?10?20?30?40?612001/8/15?71?J3.2?K-5  |
| 51201163 | live| 2001-08-15 14:30:33 | 
|TUSOLW?010.1?10?20?30?40?612001/8/15?71?J0.1?K0.0|
| 51201418 | live| 2001-08-15 14:30:33 | 
|TVFND?010.11?10?20?30?40?612001/8/15?71?J0.11?K-5|
| 51203036 | live| 2001-08-15 14:30:37 | 
|TZSEV?015.52?10?20?30?40?612001/8/15?71?J5.52?K0.0   |
| 51145454 | live| 2001-08-16 02:00:22 | 
|TCNBA?0117.75?10?20?30?40?612001/8/16?71?J17.75?K0.0 |
| 51152124 | live| 2001-08-16 02:00:32 | 
|TMBLAP?0115.75?10?20?30?40?612001/8/16?71?J15.75?K0.0|
| 51154024 | live| 2001-08-16 02:00:35 | 
|TNESC?011.35?10?20?30?40?612001/8/16?71?J1.35?K0.0   |
| 51162377 | live| 2001-08-16 02:00:48 | 
|TZYSCD?0120?10?20?30?40?612001/8/16?71?J20?K0.0  |
| 51186600 | live| 2001-08-16 14:30:08 | 
|TCNBA?0117.75?10?20?30?40?612001/8/16?71?J17.75?K0.0 |
| 51194263 | live| 2001-08-16 14:30:24 | 
|TMBLAP?0115.75?10?20?30?40?612001/8/16?71?J15.75?K0.0|
| 51203050 | live| 2001-08-16 14:30:37 | 
|TZYSCD?0120?10?20?30?40?612001/8/16?71?J20?K0.0  |
| 51143821 | live| 2001-08-20 02:00:18 | 
|TADSTW?010.12?10?20?30?40?612001/8/20?71?J0.12?K0.0  |
| 51157301 | live| 2001-08-20 02:00:40 | 
|TRLCOW?010.16?10?20?30?40?612001/8/20?71?J0.16?K0.0  |
| 51159119 | live| 2001-08-20 02:00:42 | 
|TSSLI?013.2?10?20?30?40?612001/8/20?71?J3.2?K0.0 |
+--+-+-+--+
100 rows in set (0.42 sec)

  But  if  I  ask  Mysql  to delete these rows, it crashes after a few
  minutes :

mysql delete from mybuffer_NAS_D where date'2001-08-16 00:00:00';
ERROR 1030: Got error 100 from table handler

  I  think  I  already read a lot about these limitations. But this is
  really a problem for me now :(

  Any improvement expected ?

  Regards,
  Alex.


-
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




Re: InnoDB tables : difficulties with COUNT(*), DELETE etc ...

2001-09-10 Thread Heikki Tuuri

Alex,

slowness of count(*) is a well-known problem.
I will fix it some time this fall. Not very easy,
because of multiversioning and recovery.

The other problem you have is that a delete operation
ends up in a deadlock (I think it should not be called
a 'crash').

I will write in October a selective deadlock
resolution algorithm to InnoDB where a big
transaction is not chosen as the victim in a
deadlock situation.

Unfortunately EXPLAIN does not work on a DELETE,
and you cannot ask how MySQL does the delete.

You should download the version 3.23.42 and do

mysqlcreate table innodb_lock_monitor (a int) type = innodb;

so that we would see what locks and lock waits happen
during the delete. That could give us a clue how
to fix the delete inefficiency.

Regards,

Heikki
http://www.innodb.com

At 04:17 PM 9/10/01 +0200, you wrote:
Bonjour,

  I have a table created with :

CREATE TABLE mybuffer_NAS_D (
  id int(10) unsigned NOT NULL auto_increment,
  service varchar(10) NOT NULL default '',
  date datetime NOT NULL default '-00-00 00:00:00',
  data text,
  PRIMARY KEY  (id),
  KEY id_date (date)
) TYPE=InnoDB;  

  There  are  many  rows in it. And InnoDB take a VERY long time to do
  count(*) :(

mysql select count(*) from mybuffer_NAS_D;
+--+
| count(*) |
+--+
|  4611891 |
+--+
1 row in set (1 min 34.71 sec)

  If  I  select 100 first rows ordered by 'date asc', I see that there
  are less than 100 lines with date'2001-08-16 00:00:00'.
  
mysql select * from mybuffer_NAS_D order by date asc limit 100;
+--+-+-+---
---+
| id   | service | date| data
|
+--+-+-+---
---+
| 51155706 | live| 2001-07-02 17:58:08 |
TPEEIX?019.95?10?20?30?40?612001/7/2?7117:58:08?J0?K0.0  |
| 51196330 | live| 2001-07-02 17:58:08 |
TPEEIX?019.95?10?20?30?40?612001/7/2?7117:58:08?J0?K0.0  |
... cut ...
| 51192850 | live| 2001-08-15 14:30:18 |
TISMT?015.19?10?20?30?40?612001/8/15?71?J5.19?K-5|
| 51192851 | live| 2001-08-15 14:30:18 |
TISMTW?010.74?10?20?30?40?612001/8/15?71?J0.74?K-5   |
| 51194111 | live| 2001-08-15 14:30:20 |
TMAII?013.2?10?20?30?40?612001/8/15?71?J3.2?K-5  |
| 51201163 | live| 2001-08-15 14:30:33 |
TUSOLW?010.1?10?20?30?40?612001/8/15?71?J0.1?K0.0|
| 51201418 | live| 2001-08-15 14:30:33 |
TVFND?010.11?10?20?30?40?612001/8/15?71?J0.11?K-5|
| 51203036 | live| 2001-08-15 14:30:37 |
TZSEV?015.52?10?20?30?40?612001/8/15?71?J5.52?K0.0   |
| 51145454 | live| 2001-08-16 02:00:22 |
TCNBA?0117.75?10?20?30?40?612001/8/16?71?J17.75?K0.0 |
| 51152124 | live| 2001-08-16 02:00:32 |
TMBLAP?0115.75?10?20?30?40?612001/8/16?71?J15.75?K0.0|
| 51154024 | live| 2001-08-16 02:00:35 |
TNESC?011.35?10?20?30?40?612001/8/16?71?J1.35?K0.0   |
| 51162377 | live| 2001-08-16 02:00:48 |
TZYSCD?0120?10?20?30?40?612001/8/16?71?J20?K0.0  |
| 51186600 | live| 2001-08-16 14:30:08 |
TCNBA?0117.75?10?20?30?40?612001/8/16?71?J17.75?K0.0 |
| 51194263 | live| 2001-08-16 14:30:24 |
TMBLAP?0115.75?10?20?30?40?612001/8/16?71?J15.75?K0.0|
| 51203050 | live| 2001-08-16 14:30:37 |
TZYSCD?0120?10?20?30?40?612001/8/16?71?J20?K0.0  |
| 51143821 | live| 2001-08-20 02:00:18 |
TADSTW?010.12?10?20?30?40?612001/8/20?71?J0.12?K0.0  |
| 51157301 | live| 2001-08-20 02:00:40 |
TRLCOW?010.16?10?20?30?40?612001/8/20?71?J0.16?K0.0  |
| 51159119 | live| 2001-08-20 02:00:42 |
TSSLI?013.2?10?20?30?40?612001/8/20?71?J3.2?K0.0 |
+--+-+-+---
---+
100 rows in set (0.42 sec)

  But  if  I  ask  Mysql  to delete these rows, it crashes after a few
  minutes :

mysql delete from mybuffer_NAS_D where date'2001-08-16 00:00:00';
ERROR 1030: Got error 100 from table handler

  I  think  I  already read a lot about these limitations. But this is
  really a problem for me now :(

  Any improvement expected ?

  Regards,
  Alex.





-
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