Thanks for the hint. I'll try it with more tablespace.

The indexes have been optimized pretty much. I have to check whether I 
can send you the table layout.

Just for your information. 3.23.38 has the same problem.

Heikki Tuuri wrote:

>Frank,
>
>there is obviously a bug in the insert buffer code of InnoDB. I will
>look into it. The assertion failure indicates that there was not enough
>free space on an index record page for a record cached in the insert buffer.
>
>Your log files are ok. The size of log files does not constrain the
>size of an InnoDB transaction. The constraint is the size of your
>tablespace.
>
>When I look at your table size I suspect that InnoDB has run out
>of file space during the table load. You have 27 indexes on the table
>and InnoDB does not do any index compression. The size of an index record
>in InnoDB is the size of the primary key + the size of the index columns
>+ 6 bytes additional overhead. In addition, B-tree pages are typically
>only 70 % full. During a large import also the rollback segment takes
>space in the tablespace.
>
>7 million * 30 bytes * 1.5 = 300 MB.
>
>27 * 300 MB = 8 GB. It is probable that you ran out of tablespace.
>
>You should make your tablspace bigger and monitor with
>SHOW TABLE STATUS how much space InnoDB uses. (See the InnoDB manual
>at www.innobase.fi).
>
>Some suggestions: do not create indexes whose selectivity is small:
>for example if a column can have only 2 different values, it usually
>does not pay to create an index.
>
>If you have a primary key of length < 6 bytes, create a primary key
>to the table. If the length of the primary key is > 10 bytes, try
>creating the table without a primary key.
>
>Try loading the table a part at a time. You may create an InnoDB
>table with same definitions as the MyISAM table. Then do several
>
>INSERT INTO innodbtable SELECT myisamtable WHERE yourkey < something
>                                             AND yourkey > something-else;
>
>If you could email me the CREATE TABLE you use for the InnoDB table,
>it would be easier for me to track the insert buffer bug.
>
>Regards,
>
>Heikki Tuuri
>Innobase Oy
>
>>--=-jUldtxkxbNmI4+gJVNJEContent-Type: text/plain; charset=ISO-8859-1
>>Content-Transfer-Encoding: quoted-printable
>>
>>Hi,
>>I'm trying to load a large table with 7 million records, 50 columns and
>>27 indexes into an innodb table. Works fine for MyISAM. Compressed size
>>of the data file is about 280MB (830MB uncompressed) and 1.5 GB for the
>>index file. Platform is RedHat Linux 6.2 with kernel 2.2.16-3 and MySQL
>>is 3.23.37 compiled with egcs-2.91.66 for i686 from the standard MySQL
>>source RPM. The machine is a dual CPU Pentium machine with 512 MB RAM
>>and 2 IDE drives (30GB and 40GB).
>>For the InnoDB tables I have 6 data files with 1GB on 2 disks and 3 log
>>files a 50MB. I've also tried it with 5 log files a 1.5GB.From /etc/my.cnf:
>>
>#
>
>>   # Innobase options    #    innodb_data_file_path =3D
>>   vol1/ibdata/ibdata00:1024M;vol2/ibdata/ibdata01:1024M;vol1/ibdata/ibdat=
>>a02:1024M;vol2/ibdata/ibdata03:1024M;vol1/ibdata/ibdata04:1024M;vol2/ibdata=
>>/ibdata05:1024M    innodb_data_home_dir =3D /
>>   set-variable =3D innodb_mirrored_log_groups=3D1
>>   innodb_log_group_home_dir =3D /vol2/iblogs
>>   set-variable =3D innodb_log_files_in_group=3D3
>>   set-variable =3D innodb_log_file_size=3D50M
>>   set-variable =3D innodb_log_buffer_size=3D8M
>>   innodb_flush_log_at_trx_commit=3D1    innodb_log_arch_dir =3D /vol2/iblogs
>>   innodb_log_archive=3D0    set-variable =3D innodb_buffer_pool_size=3D400M
>>   set-variable =3D innodb_additional_mem_pool_size=3D20M
>>   set-variable =3D innodb_file_io_threads=3D4
>>   set-variable =3D innodb_lock_wait_timeout=3D50
>>Tried to load it with LOAD DATA INFILE from a FIFO and to convert it
>>
>>from a MyISAM table with ALTER TABLE foo TYPE=3Dinnodb;. Both produced the
>
>>same result.After some time MySQL dies and then the rollback begins.
>>This is what I see in the .err file:
>>   Innobase: Assertion failure in thread 3076 in file ibuf0ibuf.c line    2264
>>   Innobase: we intentionally generate a memory trap.
>>   Innobase: Send a bug report to [EMAIL PROTECTED]
>>   mysqld got signal 11;
>>   The manual section 'Debugging a MySQL server' tells you how to use a
>>   stack trace and/or the core file to produce a readable backtrace
>>
>that may
>
>>   help in finding out why mysqld died.
>>   Attempting backtrace. You can use the following information to find    out
>>   where mysqld died.  If you see no messages after this, something    went
>>   terribly wrong...
>>   Cannot determine thread, ebp=3D0xbf3ff070, backtrace may not be    correct.
>>   Stack range sanity check OK, backtrace follows:    0x823244a    0x81700fb
>>   0x8170a1e    0x81a5989    0x81c13a8    0x8160006    0x8230856    0x825736a
>>   New value of ebp failed sanity check, terminating backtrace!
>>   Ibuf insert fails; page free 26, dtuple size 28    Bitmap bits 3
>>
>>Is there a way of turning the transactional logging off during the load
>>of a table? I know that I'm out on my own then but this table is loaded
>>only every once in a while.Am I running out of space on the log/or data files?
>>Is there a way of turning the innobase logging up?
>>Any help is highly appreciated.--=20Frank Schr=F6der  <[EMAIL PROTECTED]>
>>


-- 
Frank Schröder  <[EMAIL PROTECTED]>

    AirFlash Engineering Europe
          www.airflash.com
            AirFlash Inc.


Reply via email to