Description:
I have 10 millions records in my database.
I have tried to insert those record into a database which has custom FullText parser. But every time I insert the record to some point the MySQL will crashed.
I create a table that has already created with the Custom Fulltext index parser. Then I insert the data into a single table. It crashed.
I create a table that without any index. I insert the data into the table. It went well. Then I use "Alter table" to add Fulltext index with the Custom Fulltext index parser. It crashed.
The crash only happens when there is a large amount of data insert into the table in a fast pace. Such as I am using "load data local infile 'c:\\MainNews_ALL.csv' into Table tbl_mainnews fields terminated by ',' enclosed by '"' lines terminated by '\r\n';"
But when the data is insert into the table in a slower fashion. The server is running ok. It sounds like a memory management problem.
Here is the stack trace:
mysqld.exe!_mi_make_key(st_myisam_info * info=0x6e756f70, unsigned int keynr=673215332, unsigned char * key=0x39382443, const unsigned char * record=0x09a88cb0, unsigned __int64 filepos=5611671404) Line 57 + 0x4 bytes C
mysqld.exe!_ft_make_key(st_myisam_info * info=0x6e756f70, unsigned int keynr=673215332, unsigned char * keybuf=0x39382443, st_ft_word * wptr=0x6d20332e, unsigned __int64 filepos=2317504908047969385) Line 297 C
206e6f69()
mysqld.exe!mi_repair_by_sort(st_mi_check_param * param=, st_myisam_info * info=, const char * name=, int rep_quick=) Line 2317 + 0x22 bytes C
mysqld.exe!ha_myisam::repair(THD * thd=0x06568260, st_mi_check_param & param={...}, int do_optimize=0) Line 1101 C++
mysqld.exe!ha_myisam::enable_indexes(unsigned int mode=2) Line 1394 + 0x2e bytes C++
mysqld.exe!ha_myisam::end_bulk_insert() Line 1514 + 0x1a bytes C++
mysqld.exe!copy_data_between_tables(st_table * from=0x0658f318, st_table * to=0x092a61b8, List<Create_field> & create={...}, int ignore=0, unsigned int order_num=0, st_order * order=0x00000000, unsigned long * copied=0x09a8e290, unsigned long * deleted=0x09a8e288, enum_enable_or_disable keys_onoff=LEAVE_AS_IS, int error_if_not_empty=0) Line 6885 + 0xf bytes C++
mysqld.exe!mysql_alter_table(THD * thd=0x06568260, char * new_db=0x09295d88, char * new_name=0x09295b48, st_ha_create_information * create_info=0x09a8f440, TABLE_LIST * table_list=0x09295b80, Alter_info * alter_info=0x09a8f4d0, unsigned int order_num=0, st_order * order=0x00000000, int ignore=0) Line 6319 + 0x49 bytes C++
mysqld.exe!mysql_execute_command(THD * thd=0x06568260) Line 2469 + 0x48 bytes C++
mysqld.exe!mysql_parse(THD * thd=0x06568260, const char * inBuf=0x092958a8, unsigned int length=298, const char * * found_semicolon=0x09a8fad0) Line 5447 C++
mysqld.exe!dispatch_command(enum_server_command command=COM_QUERY, THD * thd=0x06568260, char * packet=0x0928d87d, unsigned int packet_length=299) Line 955 C++
mysqld.exe!do_command(THD * thd=0x0000012b) Line 712 + 0xe bytes C++
mysqld.exe!handle_one_connection(void * arg=0x06568260) Line 1099 + 0xa bytes C++
mysqld.exe!pthread_start(void * param=0x0658e050) Line 62 + 0x3 bytes C
> mysqld.exe!_threadstart(void * ptd=0x0658f0c8) Line 196 + 0x6 bytes C
kernel32.dll!77e6608b()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
How to repeat:
Use a large amount of data about 1 million. Use a FullText customer parser in 1 of the column. Then use "load data local file" command to import those data.
It will crash after a while.