diff options
author | unknown <monty@donna.mysql.com> | 2000-11-20 22:25:59 +0200 |
---|---|---|
committer | unknown <monty@donna.mysql.com> | 2000-11-20 22:25:59 +0200 |
commit | 166df4ee474f42487f0cdd8db4fe298f3528a1c0 (patch) | |
tree | 5390b25e6e61ec56f90e454a33b6e630e70b02a4 | |
parent | c21988993eaa0fe8d7c85e75559fbaf0d613222c (diff) | |
download | mariadb-git-166df4ee474f42487f0cdd8db4fe298f3528a1c0.tar.gz |
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
-rw-r--r-- | Docs/manual.texi | 8 | ||||
-rw-r--r-- | mysys/thr_lock.c | 6 | ||||
-rw-r--r-- | strings/llstr.c | 2 |
3 files changed, 12 insertions, 4 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index 4afbe8cf76b..b6095302cff 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -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 diff --git a/mysys/thr_lock.c b/mysys/thr_lock.c index b9a9d5274ee..5c48ad435a4 100644 --- a/mysys/thr_lock.c +++ b/mysys/thr_lock.c @@ -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: diff --git a/strings/llstr.c b/strings/llstr.c index a8514d7e369..470645a4f65 100644 --- a/strings/llstr.c +++ b/strings/llstr.c @@ -31,6 +31,6 @@ char *llstr(longlong value,char *buff) { - longlong2str(value,buff,10); + longlong2str(value,buff,-10); return buff; } |