@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 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.
...
...
@@ -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 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 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 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.
...
...
@@ -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
@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
for @code{BDB} tables. @xref{Internal locking}. With @code{MyISAM}
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.
Other options than row / page level locking:
Versioning (like we use in MySQL for concurrent inserts) where you can
have one writer at the same time as many readers. This means that the
database/table supports different views for the data depending on when
one started to access it. Other names for this are time travel, copy
on write or copy on demand.
Versioning (like we use in @strong{MySQL} for concurrent inserts) where
you can have one writer at the same time as many readers. This means
that the database/table supports different views for the data depending
on when one started to access it. Other names for this are time travel,
copy on write or copy on demand.
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
...
...
@@ -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
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.
One can also use @code{LOCK TABLES} to speed up things (many updates within