sql - ADD INDEX crashes MySQL -
i trying optimize queries when try add indexes query:
alter table `user` add index `last_activity_date` (`last_activity_date`); ... crashes mysql server. mean websites not responding anymore , queries not executed. solution have restart mysql. it's annoying because have app hundreds of users can't use when it's crashed.
i have mysql log file don't see error in it. in opinion can problem here? because users interacting db while i'm adding indexes? use innodb.
i have more 100.000 records in user table looks :
create table `user` ( `id` int(11) unsigned not null auto_increment, `encrypt_id` varchar(255) default null, `register_date` datetime default null, `last_login_date` datetime default null, `username` varchar(255) default null, `password` varchar(255) default null, `email` varchar(255) default null, `banned` int(11) default null, `banned_reason` text, `first_step_form` int(11) default '0', `status` int(11) default null, `referer` varchar(255) default null, `rank` int(11) default null, `fb_id` bigint(20) default null, `last_activity_date` datetime default null, primary key (`id`), key `last_activity_date` (`last_activity_date`) ) engine=innodb default charset=latin1
presuming website pretty active, have 100000 users, , last_activity_date field updated every time user (anything), applying index on field wreak havoc. many rows take few minutes apply, , if not lock users out, index never created have keep updating before completed while users changed field (it locks users out prevent this).
the reason index field last_activity_date run reporting against (things such did user in last 30 days), or regular maintenance (disabling users haven't done in last 30 days). if such case, might better off creating secondary table , loading user table data, , applying index on table. reports won't against live data--but reports shouldn't need instantaneous results. updating secondary table once day or wouldn't take long--perhaps few minutes--and won't lock out users in process.
Comments
Post a Comment