mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Fixed performance bug in lock tables
Docs/manual.texi: Updated changelog mysys/thr_lock.c: Fixed bad performance bug when using SELECT, INSERT and UPDATE strings/llstr.c: change llstr() to output signed strings
This commit is contained in:
@@ -38723,6 +38723,12 @@ though, so Version 3.23 is not released as a stable version yet.
|
||||
@appendixsubsec Changes in release 3.23.28
|
||||
@itemize @bullet
|
||||
@item
|
||||
Fixed a major performance bug in the table locking code when you
|
||||
constantly had a LOT of @code{SELECT} running on a table on which you
|
||||
also did a lot of @code{UPDATE} and @code{INSERT}. The symptom was that
|
||||
the @code{UPDATE} and @code{INSERT} queries was locked a long time
|
||||
while @code{SELECT} statements where executed without locks.
|
||||
@item
|
||||
One can now specify @code{interactive-timeout} in the option file that
|
||||
is read by @code{mysql_options()}. This makes it possible to force
|
||||
programs that runs for a long time (like @code{mysqlhotcopy}) to use
|
||||
@@ -43268,6 +43274,8 @@ Secure connections (with SSL).
|
||||
@item
|
||||
Extend the optimizer to be able to optimize some
|
||||
@code{ORDER BY key_name DESC} queries.
|
||||
@item
|
||||
New key cache
|
||||
@end itemize
|
||||
|
||||
@node TODO future, TODO sometime, TODO MySQL 4.0, TODO
|
||||
|
||||
@@ -653,7 +653,7 @@ void thr_unlock(THR_LOCK_DATA *data)
|
||||
data->type=TL_UNLOCK; /* Mark unlocked */
|
||||
check_locks(lock,"after releasing lock",1);
|
||||
|
||||
if (!lock->write.data) /* If no active read locks */
|
||||
if (!lock->write.data) /* If no active write locks */
|
||||
{
|
||||
data=lock->write_wait.data;
|
||||
if (!lock->read.data) /* If no more locks in use */
|
||||
@@ -742,7 +742,7 @@ void thr_unlock(THR_LOCK_DATA *data)
|
||||
data->next->prev= data->prev;
|
||||
else
|
||||
lock->write_wait.last=data->prev;
|
||||
(*lock->write.last)=data; /* Put in execute list */
|
||||
(*lock->write.last)=data; /* Put in execute list */
|
||||
data->prev=lock->write.last;
|
||||
lock->write.last= &data->next;
|
||||
data->next=0; /* Only one write lock */
|
||||
@@ -756,7 +756,7 @@ void thr_unlock(THR_LOCK_DATA *data)
|
||||
(lock_type == TL_WRITE_CONCURRENT_INSERT ||
|
||||
lock_type == TL_WRITE_ALLOW_WRITE));
|
||||
}
|
||||
else if (lock->read_wait.data)
|
||||
else if (!data && lock->read_wait.data)
|
||||
free_all_read_locks(lock,0);
|
||||
}
|
||||
end:
|
||||
|
||||
@@ -31,6 +31,6 @@
|
||||
|
||||
char *llstr(longlong value,char *buff)
|
||||
{
|
||||
longlong2str(value,buff,10);
|
||||
longlong2str(value,buff,-10);
|
||||
return buff;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user