mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-6150 Speed up connection speed by moving creation of THD to new thread
Creating a CONNECT object on client connect and pass this to the working thread which creates the THD. Split LOCK_thread_count to different mutexes Added LOCK_thread_start to syncronize threads Moved most usage of LOCK_thread_count to dedicated functions Use next_thread_id() instead of thread_id++ Other things: - Thread id now starts from 1 instead of 2 - Added cast for thread_id as thread id is now of type my_thread_id - Made THD->host const (To ensure it's not changed) - Removed some DBUG_PRINT() about entering/exiting mutex as these was already logged by mutex code - Fixed that aborted_connects and connection_errors_internal are counted in all cases - Don't take locks for current_linfo when we set it (not needed as it was 0 before)
This commit is contained in:
@ -2181,9 +2181,7 @@ static int init_binlog_sender(binlog_send_info *info,
|
||||
linfo->pos= *pos;
|
||||
|
||||
// note: publish that we use file, before we open it
|
||||
mysql_mutex_lock(&LOCK_thread_count);
|
||||
thd->current_linfo= linfo;
|
||||
mysql_mutex_unlock(&LOCK_thread_count);
|
||||
|
||||
if (check_start_offset(info, linfo->log_file_name, *pos))
|
||||
return 1;
|
||||
@ -2922,9 +2920,7 @@ err:
|
||||
mysql_file_close(file, MYF(MY_WME));
|
||||
}
|
||||
|
||||
mysql_mutex_lock(&LOCK_thread_count);
|
||||
thd->current_linfo = 0;
|
||||
mysql_mutex_unlock(&LOCK_thread_count);
|
||||
thd->reset_current_linfo();
|
||||
thd->variables.max_allowed_packet= old_max_allowed_packet;
|
||||
delete info->fdev;
|
||||
|
||||
@ -3379,10 +3375,8 @@ err:
|
||||
SYNOPSIS
|
||||
kill_zombie_dump_threads()
|
||||
slave_server_id the slave's server id
|
||||
|
||||
*/
|
||||
|
||||
|
||||
void kill_zombie_dump_threads(uint32 slave_server_id)
|
||||
{
|
||||
mysql_mutex_lock(&LOCK_thread_count);
|
||||
@ -3946,9 +3940,7 @@ bool mysql_show_binlog_events(THD* thd)
|
||||
goto err;
|
||||
}
|
||||
|
||||
mysql_mutex_lock(&LOCK_thread_count);
|
||||
thd->current_linfo = &linfo;
|
||||
mysql_mutex_unlock(&LOCK_thread_count);
|
||||
thd->current_linfo= &linfo;
|
||||
|
||||
if ((file=open_binlog(&log, linfo.log_file_name, &errmsg)) < 0)
|
||||
goto err;
|
||||
@ -4080,9 +4072,7 @@ err:
|
||||
else
|
||||
my_eof(thd);
|
||||
|
||||
mysql_mutex_lock(&LOCK_thread_count);
|
||||
thd->current_linfo = 0;
|
||||
mysql_mutex_unlock(&LOCK_thread_count);
|
||||
thd->reset_current_linfo();
|
||||
thd->variables.max_allowed_packet= old_max_allowed_packet;
|
||||
DBUG_RETURN(ret);
|
||||
}
|
||||
|
Reference in New Issue
Block a user