@item d @tab Enable output from DBUG_<N> macros for for the current state. May be followed by a list of keywords which selects output only for the DBUG macros with that keyword. A empty list of keywords implies output for all macros.
@item d @tab Enable output from DBUG_<N> macros for for the current state. May be followed by a list of keywords which selects output only for the DBUG macros with that keyword. An empty list of keywords implies output for all macros.
@item D @tab Delay after each debugger output line. The argument is the number of tenths of seconds to delay, subject to machine capabilities. That is, @code{-#D,20} is delay two seconds.
@item D @tab Delay after each debugger output line. The argument is the number of tenths of seconds to delay, subject to machine capabilities. That is, @code{-#D,20} is delay two seconds.
@item f @tab Limit debugging and/or tracing, and profiling to the list of named functions. Note that a null list will disable all functions. The appropriate "d" or "t" flags must still be given, this flag only limits their actions if they are enabled.
@item f @tab Limit debugging and/or tracing, and profiling to the list of named functions. Note that a null list will disable all functions. The appropriate "d" or "t" flags must still be given, this flag only limits their actions if they are enabled.
@item F @tab Identify the source file name for each line of debug or trace output.
@item F @tab Identify the source file name for each line of debug or trace output.
...
@@ -48495,7 +48539,7 @@ The currently recognized flag characters are:
...
@@ -48495,7 +48539,7 @@ The currently recognized flag characters are:
@item n @tab Print the current function nesting depth for each line of debug or trace output.
@item n @tab Print the current function nesting depth for each line of debug or trace output.
@item N @tab Number each line of dbug output.
@item N @tab Number each line of dbug output.
@item o @tab Redirect the debugger output stream to the specified file. The default output is stderr.
@item o @tab Redirect the debugger output stream to the specified file. The default output is stderr.
@item O @tab As @code{O} but the file is really flushed between each write. When neaded the file is closed and reopened between each write.
@item O @tab As @code{O} but the file is really flushed between each write. When needed the file is closed and reopened between each write.
@item p @tab Limit debugger actions to specified processes. A process must be identified with the DBUG_PROCESS macro and match one in the list for debugger actions to occur.
@item p @tab Limit debugger actions to specified processes. A process must be identified with the DBUG_PROCESS macro and match one in the list for debugger actions to occur.
@item P @tab Print the current process name for each line of debug or trace output.
@item P @tab Print the current process name for each line of debug or trace output.
@item r @tab When pushing a new state, do not inherit the previous state's function nesting level. Useful when the output is to start at the left margin.
@item r @tab When pushing a new state, do not inherit the previous state's function nesting level. Useful when the output is to start at the left margin.
...
@@ -48523,7 +48567,7 @@ In @strong{MySQL}, common tags to print (with the @code{d} option) are:
...
@@ -48523,7 +48567,7 @@ In @strong{MySQL}, common tags to print (with the @code{d} option) are:
@node Locking methods, RTS-threads, The DBUG package, Porting
@node Locking methods, RTS-threads, The DBUG package, Porting
@appendixsec Locking methods
@appendixsec Locking methods
Currently MySQL only supports table locking for
Currently @strong{MySQL} only supports table locking for
@code{ISAM}/@code{MyISAM} and @code{HEAP} tables and page level locking
@code{ISAM}/@code{MyISAM} and @code{HEAP} tables and page level locking
for @code{BDB} tables. @xref{Internal locking}. With @code{MyISAM}
for @code{BDB} tables. @xref{Internal locking}. With @code{MyISAM}
tables one can freely mix @code{INSERT} and @code{SELECT} without locks
tables one can freely mix @code{INSERT} and @code{SELECT} without locks
...
@@ -48589,11 +48633,11 @@ Many scans / @code{GROUP BY} on the whole table without any writers.
...
@@ -48589,11 +48633,11 @@ Many scans / @code{GROUP BY} on the whole table without any writers.
Other options than row / page level locking:
Other options than row / page level locking:
Versioning (like we use in MySQL for concurrent inserts) where you can
Versioning (like we use in @strong{MySQL} for concurrent inserts) where
have one writer at the same time as many readers. This means that the
you can have one writer at the same time as many readers. This means
database/table supports different views for the data depending on when
that the database/table supports different views for the data depending
one started to access it. Other names for this are time travel, copy
on when one started to access it. Other names for this are time travel,
on write or copy on demand.
copy on write or copy on demand.
Copy on demand is in many case much better than page or row level
Copy on demand is in many case much better than page or row level
locking; The worst case does, however, use much more memory than
locking; The worst case does, however, use much more memory than
...
@@ -48617,7 +48661,7 @@ The base @strong{MySQL} setup is VERY tuned for this.
...
@@ -48617,7 +48661,7 @@ The base @strong{MySQL} setup is VERY tuned for this.
Concurrent users is not a problem if one doesn't mix updates and selects
Concurrent users is not a problem if one doesn't mix updates and selects
that needs to examine many rows in the same table.
that needs to examine many rows in the same table.
If one mix a insert and deletes on the same table then @code{INSERT DELAY}
If one mixes inserts and deletes on the same table then @code{INSERT DELAYED}
may be of great help.
may be of great help.
One can also use @code{LOCK TABLES} to speed up things (many updates within
One can also use @code{LOCK TABLES} to speed up things (many updates within