| Bug #43963 | Falcon 305 record memory exhausted during LOAD DATA | ||
|---|---|---|---|
| Submitted: | 30 Mar 2009 15:41 | Modified: | 26 May 2010 17:52 |
| Reporter: | Philip Stoev | Email Updates: | |
| Status: | Unsupported | Impact on me: | |
| Category: | MySQL Server: Falcon storage engine | Severity: | S2 (Serious) |
| Version: | 6.0-falcon-team | OS: | Any |
| Assigned to: | Christopher Powers | CPU Architecture: | Any |
| Tags: | F_MEMORY | ||
[30 Mar 2009 15:41]
Philip Stoev
[30 Mar 2009 18:06]
Philip Stoev
On a 6Gb machine with 2Gb for page cache and 2Gb of record cache, LOAD DATA made no progress beyond 26 million rows and the machine started trashing badly.
top:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18257 philips 20 0 7851m 5.4g 3612 S 131.1 96.3 119:22.78 mysqld
free:
[philips@fedora10 gentest]$ free
total used free shared buffers cached
Mem: 5871192 5838124 33068 0 2892 7404
-/+ buffers/cache: 5827828 43364
Swap: 5931000 2971712 2959288
SHOW TABLE STATUS:
Name: ontime_falcon
Engine: Falcon
Version: 10
Row_format: Fixed
Rows: 26590000
Avg_row_length: 0
Data_length: 10000
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 601413 <<<<<<<<< NOTE THIS, WHY SO SMALL?
Create_time: NULL
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
SHOW PROCESSLIST:
*************************** 1. row ***************************
Id: 3
User: root
Host: localhost
db: flightstats
Command: Query
Time: 3104
State: NULL
Info: load data infile 'ontime' into table ontime_falcon
DESCRIBE:
mysql> describe ontime_falcon;
+-------------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | MUL | NULL | auto_increment |
| carrier | char(2) | NO | MUL | NULL | |
| origin | char(3) | NO | MUL | NULL | |
| destination | char(3) | NO | MUL | NULL | |
| flight_num | char(5) | NO | | NULL | |
| flight_time | smallint(5) unsigned | NO | | NULL | |
| tail_num | char(8) | NO | MUL | NULL | |
| dep_time | datetime | NO | | NULL | |
| arr_time | datetime | NO | | NULL | |
| dep_delay | smallint(6) | NO | | NULL | |
| arr_delay | smallint(6) | NO | | NULL | |
| taxi_out | smallint(6) | NO | | NULL | |
| taxi_in | smallint(6) | NO | | NULL | |
| distance | smallint(5) unsigned | NO | | NULL | |
| cancelled | enum('Y','N') | NO | | NULL | |
| diverted | enum('Y','N') | NO | | NULL | |
+-------------+----------------------+------+-----+---------+----------------+
16 rows in set (0.38 sec)
mysql> select * from ontime_falcon limit 1\G
*************************** 1. row ***************************
id: 1
carrier: DL
origin: ATL
destination: ABE
flight_num: 1408
flight_time: 0
tail_num: N903DE
dep_time: 2000-01-01 19:03:00
arr_time: 2000-01-01 00:00:00
dep_delay: 63
arr_delay: 0
taxi_out: 13
taxi_in: 0
distance: 692
cancelled: N
diverted: Y
1 row in set (0.19 sec)
[30 Mar 2009 18:12]
Philip Stoev
To reproduce: #1 download the datadir in myisam format from (1Gb compressed) http://dl.flightstats.us/files/data/flightstats-20060216.tar.gz #2 create the merge tables by downloading http://dl.flightstats.us/files/schema/ontime-merge.sql and editing TYPE= to be ENGINE= #3 Dump the database from MyISAM select * from ontime_all into outfile 'ontime'; #4 Create a falcon table like ontime_all and load the data: load data fromfile 'ontime' into table ontime_falcon;
[30 Apr 2009 17:08]
Christopher Powers
Detailed instructions: 1. Download the datadir in MyISAM format from (1.3 GB compressed) http://dl.flightstats.us/files/data/flightstats-20060216.tar.gz 2. Extract into MySQL data directory: cd ./mysql/var/mysqld.1/data/ (or wherever) tar -xvf flightstats-20060216.tar.gz Creates ./flightstats directory (and "flightstats" mysql database) 3. Download merge table script: http://dl.flightstats.us/files/schema/ontime-merge.sql 4. Change TYPE=MERGE to ENGINE=MERGE 5. Create merge tables: mysql> use flightstats; mysql> source ontime-merge.sql 6. Dump the database from MyISAM: mysql> select * from ontime_all into outfile 'ontime_all'; 7. Create a Falcon table like ontime_all: mysql> create table ontime_all_falcon like ontime_all; mysql> alter table ontime_all_falcon engine=falcon; 8. Load the data: mysql> load data infile 'ontime_all' into table ontime_all_falcon;
