Hi,

my question is about the size of the InnoDB datafiles, and I list the
questions in the end of this mail.

I am running MySQL-Max version 4.0.1 on Win2000 Prof.

For test purpose I have set up a small InnoDB database allocating
200M for each file. (innodb_data_file_path = ibdata1:200M;ibdata2:200M)
I _thougt_ this would be more than enough for this purpose.

Then I do inserts in a table like this:

#
# Table structure for table 't_data'
#
DROP TABLE /*!32200 IF EXISTS*/ t_data;
CREATE TABLE /*!32300 IF NOT EXISTS*/ t_data (
  intDataPK int(10) unsigned NOT NULL auto_increment,
  intParameterFK int(10) unsigned NOT NULL ,
  tmsTimestamp timestamp(14) ,
  intDataTypeFK int(10) unsigned NOT NULL ,
  strData char(255) NOT NULL ,
  intUserFK int(10) unsigned NOT NULL ,
  boolReference char(1) NOT NULL DEFAULT '0' ,
  boolApproved char(1) NOT NULL DEFAULT '0' ,
  PRIMARY KEY (intDataPK) ,
  INDEX parameter_index (intParameterFK) ,
  INDEX datatype_index (intDataTypeFK) ,
  INDEX user_index (intUserFK) ,
  FOREIGN KEY (intUserFK) REFERENCES t_user(intUserPK) ,
  FOREIGN KEY (intDataTypeFK) REFERENCES t_datatype(intDataTypePK) ,
  FOREIGN KEY (intParameterFK) REFERENCES t_parameter(intParameterPK)
) TYPE=InnoDB;
#

To test the speed of queries I do a 'select count(*) from t_data'.

Now I start inserting data using a php script (bulk-inserts of 20.000 rows)
As long as the row count of the table is below 100.000 the query runs in
less than a second.
When I reach 120.000 rows suddenly the query runs for 6 seconds !! And from
here
it is getting even worse. Every new 20.000 rows increase query-time with
appr. 2 seconds !
At 500.000 rows query-time equals 1min10sec.

I thought this was strange, but then I discovered that my datafiles
hit 'full' at app. 550.000 rows.

>From 'show table status' I get this info about the table:
Name                    t_data
Type                    InnoDB
Row_format              Fixed
Rows                    517626
Avg_row_length  658 (349 removing foreign keys)
Data_length             340639744
Max_data_length NULL
Index_length    29933568
Data_free               0
Auto_increment  681535
Create_time             NULL
Update_time             NULL
Check_time              NULL
Create_options
Comment         InnoDB free: 3072 kB;
                        (intUserFK) REFER dev/t_user(intUserPK);
                        (intDataTypeFK) REFER dev/t_datatype(intDataTypePK);
                        (intParameterFK) REFER dev/t_parame



I have tried different datatypes and with/without foreing keys but I always
end up
with a huge datafile and hit the limit (200M) at appr. 550.000 rows (give or
take a few)
I know it is a tight setup I am using, but I still have some questions:

1. What happened when my queries suddenly began using seconds to run instead
af msec ?
2. Is my setup faulty or is this 'mass-consumption' af datafile-space normal
?
3. When a char(255) is defined how much storage is required to store 'test'
? 4 or 255 bytes ?
4. And an extra: It seems to mee, that table type 'fixed' and 'dynamic' is
used rather
   randomly by mySQL when setting up the database. I specified nothing an
got a mix !!
   Any explanation to this - and does it make a difference ??
   Any connections between 3 and 4 ??? Yes ??
   The manual says that ROW_FORMAT only applies to MyISAM tables. Not InnoDB
tables - but
   it seems to me that it does make a great difference on InnoDB (size of
datafiles) !!


Thank you for any answers at all :-)
/Martin


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