Commit 78cf07c8 authored by unknown's avatar unknown

New benchmark test

Fixed bug in REPLACE with BDB tables
Prepare for write lock on read for BDB
Inform the handler when we want to use IGNORE / REPLACE
New manual pages


Docs/manual.texi:
  Updates for BDB tables and new changes
client/mysql.cc:
  Cleanup
configure.in:
  Added sys/ioctl.h
heap/hp_rkey.c:
  Fixed bug when reading next on not unique key
include/my_base.h:
  Added new extra options
man/mysql.1:
  Added example
mysys/my_write.c:
  Safety fix
scripts/mysqlaccess.sh:
  Removed debug output
scripts/safe_mysqld.sh:
  Added --open-files-limit
sql-bench/Results/ATIS-mysql-Linux_2.2.14_my_SMP_i686:
  Updated to new benchmark
sql-bench/Results/RUN-mysql-Linux_2.2.14_my_SMP_i686:
  Updated to new benchmark
sql-bench/Results/alter-table-mysql-Linux_2.2.14_my_SMP_i686:
  Updated to new benchmark
sql-bench/Results/big-tables-mysql-Linux_2.2.14_my_SMP_i686:
  Updated to new benchmark
sql-bench/Results/connect-mysql-Linux_2.2.14_my_SMP_i686:
  Updated to new benchmark
sql-bench/Results/create-mysql-Linux_2.2.14_my_SMP_i686:
  Updated to new benchmark
sql-bench/Results/insert-mysql-Linux_2.2.14_my_SMP_i686:
  Updated to new benchmark
sql-bench/Results/select-mysql-Linux_2.2.14_my_SMP_i686:
  Updated to new benchmark
sql-bench/Results/wisconsin-mysql-Linux_2.2.14_my_SMP_i686:
  Updated to new benchmark
sql-bench/bench-init.pl.sh:
  Updated to new benchmark
sql-bench/server-cfg.sh:
  Fixes for HEAP tables
sql-bench/test-ATIS.sh:
  Fix for heap tables
sql-bench/test-insert.sh:
  Added some ORDER BY benchmarks to test more things
sql/ha_berkeley.cc:
  Fix a bug in REPLACE
sql/ha_berkeley.h:
  Fix to handle lock_on_read
sql/mysql_priv.h:
  Prepare for internal subtransactions in BDB
sql/mysqld.cc:
  Added -O open_files_limit=#
sql/sql_insert.cc:
  Inform the handler when we want to use IGNORE / REPLACE
sql/sql_load.cc:
  Inform the handler when we want to use IGNORE / REPLACE
sql/sql_parse.cc:
  Cleanup
sql/sql_show.cc:
  Cleanup
sql/sql_table.cc:
  Inform the handler when we want to use IGNORE / REPLACE
sql/sql_update.cc:
  Inform the handler when we want to use IGNORE / REPLACE
support-files/binary-configure.sh:
  Better message
parent b23a560f
...@@ -222,7 +222,7 @@ Installing MySQL ...@@ -222,7 +222,7 @@ Installing MySQL
* OS/2:: OS/2 notes * OS/2:: OS/2 notes
* MySQL binaries:: MySQL binaries * MySQL binaries:: MySQL binaries
* Post-installation:: Post-installation setup and testing * Post-installation:: Post-installation setup and testing
* Upgrade:: Is there anything special to do when upgrading/downgrading @strong{MySQL}? * Upgrade:: Upgrading/downgrading @strong{MySQL}
Installing a MySQL Binary Distribution Installing a MySQL Binary Distribution
...@@ -307,7 +307,7 @@ Post-installation Setup and Testing ...@@ -307,7 +307,7 @@ Post-installation Setup and Testing
* Command-line options:: Command-line options * Command-line options:: Command-line options
* Option files:: Option files * Option files:: Option files
Is There Anything Special to Do when Upgrading/Downgrading MySQL? Upgrading/Downgrading MySQL
* Upgrading-from-3.22:: Upgrading from a 3.22 version to 3.23 * Upgrading-from-3.22:: Upgrading from a 3.22 version to 3.23
* Upgrading-from-3.21:: Upgrading from a 3.21 version to 3.22 * Upgrading-from-3.21:: Upgrading from a 3.21 version to 3.22
...@@ -3885,7 +3885,7 @@ rate that is at least 20 % less than our standard rates. ...@@ -3885,7 +3885,7 @@ rate that is at least 20 % less than our standard rates.
* OS/2:: OS/2 notes * OS/2:: OS/2 notes
* MySQL binaries:: MySQL binaries * MySQL binaries:: MySQL binaries
* Post-installation:: Post-installation setup and testing * Post-installation:: Post-installation setup and testing
* Upgrade:: Is there anything special to do when upgrading/downgrading @strong{MySQL}? * Upgrade:: Upgrading/Downgrading MySQL
@end menu @end menu
This chapter describes how to obtain and install @strong{MySQL}: This chapter describes how to obtain and install @strong{MySQL}:
...@@ -5939,13 +5939,20 @@ Once @strong{BitKeeper} is installed, ...@@ -5939,13 +5939,20 @@ Once @strong{BitKeeper} is installed,
@code{bk clone bk://work.mysql.com:7000 mysql} - the initial download @code{bk clone bk://work.mysql.com:7000 mysql} - the initial download
may take a while, depending on the speed of your connection. may take a while, depending on the speed of your connection.
@item @item
@code{cd mysql; bk -r edit; aclocal; autoheader; autoconf; You will need GNU autoconf/automake, libtool, and m4 to do the next stage.
automake; ./configure} with your favorite options, and then If you get some strange error during the first stage, check that you really
@code{ make}. have libtool installed!
You will need GNU autoconf/automake, libtool, and m4 to do this.
We have a @example
collection of our standard configure scripts in the @code{BUILD/} cd mysql
subdirectory - if you are lazy, you can do bk -r edit
aclocal; autoheader; autoconf; automake;
./configure # Add your favorite options here
make
@end example
We have a collection of our standard configure scripts in the
@code{BUILD/} subdirectory - if you are lazy, you can do
@code{BUILD/compile-pentium-debug} . It will actually work on a lot of @code{BUILD/compile-pentium-debug} . It will actually work on a lot of
non-x86 machines despite its name. non-x86 machines despite its name.
@item @item
...@@ -8742,6 +8749,8 @@ shell> ./bin/mysql_install_db ...@@ -8742,6 +8749,8 @@ shell> ./bin/mysql_install_db
shell> ./bin/safe_mysqld --user=mysql & shell> ./bin/safe_mysqld --user=mysql &
@end example @end example
This installs and starts @code{MySQL} without any passwords.
Testing is most easily done from the top-level directory of the @strong{MySQL} Testing is most easily done from the top-level directory of the @strong{MySQL}
distribution. For a binary distribution, this is your installation directory distribution. For a binary distribution, this is your installation directory
(typically something like @file{/usr/local/mysql}). For a source (typically something like @file{/usr/local/mysql}). For a source
...@@ -9182,12 +9191,19 @@ If you find something like the following in the log file: ...@@ -9182,12 +9191,19 @@ If you find something like the following in the log file:
000729 14:50:10 Can't init databases 000729 14:50:10 Can't init databases
@end example @end example
this means that you started mysqld with @code{--bdb-recover} and that this means that you didn't started mysqld with @code{--bdb-no-recover}
Berkeley DB found something wrong with it's log files when it tried to and Berkeley DB found something wrong with it's log files when it
recover your databases. To be able to continue, you should move away tried to recover your databases. To be able to continue, you should
the old Berkeley DB log file from the database directory to some other move away the old Berkeley DB log file from the database directory to
place, where you can later examine these. The log files are named some other place, where you can later examine these. The log files are
@file{log.0000000001}, where the number will increase over time. named @file{log.0000000001}, where the number will increase over time.
If you are running @code{mysqld} with BDB table support and mysqld core
dumps at start this could be because of some problems with the BDB
recover log. In this case you can try starting @code{mysqld} with
@code{--bdb-no-recover}. If this helps, then you should remove all
@file{log.*} files from the data directory and try starting @code{mysqld}
again.
If you get the following error, it means that some other program (or another If you get the following error, it means that some other program (or another
@code{mysqld} server) is already using the TCP/IP port or socket @code{mysqld} server) is already using the TCP/IP port or socket
...@@ -9702,7 +9718,7 @@ shell> my_print_defaults client mysql ...@@ -9702,7 +9718,7 @@ shell> my_print_defaults client mysql
The above output contains all options for the groups 'client' and 'mysql'. The above output contains all options for the groups 'client' and 'mysql'.
@node Upgrade, , Post-installation, Installing @node Upgrade, , Post-installation, Installing
@section Is There Anything Special to Do when Upgrading/Downgrading MySQL? @section Upgrading/Downgrading MySQL
@cindex upgrading @cindex upgrading
@cindex downgrading @cindex downgrading
...@@ -19082,6 +19098,11 @@ option, @code{INSERT} statements generate an error unless you explicitly ...@@ -19082,6 +19098,11 @@ option, @code{INSERT} statements generate an error unless you explicitly
specify values for all columns that require a non-@code{NULL} value. specify values for all columns that require a non-@code{NULL} value.
@xref{configure options, , @code{configure} options}. @xref{configure options, , @code{configure} options}.
@item
You can find the value used for an @code{AUTO_INCREMENT} column
with the @code{mysql_insert_id} function.
@xref{mysql_insert_id, , @code{mysql_insert_id()}}.
@item @item
The following conditions hold for an @code{INSERT INTO ... SELECT} statement: The following conditions hold for an @code{INSERT INTO ... SELECT} statement:
...@@ -20265,6 +20286,7 @@ differ somewhat: ...@@ -20265,6 +20286,7 @@ differ somewhat:
| myisam_sort_buffer_size | 8388608 | | myisam_sort_buffer_size | 8388608 |
| net_buffer_length | 16384 | | net_buffer_length | 16384 |
| net_retry_count | 10 | | net_retry_count | 10 |
| open_files_limit | 0 |
| pid_file | /usr/local/mysql/data/tik.pid | | pid_file | /usr/local/mysql/data/tik.pid |
| port | 3306 | | port | 3306 |
| protocol_version | 10 | | protocol_version | 10 |
...@@ -20556,6 +20578,14 @@ internal interrupts are sent to all threads. ...@@ -20556,6 +20578,14 @@ internal interrupts are sent to all threads.
Number of seconds to wait for a block to be written to a connection before Number of seconds to wait for a block to be written to a connection before
aborting the write. aborting the write.
@item @code{open_files_limit}
If this is not 0, then @code{mysqld} will use this value to reserve file
descriptors to use with @code{getrlimit()}. If this value is 0 then
@code{mysqld} will reserve @code{max_connections*5} or
@code{max_connections + table_cache*2} (whichever is larger) number of
files. You should try increasing this if @code{mysqld} gives you the
error 'Too many open files'.
@item @code{pid_file} @item @code{pid_file}
The value of the @code{--pid-file} option. The value of the @code{--pid-file} option.
...@@ -22648,7 +22678,7 @@ BDB tables: ...@@ -22648,7 +22678,7 @@ BDB tables:
@item @code{--bdb-lock-detect=#} @tab Berkeley lock detect. One of (DEFAULT, OLDEST, RANDOM, or YOUNGEST). @item @code{--bdb-lock-detect=#} @tab Berkeley lock detect. One of (DEFAULT, OLDEST, RANDOM, or YOUNGEST).
@item @code{--bdb-logdir=directory} @tab Berkeley DB log file directory. @item @code{--bdb-logdir=directory} @tab Berkeley DB log file directory.
@item @code{--bdb-no-sync} @tab Don't synchronously flush logs. @item @code{--bdb-no-sync} @tab Don't synchronously flush logs.
@item @code{--bdb-recover} @tab Start Berkeley DB in recover mode. @item @code{--bdb-no-recover} @tab Don't start Berkeley DB in recover mode.
@item @code{--bdb-shared-data} @tab Start Berkeley DB in multi-process mode (Don't use @code{DB_PRIVATE} when initializing Berkeley DB) @item @code{--bdb-shared-data} @tab Start Berkeley DB in multi-process mode (Don't use @code{DB_PRIVATE} when initializing Berkeley DB)
@item @code{--bdb-tmpdir=directory} @tab Berkeley DB tempfile name. @item @code{--bdb-tmpdir=directory} @tab Berkeley DB tempfile name.
@item @code{--skip-bdb} @tab Don't use berkeley db. @item @code{--skip-bdb} @tab Don't use berkeley db.
...@@ -22659,12 +22689,13 @@ If you use @code{--skip-bdb}, @strong{MySQL} will not initialize the ...@@ -22659,12 +22689,13 @@ If you use @code{--skip-bdb}, @strong{MySQL} will not initialize the
Berkeley DB library and this will save a lot of memory. Of course, Berkeley DB library and this will save a lot of memory. Of course,
you cannot use @code{BDB} tables if you are using this option. you cannot use @code{BDB} tables if you are using this option.
Normally you should start mysqld with @code{--bdb-recover} if you intend Normally you should start mysqld without @code{--bdb-no-recover} if you
to use BDB tables. This may, however, give you problems when you try to intend to use BDB tables. This may, however, give you problems when you
start mysqld if the BDB log files are corrupted. @xref{Starting server}. try to start mysqld if the BDB log files are corrupted. @xref{Starting
server}.
With @code{bdb_max_lock} you can specify the maximum number of locks With @code{bdb_max_lock} you can specify the maximum number of locks
(1000 by default) you can have active on a BDB table. You should (10000 by default) you can have active on a BDB table. You should
increase this if you get errors of type @code{bdb: Lock table is out of increase this if you get errors of type @code{bdb: Lock table is out of
available locks} or @code{Got error 12 from ...} when you have do long available locks} or @code{Got error 12 from ...} when you have do long
transactions or when @code{mysqld} has to examine a lot of rows to transactions or when @code{mysqld} has to examine a lot of rows to
...@@ -22679,6 +22710,22 @@ You may also want to change @code{binlog_cache_size} and ...@@ -22679,6 +22710,22 @@ You may also want to change @code{binlog_cache_size} and
@itemize @bullet @itemize @bullet
@item @item
To be able to rollback transactions BDB maintain log files. For maximum
performance you should place these on another disk than your databases
by using the @code{--bdb_log_dir} options.
@item
@strong{MySQL} performs a checkpoint each time a new BDB log
file is started, and removes any log files that are not needed for
current transactions. One can also run @code{FLUSH LOGS} at any time
to checkpoint the Berkeley DB tables.
For disaster recovery, one should use table backups plus
@strong{MySQL}'s binary log. @xref{Backup}.
@strong{Warning}: If you delete old log files that are in use, BDB will
not be able to do recovery at all and you may loose data if something
goes wrong.
@item
@strong{MySQL} requires a @code{PRIMARY KEY} in each BDB table to be @strong{MySQL} requires a @code{PRIMARY KEY} in each BDB table to be
able to refer to previously read rows. If you don't create one, able to refer to previously read rows. If you don't create one,
@strong{MySQL} will create an maintain a hidden @code{PRIMARY KEY} for @strong{MySQL} will create an maintain a hidden @code{PRIMARY KEY} for
...@@ -22721,14 +22768,6 @@ There is often holes in the BDB table to allow you to insert new rows in ...@@ -22721,14 +22768,6 @@ There is often holes in the BDB table to allow you to insert new rows in
the middle of the key tree. This makes BDB tables somewhat larger than the middle of the key tree. This makes BDB tables somewhat larger than
MyISAM tables. MyISAM tables.
@item @item
@strong{MySQL} performs a checkpoint each time a new Berkeley DB log
file is started, and removes any log files that are not needed for
current transactions. One can also run @code{FLUSH LOGS} at any time
to checkpoint the Berkeley DB tables.
For disaster recovery, one should use table backups plus MySQL's binary
log. @xref{Backup}.
@item
The optimizer needs to know an approximation of the number of rows in The optimizer needs to know an approximation of the number of rows in
the table. @strong{MySQL} solves this by counting inserts and the table. @strong{MySQL} solves this by counting inserts and
maintaining this in a separate segment in each BDB table. If you don't maintaining this in a separate segment in each BDB table. If you don't
...@@ -26325,7 +26364,7 @@ for most queries, but some queries may take substantially longer (The ...@@ -26325,7 +26364,7 @@ for most queries, but some queries may take substantially longer (The
If you use @code{--with-debug}, then you will only loose 15 %. If you use @code{--with-debug}, then you will only loose 15 %.
@item @item
On a Sun SPARCstation 10, @code{gcc} 2.7.3 is 13% faster than Sun Pro C++ 4.2. On a Sun SPARCstation 20, SunPro C++ 4.2 is 5 % faster than @code{gcc} 2.95.2.
@item @item
Compiling with @code{gcc} 2.95.2 for ultrasparc with the option Compiling with @code{gcc} 2.95.2 for ultrasparc with the option
...@@ -26338,6 +26377,10 @@ get bigger. ...@@ -26338,6 +26377,10 @@ get bigger.
@item @item
Running with @code{--log-bin} makes @strong{[MySQL} 1 % slower. Running with @code{--log-bin} makes @strong{[MySQL} 1 % slower.
@item
Compiling without frame pointers @code{-fomit-frame-pointer} with gcc makes
MySQL 1 % faster.
@end itemize @end itemize
The @strong{MySQL}-Linux distribution provided by MySQL AB used to be The @strong{MySQL}-Linux distribution provided by MySQL AB used to be
...@@ -31948,6 +31991,11 @@ Visual Basic with ADO can't handle big integers. This means that some queries ...@@ -31948,6 +31991,11 @@ Visual Basic with ADO can't handle big integers. This means that some queries
like @code{SHOW PROCESSLIST} will not work properly. The fix is to set like @code{SHOW PROCESSLIST} will not work properly. The fix is to set
add the option @code{OPTION=16834} in the ODBC connect string or set add the option @code{OPTION=16834} in the ODBC connect string or set
the @code{Change BIGINT columns to INT} option in the MyODBC connect screen. the @code{Change BIGINT columns to INT} option in the MyODBC connect screen.
@item VisualInterDev
If you get the error @code{[Microsoft][ODBC Driver Manager] Driver does
not support this parameter} the reason may be that you have a
@code{BIGINT} in your result. Try setting the @code{Change BIGINT
columns to INT} option in the MyODBC connect screen.
@end table @end table
@cindex AUTO-INCREMENT, ODBC @cindex AUTO-INCREMENT, ODBC
...@@ -33171,23 +33219,29 @@ files simultaneously. You can either tell @code{mysqld} not to open so ...@@ -33171,23 +33219,29 @@ files simultaneously. You can either tell @code{mysqld} not to open so
many files at once or increase the number of file descriptors many files at once or increase the number of file descriptors
available to @code{mysqld}. available to @code{mysqld}.
To tell @code{mysqld} to keep open fewer files at a time, you can make the To tell @code{mysqld} to keep open fewer files at a time, you can make
table cache smaller by using the @code{-O table_cache=32} option the table cache smaller by using the @code{-O table_cache=32} option to
to @code{safe_mysqld} (the default value is 64). Reducing the value of @code{safe_mysqld} (the default value is 64). Reducing the value of
@code{max_connections} will also reduce the number of open files (the default @code{max_connections} will also reduce the number of open files (the
value is 90). default value is 90).
@tindex ulimit @tindex ulimit
To change the number of file descriptors available to @code{mysqld}, modify To change the number of file descriptors available to @code{mysqld}, you
the @code{safe_mysqld} script. There is a commented-out line can use the option @code{--open-files-limit=#} to @code{safe_mysqld} or
@code{ulimit -n 256} in the script. You can remove the @code{'#'} character @code{-O open-files-limit=#} to @code{mysqld}. @xref{SHOW VARIABLES}.
to uncomment this line, and change the number 256 to change the number of The easyest way to do that is to add the option to your option file.
file descriptors available to @code{mysqld}. @xref{Option files}. If you have an old @code{mysqld} version that
doesn't support this, you can edit the @code{safe_mysqld} script. There
is a commented-out line @code{ulimit -n 256} in the script. You can
remove the @code{'#'} character to uncomment this line, and change the
number 256 to affect the number of file descriptors available to
@code{mysqld}.
@code{ulimit} can increase the number of file descriptors, but only up to the @code{ulimit} (and @code{open-files-limit}) can increase the number of
limit imposed by the operating system. If you need to increase the OS limit file descriptors, but only up to the limit imposed by the operating
on the number of file descriptors available to each process, consult the system. If you need to increase the OS limit on the number of file
documentation for your operating system. descriptors available to each process, consult the documentation for
your operating system.
Note that if you run the @code{tcsh} shell, @code{ulimit} will not work! Note that if you run the @code{tcsh} shell, @code{ulimit} will not work!
@code{tcsh} will also report incorrect values when you ask for the current @code{tcsh} will also report incorrect values when you ask for the current
...@@ -39888,6 +39942,21 @@ though, so Version 3.23 is not released as a stable version yet. ...@@ -39888,6 +39942,21 @@ though, so Version 3.23 is not released as a stable version yet.
@appendixsubsec Changes in release 3.23.30 @appendixsubsec Changes in release 3.23.30
@itemize @bullet @itemize @bullet
@item @item
Added option @code{open-files-limit} to @code{mysqld}.
@item
Changed option @code{open-files} to @code{open-files-limit} in
@code{safe_mysqld}.
@item
Item fixed a bug where some rows where not found with @code{HEAP} tables
that had many keys.
@item
Fixed that @code{--bdb-no-sync} works.
@item
Changed @code{--bdb-recover} to @code{--bdb-no-recover} as recover should
be on by default.
@item
Changed the default number of BDB locks to 10000.
@item
Fixed a bug from 3.23.29 when allocation the shared structure needed Fixed a bug from 3.23.29 when allocation the shared structure needed
for BDB tables. for BDB tables.
@item @item
...@@ -40551,6 +40620,8 @@ a feature. ...@@ -40551,6 +40620,8 @@ a feature.
@itemize @bullet @itemize @bullet
@item @item
Fixed bug in 3.23.19; @code{DELETE FROM tbl_name} removed the .frm file. Fixed bug in 3.23.19; @code{DELETE FROM tbl_name} removed the .frm file.
@item
Added @code{SHOW CREATE TABLE}.
@end itemize @end itemize
@node News-3.23.19, News-3.23.18, News-3.23.20, News-3.23.x @node News-3.23.19, News-3.23.18, News-3.23.20, News-3.23.x
...@@ -505,10 +505,12 @@ static void usage(int version) ...@@ -505,10 +505,12 @@ static void usage(int version)
log.\n"); log.\n");
#ifndef __WIN__ #ifndef __WIN__
printf("\ printf("\
--pager[=...] Output type. Default is your ENV variable PAGER.\n\ --pager[=...] Pager to use to display results. If you don't supply\n\
an option the default pager is taken from your ENV\n\
variable PAGER (%s).\n\
Valid pagers are less, more, cat [> filename], etc.\n\ Valid pagers are less, more, cat [> filename], etc.\n\
See interactive help (\\h) also. This option does\n\ See interactive help (\\h) also. This option does\n\
not work in batch mode.\n"); not work in batch mode.\n", getenv("PAGER") ? getenv("PAGER") : "");
#endif #endif
printf("\ printf("\
-p[password], --password[=...]\n\ -p[password], --password[=...]\n\
......
...@@ -489,7 +489,8 @@ AC_CHECK_HEADERS(fcntl.h float.h floatingpoint.h ieeefp.h limits.h \ ...@@ -489,7 +489,8 @@ AC_CHECK_HEADERS(fcntl.h float.h floatingpoint.h ieeefp.h limits.h \
stdlib.h stddef.h \ stdlib.h stddef.h \
strings.h string.h synch.h sys/mman.h sys/socket.h netinet/in.h arpa/inet.h \ strings.h string.h synch.h sys/mman.h sys/socket.h netinet/in.h arpa/inet.h \
sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h \ sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h \
unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h) unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h \
sys/ioctl.h)
#-------------------------------------------------------------------- #--------------------------------------------------------------------
# Check for system libraries. Adds the library to $LIBS # Check for system libraries. Adds the library to $LIBS
......
...@@ -37,7 +37,7 @@ int heap_rkey(HP_INFO *info, byte *record, int inx, const byte *key) ...@@ -37,7 +37,7 @@ int heap_rkey(HP_INFO *info, byte *record, int inx, const byte *key)
} }
memcpy(record,pos,(size_t) share->reclength); memcpy(record,pos,(size_t) share->reclength);
info->update=HA_STATE_AKTIV; info->update=HA_STATE_AKTIV;
if (!(share->keydef->flag & HA_NOSAME)) if (!(share->keydef[inx].flag & HA_NOSAME))
memcpy(info->lastkey,key,(size_t) share->keydef[inx].length); memcpy(info->lastkey,key,(size_t) share->keydef[inx].length);
DBUG_RETURN(0); DBUG_RETURN(0);
} }
......
...@@ -88,7 +88,9 @@ enum ha_extra_function { ...@@ -88,7 +88,9 @@ enum ha_extra_function {
HA_EXTRA_FORCE_REOPEN=21, /* Datafile have changed on disk */ HA_EXTRA_FORCE_REOPEN=21, /* Datafile have changed on disk */
HA_EXTRA_FLUSH, /* Flush tables to disk */ HA_EXTRA_FLUSH, /* Flush tables to disk */
HA_EXTRA_NO_ROWS, /* Don't write rows */ HA_EXTRA_NO_ROWS, /* Don't write rows */
HA_EXTRA_RESET_STATE /* Reset positions */ HA_EXTRA_RESET_STATE, /* Reset positions */
HA_EXTRA_IGNORE_DUP_KEY, /* Dup keys don't rollback everything*/
HA_EXTRA_NO_IGNORE_DUP_KEY
}; };
/* The following is parameter to ha_panic() */ /* The following is parameter to ha_panic() */
......
.TH ISAMCHK 1 "19 December 2000"
.SH NAME
.BR isamchk
\- Description, check and repair of ISAM tables.
Used without options all tables on the command will be checked for errors
.SH USAGE
isamchk [OPTIONS] tables[.ISM]
.SH SYNOPSIS
.B isamchk
.RB [ \-a | \-\-analyze ]
.RB [ \-# | \-\-debug=... ]
.RB [ \-\-character\-sets\-dir=...]
.RB [ \-C | \-\-default\-character\-set=...]
.RB [ \-d | \-\-description ]
.RB [ \-e | \-\-extend\-check ]
.RB [ \-f | \-\-force ]
.RB [ \-? | \-\-help ]
.RB [ \-i | \-\-information ]
.RB [ \-k | \-\-keys\-used=# ]
.RB [ \-l | \-\-no\-symlinks]
.RB [ \-q | \-\-quick ]
.RB [ \-r | \-\-recover ]
.RB [ \-o | \-\-safe\-recover ]
.RB [ \-O | "\-\-set\-variable var=option"]
.RB [ \-s | \-\-silent ]
.RB [ \-S | \-\-sort\-index ]
.RB [ \-R | \-\-sort\-records=#]
.RB [ \-u | \-\-unpack ]
.RB [ \-v | \-\-verbose ]
.RB [ \-V | \-\-version ]
.RB [ \-w | \-\-wait ]
.SH DESCRIPTION
.TP
.BR \-a | \-\-analyze
Analyze distribution of keys. Will make some joins in
MySQL faster.
.TP
.BR \-# | \-\-debug=...
Output debug log. Often this is 'd:t:o ,filename`
.TP
.BR \-\-character\-sets\-dir=...
Directory where character sets are
.TP
.BR \-C | \-\-default\-character\-set=...
Set the default character set
.TP
.BR \-d | \-\-description
Prints some information about table.
.TP
.BR \-e | \-\-extend\-check
Check the table VERY thoroughly. One need use this
only in extreme cases as isamchk should normally find
all errors even without this switch
.TP
.BR \-f | \-\-force
Overwrite old temporary files.
If one uses \-f when checking tables (running isamchk
without \-r), isamchk will automatically restart with
\-r on any wrong table.
.TP
.BR \-? | \-\-help
Display help and exit.
.TP
.BR \-i | \-\-information
Print statistics information about the table
.TP
.BR \-k | \-\-keys\-used=#
Used with '\-r'. Tell ISAM to update only the first
# keys. This can be used to get faster inserts!
.TP
.BR \-l | \-\-no\-symlinks
Do not follow symbolic links when repairing. Normally
isamchk repairs the table a symlink points at.
.TP
.BR \-q | \-\-quick
Used with \-r to get a faster repair. (The data file
isn't touched.) One can give a second '\-q' to force
isamchk to modify the original datafile.
.TP
.BR \-r | \-\-recover
Can fix almost anything except unique keys that aren't
unique.
.TP
.BR \-o | \-\-safe\-recover
Uses old recovery method; slower than '\-r' but can
handle a couple of cases that '\-r' cannot handle.
.TP
.BR \-O | " \-\-set\-variable var=option "
Change the value of a variable.
.TP
.BR \-s | \-\-silent
Only print errors. One can use two \-s to make isamchk
very silent
.TP
.BR \-S | \-\-sort\-index
Sort index blocks. This speeds up 'read\-next' in
applications
.TP
.BR \-R | \-\-sort\-records=#
Sort records according to an index. This makes your
data much more localized and may speed up things
(It may be VERY slow to do a sort the first time!)
.TP
.BR \-u | \-\-unpack
Unpack file packed with pack_isam.
.TP
.BR \-v | \-\-verbose
Print more information. This can be used with
\-d and \-e. Use many \-v for more verbosity!
.TP
.BR \-V | \-\-version
Print version and exit.
.TP
.BR \-w | \-\-wait
Wait if table is locked.
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH ISAMLOG 1 "20 December 2000"
.SH NAME
isamlog - Write info about whats in a nisam log file.
.SH USAGE
isamlog [-?iruvIV] [-c #] [-f #] [-F filepath/] [-o #] [-R file recordpos] [-w write_file] [log-filename [table ...]]
.SH SYNOPSIS
.B isamlog
.RB [ -? | -I ]
.RB [ -V ]
.RB [ -c ]
.RB [ -f ]
.RB [ -F ]
.RB [ -i ]
.RB [ -o ]
.RB [ "-p #" ]
.RB [ -r ]
.RB [ -R ]
.RB [ -u ]
.RB [ -v ]
.RB [ -w ]
.SH DESCRIPTION
.TP
.BR isamlog
.TP
.BR -? | -I
info
.TP
.BR -V
version
.TP
.BR -c
do only # commands
.TP
.BR -f
max open files
.TP
.BR -F
file path
.TP
.BR -i
extra info
.TP
.BR -o
offset
.TP
.BR "-p #"
remove # components from path
.TP
.BR -r
recover
.TP
.BR -R
file recordposition
.TP
.BR -u
update
.TP
.BR -v
verbose
.TP
.BR -w
write file
.SH NOTE
If no file name is given isam.log is used
One can give a second and a third '-v' for more verbose.
Normaly one does a update (-u).
If a recover is done all writes and all possibly updates and deletes is done
and errors are only counted.
If one gives table names as arguments only these tables will be updated
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
...@@ -116,6 +116,13 @@ executable shell script for starting mysqld safely ...@@ -116,6 +116,13 @@ executable shell script for starting mysqld safely
.TP .TP
.I /site/var/mysql/data .I /site/var/mysql/data
location of database files location of database files
.SH EXAMPLE
You can also read a backup dump file back into MySQL with:
.TP
.BR mysql
\fP\fIdatabase\fP
.BR <
backup-file.sql
.SH "SEE ALSO" .SH "SEE ALSO"
isamchk (1), isamchk (1),
isamlog (1), isamlog (1),
......
.TH ZAP 1 "20 December 2000"
.SH NAME
zap - a perl script used to kill processes
.SH USAGE
/usr/bin/mysql_zap [-signal] [-?Ift] pattern
.SH SYNOPSIS
.B zap
.RB [ \-I | \-? ]
.RB [ \-f ]
.RB [ \-t ]
.SH DESCRIPTION
.TP
.BR zap
supports by executing
.TP
.BR \-I | \-?
info
.TP
.BR \-f
force
.TP
.BR \-t
test
.SH NOTE
If
.BR -f
isn't given, ask user for confirmation for each process to kill. If signal isn't given, try first with signal 15 and after that with signal 9. If
.BR -t
is given the processes is only shown on stdout.
.SH "SEE ALSO"
isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com)
.\" end of man page
\ No newline at end of file
.TH MYSQLACCESS 1 "19 December 2000"
.SH NAME
.BR mysqlaccess
\- Create new users to mysql.
.SH USAGE
mysqlaccess [host [user [db]]] OPTIONS
.SH SYNOPSIS
.B mysqlaccess
.RB [ \-? | \-\-help ]
.RB [ \-v | \-\-version ]
.RB [ \-p | \-\-password=# ]
.RB [ \-h | \-\-host=# ]
.RB [ \-d | \-\-db=# ]
.RB [ \-U | \-\-superuser=# ]
.RB [ \-P | \-\-spassword=# ]
.RB [ \-H | \-\-rhost=# ]
.RB [ \-\-old_server ]
.RB [ \-b | \-\-brief ]
.RB [ \-t | \-\-table ]
.RB [ \-\-relnotes]
.RB [ \-\-plan ]
.RB [ \-\-howto ]
.RB [ \-\-debug=N ]
.RB [ \-\-copy ]
.RB [ \-\-preview ]
.RB [ \-\-commit ]
.RB [ \-\-rollback ]
.SH DESCRIPTION
.TP
.BR \-? | \-\-help
display this helpscreen and exit
.TP
.BR \-v | \-\-version
print information on the program `mysqlaccess'
.TP
.BR \-u | \-\-user=#
username for logging in to the db
.TP
.BR \-p | \-\-password=#
validate password for user
.TP
.BR \-h | \-\-host=#
name or IP\-number of the host
.TP
.BR \-d | \-\-db=#
name of the database
.TP
.BR \-U | \-\-superuser=#
connect as superuser
.TP
.BR \-P | \-\-spassword=#
password for superuser
.TP
.BR \-H | \-\-rhost=#
remote MySQL\-server to connect to
.TP
.BR \-\-old_server
connect to old MySQL\-server (before v3.21) which
does not yet know how to handle full where clauses.
.TP
.BR \-b | \-\-brief
single\-line tabular report
.TP
.BR \-t | \-\-table
report in table\-format
.TP
.BR \-\-relnotes
print release\-notes
.TP
.BR \-\-plan
print suggestions/ideas for future releases
.TP
.BR \-\-howto
some examples of how to run `mysqlaccess'
.TP
.BR \-\-debug=N
enter debuglevel N (0..3)
.TP
.BR \-\-copy
reload temporary grant\-tables from original ones
.TP
.BR \-\-preview
show differences in privileges after making
changes in (temporary) grant\-tables
.TP
.BR \-\-commit
copy grant\-rules from temporary tables to grant\-tables
(!don't forget to do an mysqladmin reload)
.TP
.BR \-\-rollback
undo the last changes to the grant\-tables.
.SH NOTE
+ At least the user and the db must be given (even with wildcards)
+ If no host is given, `localhost' is assumed
+ Wilcards (*,?,%,_) are allowed for host, user and db, but be sure
to escape them from your shell!! (ie type \* or '*')
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH MYSQLADMIN 1 "18 December 2000"
.SH NAME
mysqladmin [OPTIONS] command command.... \- A utility for performing administrative operations
.SH OPTION SYNOPSIS
.B mysqladmin
.RB [ \-# | \-\-debug=
.IR logfile ]
.RB [ \-f | \-\-force ]
.RB [ \-? | \-\-help ]
.BR [ --character-sets-dir=\fP\fIdirectory\fP ]
.RB [ \-C | \-\-compress ]
.RB [ \-h | \-\-host=[#] ]
.RB [ \-p[pwd] ]
.RI [ \-\-password=[pwd] ]
.RB [ \-P | \-\-port=
.IR pnum ]
.RB [ \-i | \-\-sleep=
.IR sec ]
.RB [ \-E | \-\-vertical ]
.RB [ \-s | \-\-silent ]
.RB [ \-S | \-\-socket=
.IR # ]
.RB [ \-r | \-\-relative ]
.RB [ \-t | \-\-timeout=
.IR # ]
.RB [ \-u | \-\-user=
.IR uname ]
.RB [ \-v | \-\-verbose ]
.RB [ \-V | \-\-version ]
.RB [ \-w | \-\-wait[=retries] ]
.SH OPTION DESCRIPTION
You can get a list of the options your version of
.IR mysqladmin
supports by executing
.BR "mysqladmin \-\-help"
.SH OPTIONS
.TP
.BR \-# | \-\-debug=\fP\fIlogfile\fP
Output debug log. Often this is 'd:t:o,filename`
.TP
.BR \-f | \-\-force
Don't ask for confirmation on drop database; with
multiple commands, continue even if an error occurs
.TP
.BR \-? | \-\-help
Display help and exit
.TP
.BR --character-sets-dir=\fP\fIdirectory\fP
Set the character set directory
.TP
.BR \-C | \-\-compress
Use compression in server/client protocol
.TP
\fB\-h\fP|\fP\-\-host=\fP\fIhostname\fP
Connect to host
.TP
\fB\-p\fP|\fB\-\-password\fP[\fB=\fP\fIpwd\fP]
Password to use when connecting to server
If password is not given it's asked from the tty
.TP
\fB\-P\fR|\fB\-\-port=\fP\fIpnum\fP
Port number to use for connection
.TP
\fB\-i\fR|\fB\-\-sleep=\fP\fIsec\fP
Execute commands again and again with a sleep between
.TP
.BR \-r | \-\-relative
Show difference between current and previous values
when used with
.BR -i
. Currently works only with
extended-status
.TP
.BR \-E | \-\-vertical
Print output vertically. Is similar to
.BR --relative,
but prints output vertically.
.TP
.BR \-s | \-\-silent
Silently exit if one can't connect to server
.TP
\fB\-S\fR|\fB\-\-socket=\fP\fIfile\fP
Socket file to use for connection
.TP
\fB\-t\fR|\fB\-\-timeout=\fP\fIsec\fP
Timeout for connection to the mysqld server
.TP
\fB\-u\fP|\fB\-\-user=\fP\fIuname\fP
User for login if not current user
.TP
.BR \-v | \-\-verbose
Write more information
.TP
.BR \-V | \-\-version
Output version information and exit
.TP
.BR \-w | \-\-wait
Wait and retry if connection is down
.SH COMMAND SYNOPSIS
.B MySQLADMIN
.RB [ "create \fP\fIdatabasename\fP "]
.RB [ "drop \fP\fIdatabasename\fP" ]
.RB [ extended-status ]
.RB [ flush-hosts ]
.RB [ flush-logs ]
.RB [ flush-tables ]
.RB [ flush-privileges ]
.RB [ " kill id,id,... " ]
.RB [ "password \fP\fInew-password\fP "]
.RB [ ping ]
.RB [ processlist ]
.RB [ reload ]
.RB [ refresh ]
.RB [ shutdown ]
.RB [ slave-start ]
.RB [ slave-stop ]
.RB [ status ]
.RB [ variables ]
.RB [ version ]
.SH COMMANDS
Where command is a one or more of: (Commands may be shortened)
.TP
.BR "create databasename"
Create a new database
.TP
.BR "drop databasename"
Delete a database and all its tables
.TP
.BR extended-status
Gives an extended status message from the server
.TP
.BR flush-hosts
Flush all cached hosts
.TP
.BR flush-logs
Flush all logs
.TP
.BR flush-status
Clear status variables
.TP
.BR flush-tables
Flush all tables
.TP
.BR flush-threads
Flush the thread cache
.TP
.BR flush-privileges
Reload grant tables (same as reload)
.TP
.BR "kill id,id,..."
Kill mysql threads
.TP
.BR "password \fP\fInew-password\fP"
Change old password to new-password
.TP
.BR ping
Check if mysqld is alive
.TP
.BR processlist
Show list of active threads in server
.TP
.BR reload
Reload grant tables
.TP
.BR refresh
Flush all tables and close and open logfiles
.TP
.BR shutdown
Take server down
.TP
.BR status
Gives a short status message from the server
.TP
.BR variables
Prints variables available
.TP
.BR version
Get version info from server
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH MYSQLD 1 "19 December 2000"
.SH NAME
.BR mysqld
\- Starts the MySQL server demon
.SH USAGE
mysqld [OPTIONS]
.SH SYNOPSIS
.B mysqld
.RB [ \-\-ansi ]
.RB [ \-b | \-\-basedir=\fP\fIpath\fP ]
.RB [ \-\-big-tables ]
.RB [ \-\-bind\-address=IP ]
.RB [ \-\-character\-sets\-dir=\fP\fIpath\fP ]
.RB [ \-\-chroot=\fP\fIpath\fP ]
.RB [ \-h | \-\-datadir=\fP\fIpath\fP ]
.RB [ \-\-default\-character\-set=\fP\fIcharset\fP ]
.RB [ \-\-default\-table\-type=\fP\fItype \fP]
.RB [ \-\-delay\-key\-write\-for\-all\-tables ]
.RB [ \-\-enable\-locking ]
.RB [ \-T | \-\-exit\-info]
.RB [ \-\-flush ]
.RB [ \-? | \-\-help ]
.RB [ \-\-init\-file=file ]
.RB [ \-L | \-\-language=... ]
.RB [ \-l | \-\-log[=file] ]
.RB [ \-\-log\-isam[=file] ]
.RB [ \-\-log\-slow\-queries\fP\fI[=file]\fP ]
.RB [ \-\-log\-update\fP\fI[=file]\fP ]
.RB [ \-\-log\-long\-format ]
.RB [ \-\-low\-priority\-updates ]
.RB [ \-\-memlock ]
.RB [ " \-\-myisam\-recover [=option[,option...]]] where option is one of DEFAULT, BACKUP, FORCE or QUICK." ]
.RB [ \-\-pid\-file=\fP\fIpath\fP ]
.RB [ \-P | \-\-port=... ]
.RB [ \-o | \-\-old\-protocol ]
.RB [ \-\-one\-thread ]
.RB [ \-O | \-\-set\-variable var=\fP\fIoption\fP ]
.RB [ \-Sg | \-\-skip\-grant\-tables ]
.RB [ \-\-safe\-mode ]
.RB [ \-\-secure ]
.RB [ \-\-skip\-concurrent\-insert ]
.RB [ \-\-skip\-delay\-key\-write ]
.RB [ \-\-skip\-locking ]
.RB [ \-\-skip\-name\-resolve ]
.RB [ \-\-skip\-networking ]
.RB [ \-\-skip\-new ]
.RB [ \-\-skip\-host\-cache ]
.RB [ \-\-skip\-show\-database ]
.RB [ \-\-skip\-thread\-priority ]
.RB [ \-\-socket=path ]
.RB [ \-t | \-\-tmpdir=\fP\fIpath \fP]
.RB [ \-u | \-\-user=\fP\fIuser_name\fP ]
.RB [ \-V | \-\-version ]
.SH DESCRIPTION
.TP
.BR --ansi
Use ANSI SQL syntax instead of MySQL syntax. See section 5.2 Running MySQL in ANSI Mode.
.TP
.BR -b | --basedir=\fP\fIpath \fP
Path to installation directory. All paths are usually resolved relative to this.
.TP
.BR --big-tables
Allow big result sets by saving all temporary sets on file. It solves most 'table full' errors, but also slows down the queries where in\-memory tables would suffice. Since Version 3.23.2, MySQL is able to solve it automaticaly by using memory for small temporary tables and switching to disk tables where necessary.
.TP
.BR \-\-bind\-address=\fP\fIIP \fP
IP address to bind to.
.TP
.BR \-\-character\-sets\-dir=\fP\fIpath \fP
Directory where character sets are. See section 10.1.1 The Character Set Used for Data and Sorting.
.TP
.BR \-\-chroot=\fP\fIpath \fP
Chroot mysqld daemon during startup. Recommended security measure. It will somewhat limit LOAD DATA INFILE and SELECT ... INTO OUTFILE though.
.TP
.BR \-h | \-\-datadir=\fP\fIpath \fP
Path to the database root.
.TP
.BR \-\-default\-character\-set=\fP\fIcharset \fP
Set the default character set. See section 10.1.1 The Character Set Used for Data and Sorting.
.TP
.BR \-\-default\-table\-type=\fP\fItype \fP
Set the default table type for tables. See section 8 MySQL Table Types.
.TP
.BR \-\-delay\-key\-write\-for\-all\-tables
Don't flush key buffers between writes for any MyISAM table. See Mysql Manual section 12.2.3 Tuning Server Parameters.
.TP
.BR \-\-enable\-locking
Enable system locking.
.TP
.BR \-T | \-\-exit\-info
Print some debug info at exit.
.TP
.BR \-\-flush
Flush all changes to disk after each SQL command. Normally MySQL only does a write of all changes to disk after each SQL command and lets the operating system handle the syncing to disk. See section 20.2 What to Do if MySQL Keeps Crashing.
.TP
.BR \-? | \-\-help
Display short help and exit.
.TP
.BR \-\-init\-file=\fP\fIfile \fP
Read SQL commands from this file at startup.
.TP
.BR \-L | \-\-language=...
Client error messages in given language. May be given as a full path. See Mysql Manual section 10.1 What Languages Are Supported by MySQL?.
.TP
.BR \-l | \-\-log\fP\fI[=file] \fP
Log connections and queries to file.
.TP
.BR \-\-log\-isam\fP\fI[=file] \fP
Log all ISAM/MyISAM changes to file (only used when debugging ISAM/MyISAM).
.TP
.BR \-\-log\-slow\-queries\fP\fI[=file] \fP
Log all queries that have taken more than long_query_time seconds to execute to file. See Mysql Manual section 21.5 The Slow Query Log.
.TP
.BR \-\-log\-update\fP\fI[=file] \fP
Log updates to file.# where # is a unique number if not given. See Mysql Manual section 21.3 The Update Log.
.TP
.BR \-\-log\-long\-format
Log some extra information to update log. If you are using
.BR \-\-log\-slow\-queries
then queries that are not using indexes are logged to the slow query log.
.TP
.BR \-\-low\-priority\-updates
Table\-modifying operations (INSERT/DELETE/UPDATE) will have lower priority than selects. It can also be done via {INSERT | REPLACE | UPDATE | DELETE} LOW_PRIORITY ... to lower the priority of only one query, or by SET OPTION SQL_LOW_PRIORITY_UPDATES=1 to change the priority in one thread. See Mysql Manual section 12.2.9 Table Locking Issues.
.TP
.BR \-\-memlock
Lock the mysqld process in memory. This works only if your system supports the mlockall() system call. This may help if you have a problem where the operating system is causing mysqld to swap on disk.
.TP
.BR " \-\-myisam\-recover [=option[,option...]]] where option is one of DEFAULT, BACKUP, FORCE or QUICK. "
If this option is used, mysqld will on open check if the table is marked as crashed or if if the table wasn't closed properly (The last option only works if you are running with \-\-skip\-locking). If this is the case mysqld will run check on the table. If the table was corrupted, mysqld will attempt to repair it. The following options affects how the repair works.
.BR DEFAULT
The same as not giving any option to \-\-myisam\-recover.
.BR BACKUP
If the data table was changed during recover, save a backup of the `table_name.MYD' data file as `table_name\-datetime.BAK'.
.BR FORCE
Run recover even if we will loose more than one row from the .MYD file.
.BR QUICK
Don't check the rows in the table if there isn't any delete blocks.
Before a table is automaticly repaired, mysqld will add a note about this in the error log. If you want to be able to recover from most things without user intervention, you should use the options BACKUP,FORCE. This will force a repair of a table even if some rows would be deleted, but it will keep the old data file as a backup so that you can later examine what happened.
.TP
.BR \-\-pid\-file=\fP\fIpath \fP
Path to pid file used by safe_mysqld.
.TP
.BR \-P | \-\-port=...
Port number to listen for TCP/IP connections.
.TP
.BR \-o | \-\-old\-protocol
Use the 3.20 protocol for compatibility with some very old clients. See Mysql Manual section 4.17.3 Upgrading from Version 3.20 to Version 3.21.
.TP
.BR \-\-one\-thread
Only use one thread (for debugging under Linux). See Mysql Manual section H.1 Debugging a MySQL server.
.TP
.BR \-O | " \-\-set\-variable var=\fP\fIoption\fP "
Give a variable a value. \-\-help lists variables. You can find a full description for all variables in the SHOW VARIABLES section in this manual. See Mysql Manual section 7.28.4 SHOW VARIABLES. The tuning server parameters section includes information of how to optimize these. See Mysql Manual section 12.2.3 Tuning Server Parameters.
.TP
.BR \-Sg | \-\-skip\-grant\-tables
This option causes the server not to use the privilege system at all. This gives everyone full access to all databases! (You can tell a running server to start using the grant tables again by executing mysqladmin flush\-privileges or mysqladmin reload.)
.TP
.BR \-\-safe\-mode
Skip some optimize stages. Implies
.BR \-\-skip\-delay\-key\-write.
.TP
.BR \-\-secure
IP numbers returned by the gethostbyname() system call are checked to make sure they resolve back to the original hostname. This makes it harder for someone on the outside to get access by pretending to be another host. This option also adds some sanity checks of hostnames. The option is turned off by default in MySQL Version 3.21 because sometimes it takes a long time to perform backward resolutions. MySQL Version 3.22 caches hostnames (unless \-\-skip\-host\-cache is used) and has this option enabled by default.
.TP
.BR \-\-skip\-concurrent\-insert
Turn off the ability to select and insert at the same time on MyISAM tables. (This is only to be used if you think you have found a bug in this feature).
.TP
.BR \-\-skip\-delay\-key\-write
Ignore the delay_key_write option for all tables. See Mysql Manual section 12.2.3 Tuning Server Parameters.
.TP
.BR \-\-skip\-locking
Don't use system locking. To use isamchk or myisamchk you must shut down the server. See Mysql Manual section 1.6 How Stable Is MySQL?. Note that in MySQL Version 3.23 you can use REPAIR and CHECK to repair/check MyISAM tables.
.TP
.BR \-\-skip\-name\-resolve
Hostnames are not resolved. All Host column values in the grant tables must be IP numbers or localhost.
.TP
.BR \-\-skip\-networking
Don't listen for TCP/IP connections at all. All interaction with mysqld must be made via Unix sockets. This option is highly recommended for systems where only local requests are allowed. However, this option is unsuitable for systems that use MIT\-pthreads, because the MIT\-pthreads package doesn't support Unix sockets.
.TP
.BR \-\-skip\-new
Don't use new, possible wrong routines. Implies
.BR \-\-skip\-delay\-key\-write
. This will also set default table type to ISAM. See Mysql Manual section 8.3 ISAM Tables.
.TP
.BR \-\-skip\-host\-cache
Never use host name cache for faster name\-ip resolution, but query DNS server on every connect instead.
.TP
.BR \-\-skip\-show\-database
Don't allow 'SHOW DATABASE' commands, unless the user has process privilege.
.TP
.BR \-\-skip\-thread\-priority
Disable using thread priorities for faster response time.
.TP
.BR \-\-socket=\fP\fIpath \fP
Socket file to use for local connections instead of default /tmp/mysql.sock.
.TP
.BR \-t | \-\-tmpdir=\fP\fIpath\fP
Path for temporary files. It may be useful if your default /tmp directory resides on a partition too small to hold temporary tables.
.TP
.BR \-u | \-\-user=\fP\fIuser_name \fP
Run mysqld daemon as user user_name. This option is mandatory when starting mysqld as root.
.TP
.BR \-V | \-\-version
Output version information and exit.
.SH NOTE
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH MYSQLD_MULTI 1 "20 December 2000"
.SH NAME
mysqld_multi - is meant for managing several mysqld processes running in different UNIX sockets and TCP/IP ports.
.SH USAGE
mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...]
.SH SYNOPSIS
.B mysqld_multi
.RB [ --config-file=... ]
.RB [ --example ]
.RB [ --help ]
.RB [ --log=... ]
.RB [ --mysqladmin=... ]
.RB [ --mysqld=... ]
.RB [ --no-log ]
.RB [ --password=... ]
.RB [ --tcp-ip ]
.RB [ --user=... ]
.RB [ --version ]
.SH DESCRIPTION
.TP
.BR mysqld_multi
.TP
.BR --config-file=...
Alternative config file. NOTE: This will not affect this program\'s own options (group [mysqld_multi]), but only groups [mysqld#]. Without this option everything will be searched from the ordinary my.cnf file.
.TP
.BR --example
Give an example of a config file.
.TP
.BR --help
Print this help and exit.
.TP
.BR --log=...
Log file. Full path to and the name for the log file. NOTE: If the file exists, everything will be appended.
.TP
.BR --mysqladmin=...
mysqladmin binary to be used for a server shutdown.
.TP
.BR --mysqld=...
mysqld binary to be used. Note that you can give safe_mysqld to this option also. The options are passed to mysqld. Just make sure you have mysqld in your environment variable PATH or fix safe_mysqld.
.TP
.BR --no-log
Print to stdout instead of the log file. By default the log file is turned on.
.TP
.BR --password=...
Password for user for mysqladmin.
.TP
.BR --tcp-ip
Connect to the MySQL server(s) via the TCP/IP port instead of the UNIX socket. This affects stopping and reporting. If a socket file is missing, the server may still be running, but can be accessed only via the TCP/IP port. By default connecting is done via the UNIX socket.
.TP
.BR --user=...
MySQL user for mysqladmin.
.TP
.BR --version
Print the version number and exit.
.SH NOTE
Please see the mysql manual for more detailed information on this.
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH MYSQLDUMP 1 "19 December 2000"
.SH NAME
mysqldump \- text-based client for dumping or backing up mysql databases , tables and or data.
.SH USAGE
.BR "mysqldump [\fP\fIOPTIONS\fP] database [\fP\fItables\fP]"
.TP
OR
.BR "mysqldump [\fP\fIOPTIONS\fP] \-\-databases [\fP\fIOPTIONS\fP] DB1 [\fP\fIDB2 DB3...\fP]"
.TP
OR
.BR "mysqldump [\fP\fIOPTIONS\fP] \-\-all-databases [\fP\fIOPTIONS\fP]"
.SH OPTION SYNOPSIS
.B mysqldump
.RB [ \-A | \-\-all-databases ]
.RB [ \-a | \-\-all ]
.RB [ \-# | \-\-debug=... ]
.RB [ \-\-character-sets-dir=...]
.RB [ \-? | \-\-help ]
.RB [ \-B | \-\-databases ]
.RB [ \-c | \-\-complete-insert ]
.RB [ \-C | \-\-compress ]
.RB [ \-\-default-character-set=...]
.RB [ \-e | \-\-extended-insert ]
.RB [ \-\-add-drop-table ]
.RB [ \-\-add-locks ]
.RB [ \-\-allow-keywords ]
.RB [ \-\-delayed-insert ]
.RB [ \-F | \-\-flush-logs ]
.RB [ \-f | \-\-force ]
.RB [ \-h | \-\-host=... ]
.RB [ \-l | \-\-lock-tables ]
.RB [ \-n | \-\-no-create-db ]
.RB [ \-t | \-\-no-create-info ]
.RB [ \-d | \-\-no-data ]
.RB [ \-O | \-\-set-variable var=\fP\fIoption\fP ]
.RB [ \-\-opt ]
.RB [ \-p | \-\-password\fP\fI[=...]\fP ]
.RB [ \-P | \-\-port=... ]
.RB [ \-q | \-\-quick ]
.RB [ \-Q | \-\-quote-names ]
.RB [ \-S | \-\-socket=... ]
.RB [ \-\-tables ]
.RB [ \-T | \-\-tab=... ]
.RB [ \-u | \-\-user=# ]
.RB [ \-v | \-\-verbose ]
.RB [ \-V | \-\-version ]
.RB [ \-w | \-\-where= ]
.RB [ \-\-delayed ]
.RB [ \-e | \-\-extended-insert ]
.RB [ \-\-fields\-terminated\-by=... ]
.RB [ \-\-fields\-enclosed\-by=... ]
.RB [ \-\-fields-optionally\-enclosed\-by=... ]
.RB [ \-\-fields\-escaped\-by=... ]
.RB [ \-\-lines\-terminated\-by=... ]
.RB [ \-v | \-\-verbose ]
.RB [ \-V | \-\-version ]
.RB [ "\-O net_buffer_length=#, where # < 16M" ]
.SH DESCRIPTION
Dumping definition and data mysql database or table
.IR mysqldump
supports by executing
.TP
.BR \-A | \-\-all\-databases
Dump all the databases. This will be same as
.BR\-\-databases
with all databases selected.
.TP
.BR \-a | \-\-all
Include all MySQL specific create options.
.TP
.BR \-# | \-\-debug=...
Output debug log. Often this is 'd:t:o,filename`.
.TP
.BR \-\-character\-sets\-dir=...
Directory where character sets are
.TP
.BR \-? | \-\-help
Display this help message and exit.
.TP
.BR \-B | \-\-databases
To dump several databases. Note the difference in
usage; In this case no tables are given. All name
arguments are regarded as databasenames.
'USE db_name;' will be included in the output
.TP
.BR \-c | \-\-complete\-insert
Use complete insert statements.
.TP
.BR \-C | \-\-compress
Use compression in server/client protocol.
.TP
.BR \-\-default\-character\-set=...
Set the default character set
.TP
.BR \-e | \-\-extended\-insert
Allows utilization of the new, much faster
INSERT syntax.
.TP
.BR \-\-add\-drop\-table
Add a 'drop table' before each create.
.TP
.BR \-\-add\-locks
Add locks around insert statements.
.TP
.BR \-\-allow\-keywords
Allow creation of column names that are keywords.
.TP
.BR \-\-delayed\-insert
Insert rows with INSERT DELAYED.
.TP
.BR \-F | \-\-flush\-logs
Flush logs file in server before starting dump.
.TP
.BR \-f | \-\-force
Continue even if we get an sql\-error.
.TP
.BR \-h | \-\-host=...
Connect to host.
.TP
.BR \-l | \-\-lock\-tables
Lock all tables for read.
.TP
.BR \-n | \-\-no\-create\-db
'CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;'
will not be put in the output. The above line will
be added otherwise, if
.BR \-\-databases
or
.BR \-\-all\-databases
option was given.
.TP
.BR \-t | \-\-no\-create\-info
Don't write table creation info.
.TP
.BR \-d | \-\-no\-data
No row information.
.TP
.BR \-O | "\-\-set\-variable var=option"
give a variable a value.
.BR \-\-help
lists variables
.TP
.BR \-\-opt
Same as
.BR " \-\-add\-drop\-table \-\-add\-locks \-\-all \-\-extended\-insert \-\-quick \-\-lock\-tables "
.TP
.BR \-p | \-\-password[=...]
Password to use when connecting to server.
If password is not given it's solicited on the tty.
.TP
.BR \-P | \-\-port=...
Port number to use for connection.
.TP
.BR \-q | \-\-quick
Don't buffer query, dump directly to stdout.
.TP
.BR \-Q | \-\-quote\-names
Quote table and column names with `
.TP
.BR \-S | \-\-socket=...
Socket file to use for connection.
.TP
.BR \-\-tables
\fP\fIOverrides \fPoption
.BR \-\-databases (\-B).
.TP
.BR \-T | \-\-tab=...
Creates tab separated textfile for each table to
given path. (creates .sql and .txt files).
NOTE: This only works if mysqldump is run on
the same machine as the mysqld daemon.
.TP
.BR \-u | \-\-user=#
User for login if not current user.
.TP
.BR \-v | \-\-verbose
Print info about the various stages.
.TP
.BR \-V | \-\-version
Output version information and exit.
.TP
.BR \-w | \-\-where=
dump only selected records; QUOTES mandatory!
.TP
.BR \-\-delayed
Insert rows with the INSERT DELAYED command.
.TP
.BR \-e | \-\-extended-insert
Use the new multiline INSERT syntax. (Gives more compact and faster inserts statements.)
.TP
.BR \-\-fields\-terminated\-by=...
.TP
.BR \-\-fields\-enclosed\-by=...
.TP
.TP
.BR \-\-fields-optionally\-enclosed\-by=...
.TP
.BR \-\-fields\-escaped\-by=...
.TP
.BR \-\-lines\-terminated\-by=...
These options are used with the
.BR -T
option and have the same meaning as the corresponding clauses for LOAD DATA INFILE. See Mysql manual section 7.23 LOAD DATA INFILE Syntax.
.TP
.BR \-v | \-\-verbose
Verbose mode. Print out more information on what the program does.
.TP
.BR \-V | \-\-version
Print version information and exit.
.TP
.BR "\-O net_buffer_length=#, where # < 16M "
When creating multi-row-insert statements (as with option
.BR --extended-insert
or
.BR --opt
), mysqldump will create rows up to net_buffer_length length. If you increase this variable, you should also ensure that the max_allowed_packet variable in the MySQL server is bigger than the net_buffer_length.
.SH EXAMPLES
.TP
The most normal use of mysqldump is probably for making a backup of whole databases. See Mysql Manual section 21.2 Database Backups.
.TP
mysqldump \-\-opt \fP\fIdatabase\fP > backup-file.sql
.TP
You can read this back into MySQL with:
.TP
.BR mysql
\fP\fIdatabase\fP
.BR <
backup-file.sql
.TP
or
.TP
.BR mysql
\-e 'source /patch\-to\-backup/backup\-file.sql' database
.TP
However, it's also very useful to populate another MySQL server with information from a database:
.TP
mysqldump \-\-opt \fP\fIdatabase\fP | mysql \-\-host=\fP\fIremote\-host\fP \-C database
.TP
It is possible to dump several databases with one command:
.TP
mysqldump \-\-databases database1 [ database2 database3... ] > my_databases.sql
.TP
If all the databases are wanted, one can use:
.TP
mysqldump \fP\fI\-\-all\-databases\fP > all_databases.sql
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
\ No newline at end of file
.TH MYSQLSHOW 1 "19 December 2000"
.SH NAME
.BR mysqlshow
\- Shows the structure of a mysql database (databases,tables and columns)
.SH USAGE
shell> mysqlshow [\fP\fIOPTIONS\fP] [\fP\fIdatabase [table [column]]\fP]
.SH SYNOPSIS
.B mysqlshow
.RB [ \-# | \-\-debug=...]
.RB [ \-? | \-\-help ]
.RB [ \-c | \-\-character\-sets\-dir=...]
.RB [ \-C | \-\-compress ]
.RB [ \-h | \-\-host=... ]
.RB [ \-i | \-\-status ]
.RB [ \-k | \-\-keys ]
.RB [ \-p | \-\-password\fP\fI[=...]\fP ]
.RB [ \-P | \-\-port=... ]
.RB [ \-S | \-\-socket=... ]
.RB [ \-u | \-\-user=# ]
.RB [ \-V | \-\-version ]
.SH DESCRIPTION
.TP
.BR \-# | \-\-debug=...
output debug log. Often this is 'd:t:o,filename`
.TP
.BR \-? | \-\-help
display help and exit
.TP
.BR \-c | \-\-character\-sets\-dir=...
Directory where character sets are
.TP
.BR \-C | \-\-compress
Use compression in server/client protocol
.TP
.BR \-h | \-\-host=...
connect to host
.TP
.BR \-i | \-\-status
Shows a lot of extra information about each table
.TP
.BR \-k | \-\-keys
show keys for table
.TP
.BR \-p | \-\-password \fP\fI[=...] \fP
password to use when connecting to server
If password is not given it's asked from the tty.
.TP
.BR \-P | \-\-port=...
Port number to use for connection
.TP
.BR \-S | \-\-socket=...
Socket file to use for connection
.TP
.BR \-u | \-\-user=#
user for login if not current user
.TP
.BR \-V | \-\-version
output version information and exit
.SH NOTE
If last argument contains a shell or SQL wildcard (*,?,% or _) then only
what's matched by the wildcard is shown.
If no database is given then all matching databases are shown.
If no table is given then all matching tables in database are shown
If no column is given then all matching columns and columntypes in table
are shown
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH PERROR 1 "19 December 2000"
.SH NAME
.BR perror
can be used to display a description for a system error code, or an MyISAM/ISAM table handler error code. The error messages are mostly system dependent.
.SH USAGE
perror [OPTIONS] [ERRORCODE [ERRORCODE...]]
.SH SYNOPSIS
.B perror
.RB [ \-? | \-\-help ]
.RB [ \-I | \-\-info ]
.RB [ \-s | \-\-silent ]
.RB [ \-v | \-\-verbose ]
.RB [ \-V | \-\-version ]
.SH DESCRIPTION
.TP
.BR \-? | \-\-help
Displays this help and exits.
.TP
.BR \-I | \-\-info
Synonym for the above.
.TP
.BR \-s | \-\-silent
Only print the error message
.TP
.BR \-v | \-\-verbose
Print error code and message (default).
.TP
.BR \-V | \-\-version
Displays version information and exits.
.SH EXAMPLE
shell> perror 64 79
Error code 64: Machine is not on the network
Error code 79: Can not access a needed shared library
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH REPLACE 1 "20 December 2000"
.SH NAME
.TP
replace - A utility program that is used by msql2mysql, but that has more general applicability as well. replace changes strings in place in files or on the standard input. Uses a finite state machine to match longer strings first. Can be used to swap strings.
.SH USAGE
replace [-?svIV] from to from to ... -- [files]
.TP
or
.TP
replace [-?svIV] from to from to ... < fromfile > tofile
.SH SYNOPSIS
.B replace
.RB [ -? | -I ]
.RB [ -s ]
.RB [ -v ]
.SH DESCRIPTION
.TP
.BR replace
.TP
.BR -? | -I
info
.TP
.BR -s
silent
.TP
.BR -v
verbose
.SH EXTRA INFO
.B Special characters in from string:
.TP
\\^
Match start of line.
.TP
\\$
Match end of line.
.TP
\\b
Match space-character, start of line or end of line. For a end \\b the next replace starts locking at the end space-character. A \\b alone in a string matches only a space-character.
.SH EXAMPLE
this command swaps a and b in the given files:
.TP
shell> replace a b b a -- file1 file2 ...
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH SAFE_MYSQLD 1 "19 December 2000"
.SH NAME
.BR safe_mysqld
is the recommended way to start a mysqld daemon on Unix. safe_mysqld adds some safety features such as restarting the server when an error occurs and logging run-time information to a log file.
.SH SYNOPSIS
.B safe_mysqld
.RB [ \-\-basedir=\fP\fIpath\fP ]
.RB [ \-\-core\-file\-size=# ]
.RB [ \-\-defaults\-extra\-file=\fP\fIpath\fP ]
.RB [ \-\-defaults\-file=\fP\fIpath\fP ]
.RB [ \-\-open\-files=# ]
.RB [ \-\-datadir=\fP\fIpath\fP ]
.RB [ \-\-err\-log=\fP\fIpath \fP]
.RB [ \-\-ledir=path ]
.RB [ \-\-log=\fP\fIpath\fP ]
.RB [ \-\-no\-defaults ]
.RB [ \-\-open\-files=# ]
.RB [ \-\-pid\-file=\fP\fIpath\fP ]
.RB [ \-\-port=# ]
.RB [ \-\-socket=\fP\fIpath\fP ]
.RB [ \-\-timezone=# ]
.RB [ \-\-user=# ]
.SH DESCRIPTION
.TP
.BR \-\-basedir=\fP\fIpath \fP
.TP
.BR \-\-core\-file\-size=#
.TP
.BR \-\-defaults\-extra\-file=\fP\fIpath \fP
.TP
.BR \-\-defaults\-file=\fP\fIpath \fP
.TP
.BR \-\-open\-files=#
Size of the core file mysqld should be able to create. Passed to ulimit \-c.
.TP
.BR \-\-datadir=\fP\fIpath \fP
.TP
.BR \-\-err\-log=\fP\fIpath \fP
.TP
.BR \-\-ledir=\fP\fIpath \fP
Path to mysqld
.TP
.BR \-\-log=\fP\fIpath \fP
.TP
.BR \-\-no\-defaults
.TP
.BR \-\-open\-files=#
Number of files mysqld should be able to open. Passed to ulimit \-n.
.TP
.BR \-\-pid\-file=\fP\fIpath \fP
.TP
.BR \-\-port=#
.TP
.BR \-\-socket=\fP\fIpath \fP
.TP
.BR \-\-timezone=#
Set the timezone (the TZ) variable to the value of this parameter.
.TP
.BR \-\-user=#
.SH NOTE
Note that all options on the command line to safe_mysqld are passed to mysqld. If you wants to use any options in safe_mysqld that mysqld doesn't support, you must specify these in the option file.
.SH "SEE ALSO"
isamchk (1),
isamlog (1),
mysqlaccess (1),
mysqladmin (1),
mysqlbug (1),
mysqld (1),
mysqldump (1),
mysqlshow (1),
msql2mysql (1),
perror (1),
replace (1),
safe_mysqld (1),
which1 (1),
zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a
Michael (Monty) Widenius (monty@tcx.se),
TCX Datakonsult AB (http://www.tcx.se).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH WHICH 1 "20 December 2000"
.SH NAME
which - Jani please supply one.
.SH USAGE
which [options] [--] programname [...]
.SH SYNOPSIS
.B which
.RB [ \-\-version | \-[vV] ]
.RB [ \-\-skip\-dot ]
.RB [ \-\-skip\-tilde ]
.RB [ \-\-show\-dot ]
.RB [ \-\-show\-tilde ]
.RB [ \-\-tty\-only ]
.RB [ \-\-all | \-a ]
.RB [ \-\-read\-alias | \-i ]
.RB [ \-\-skip\-alias ]
.SH DESCRIPTION
.TP
.BR which
supports by executing
.TP
.BR \-\-version | \-[vV]
Print version and exit successfully.
.TP
.BR \-\-skip\-dot
Skip directories in PATH that start with a dot.
.TP
.BR \-\-skip\-tilde
Skip directories in PATH that start with a tilde.
.TP
.BR \-\-show\-dot
Don\'t expand a dot to current directory in output.
.TP
.BR \-\-show\-tilde
Output a tilde for HOME directory for non-root.
.TP
.BR \-\-tty\-only
Stop processing options on the right if not on tty.
.TP
.BR \-\-all | \-a
Print all matches in PATH, not just the first
.TP
.BR \-\-read\-alias | \-i
Read list of aliases from stdin.
.TP
.BR \-\-skip\-alias
Ignore option
.BR --read-alias;
don\'t read stdin.
.SH "SEE ALSO"
isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1),
.SH AUTHOR
Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com)
.\" end of man page
\ No newline at end of file
...@@ -47,7 +47,8 @@ uint my_write(int Filedes, const byte *Buffer, uint Count, myf MyFlags) ...@@ -47,7 +47,8 @@ uint my_write(int Filedes, const byte *Buffer, uint Count, myf MyFlags)
if (my_thread_var->abort) if (my_thread_var->abort)
MyFlags&= ~ MY_WAIT_IF_FULL; /* End if aborted by user */ MyFlags&= ~ MY_WAIT_IF_FULL; /* End if aborted by user */
#endif #endif
if (my_errno == ENOSPC && (MyFlags & MY_WAIT_IF_FULL)) if (my_errno == ENOSPC && (MyFlags & MY_WAIT_IF_FULL) &&
(uint) writenbytes != (uint) -1)
{ {
if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE)) if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH), my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
......
...@@ -8,7 +8,7 @@ use Fcntl; ...@@ -8,7 +8,7 @@ use Fcntl;
BEGIN { BEGIN {
# **************************** # ****************************
# static information... # static information...
$VERSION = "2.05, 17 Feb 2000"; $VERSION = "2.06, 20 Dec 2000";
$0 =~ m%/([^/]+)$%o; $0 =~ m%/([^/]+)$%o;
$script = $1; $script = $1;
$script = 'MySQLAccess' unless $script; $script = 'MySQLAccess' unless $script;
...@@ -302,6 +302,8 @@ Release Notes: ...@@ -302,6 +302,8 @@ Release Notes:
2.05: (2000-02-17) Monty 2.05: (2000-02-17) Monty
Moved the log file from /tmp to ~ Moved the log file from /tmp to ~
2.06: Don't print '+++USING FULL WHERE CLAUSE+++'
_RELEASE _RELEASE
$TODO = <<_TODO; $TODO = <<_TODO;
...@@ -1468,7 +1470,7 @@ sub Sort_table { ...@@ -1468,7 +1470,7 @@ sub Sort_table {
# server version 3.21 has a full where clause :-) # server version 3.21 has a full where clause :-)
if ($MySQLaccess::Host::SERVER >= '3.21') { if ($MySQLaccess::Host::SERVER >= '3.21') {
print "+++USING FULL WHERE CLAUSE+++\n"; # print "+++USING FULL WHERE CLAUSE+++\n";
$start = "SELECT *,UCASE(host) as ucase_host FROM $tbl WHERE "; $start = "SELECT *,UCASE(host) as ucase_host FROM $tbl WHERE ";
$end = ' ORDER BY ' . join(',', @order) . ";\n"; $end = ' ORDER BY ' . join(',', @order) . ";\n";
} }
......
...@@ -46,7 +46,9 @@ parse_arguments() { ...@@ -46,7 +46,9 @@ parse_arguments() {
# safe_mysqld-specific options - must be set in my.cnf ([safe_mysqld])! # safe_mysqld-specific options - must be set in my.cnf ([safe_mysqld])!
--ledir=*) ledir=`echo "$arg" | sed -e "s;--ledir=;;"` ;; --ledir=*) ledir=`echo "$arg" | sed -e "s;--ledir=;;"` ;;
--err-log=*) err_log=`echo "$arg" | sed -e "s;--err-log=;;"` ;; --err-log=*) err_log=`echo "$arg" | sed -e "s;--err-log=;;"` ;;
# QQ The --open-files should be removed
--open-files=*) open_files=`echo "$arg" | sed -e "s;--open-files=;;"` ;; --open-files=*) open_files=`echo "$arg" | sed -e "s;--open-files=;;"` ;;
--open-files-limit=*) open_files=`echo "$arg" | sed -e "s;--open-files-limit=;;"` ;;
--core-file-size=*) core_file_size=`echo "$arg" | sed -e "s;--core_file_size=;;"` ;; --core-file-size=*) core_file_size=`echo "$arg" | sed -e "s;--core_file_size=;;"` ;;
--timezone=*) TZ=`echo "$arg" | sed -e "s;--timezone=;;"` ; export TZ; ;; --timezone=*) TZ=`echo "$arg" | sed -e "s;--timezone=;;"` ; export TZ; ;;
*) *)
......
Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 21:48:32 Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 6:39:08
ATIS table test ATIS table test
...@@ -6,14 +6,15 @@ Creating tables ...@@ -6,14 +6,15 @@ Creating tables
Time for create_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data Inserting data
Time to insert (9768): 3 wallclock secs ( 0.49 usr 0.45 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (9768): 3 wallclock secs ( 0.38 usr 0.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data Retrieving data
Time for select_simple_join (500): 2 wallclock secs ( 0.65 usr 0.26 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_simple_join (500): 2 wallclock secs ( 0.68 usr 0.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_join (200): 16 wallclock secs ( 4.55 usr 2.23 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_join (100): 2 wallclock secs ( 0.57 usr 0.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_distinct (800): 12 wallclock secs ( 1.64 usr 0.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key_prefix_join (100): 13 wallclock secs ( 4.13 usr 1.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_group (2800): 14 wallclock secs ( 1.86 usr 0.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_distinct (800): 11 wallclock secs ( 1.84 usr 0.70 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_group (2800): 13 wallclock secs ( 1.55 usr 0.51 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Removing tables Removing tables
Time to drop_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to drop_table (28): 0 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 47 wallclock secs ( 9.20 usr 4.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 44 wallclock secs ( 9.18 usr 4.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Benchmark DBD suite: 2.10 Benchmark DBD suite: 2.12
Date of test: 2000-12-17 23:35:25 Date of test: 2000-12-24 15:30:34
Running tests on: Linux 2.2.14-my-SMP i686 Running tests on: Linux 2.2.14-my-SMP i686
Arguments: Arguments:
Comments: Intel Xeon, 2x550 Mhz, 1G ram, key_buffer=16M Comments: Intel Xeon, 2x550 Mhz, 1G ram, key_buffer=16M
Limits from: Limits from:
Server version: MySQL 3.23.29a gamma Server version: MySQL 3.23.29a gamma
ATIS: Total time: 47 wallclock secs ( 9.20 usr 4.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) ATIS: Total time: 44 wallclock secs ( 9.18 usr 4.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
alter-table: Total time: 463 wallclock secs ( 0.39 usr 0.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) alter-table: Total time: 468 wallclock secs ( 0.25 usr 0.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
big-tables: Total time: 32 wallclock secs ( 8.71 usr 6.83 sys + 0.00 cusr 0.00 csys = 0.00 CPU) big-tables: Total time: 31 wallclock secs ( 8.67 usr 6.87 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
connect: Total time: 79 wallclock secs (35.02 usr 18.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU) connect: Total time: 79 wallclock secs (34.39 usr 17.84 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
create: Total time: 135 wallclock secs ( 9.85 usr 3.27 sys + 0.00 cusr 0.00 csys = 0.00 CPU) create: Total time: 126 wallclock secs (10.09 usr 3.20 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
insert: Total time: 2216 wallclock secs (423.12 usr 155.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU) insert: Total time: 2227 wallclock secs (451.81 usr 170.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
select: Total time: 1312 wallclock secs (63.58 usr 18.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU) select: Total time: 1379 wallclock secs (61.35 usr 18.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
wisconsin: Total time: 17 wallclock secs ( 3.57 usr 1.80 sys + 0.00 cusr 0.00 csys = 0.00 CPU) wisconsin: Total time: 16 wallclock secs ( 3.25 usr 1.72 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
All 8 test executed successfully All 8 test executed successfully
Totals per operation: Totals per operation:
Operation seconds usr sys cpu tests Operation seconds usr sys cpu tests
alter_table_add 258.00 0.26 0.07 0.00 992 alter_table_add 263.00 0.10 0.05 0.00 992
alter_table_drop 196.00 0.07 0.01 0.00 496 alter_table_drop 197.00 0.05 0.03 0.00 496
connect 13.00 7.93 2.58 0.00 10000 connect 12.00 7.18 2.61 0.00 10000
connect+select_1_row 15.00 7.98 3.18 0.00 10000 connect+select_1_row 15.00 7.75 3.29 0.00 10000
connect+select_simple 14.00 7.69 3.24 0.00 10000 connect+select_simple 14.00 7.39 3.61 0.00 10000
count 45.00 0.10 0.01 0.00 100 count 47.00 0.05 0.00 0.00 100
count_distinct 124.00 0.68 0.16 0.00 2000 count_distinct 119.00 0.66 0.17 0.00 2000
count_distinct_big 111.00 7.80 5.59 0.00 120 count_distinct_big 111.00 7.48 5.86 0.00 120
count_distinct_group 74.00 1.26 0.40 0.00 1000 count_distinct_group 80.00 1.02 0.43 0.00 1000
count_distinct_group_on_key 61.00 0.43 0.08 0.00 1000 count_distinct_group_on_key 60.00 0.40 0.08 0.00 1000
count_distinct_group_on_key_parts 73.00 1.27 0.42 0.00 1000 count_distinct_group_on_key_parts 81.00 0.79 0.41 0.00 1000
count_group_on_key_parts 62.00 1.13 0.43 0.00 1000 count_group_on_key_parts 54.00 1.00 0.47 0.00 1000
count_on_key 514.00 17.86 3.19 0.00 50100 count_on_key 559.00 17.07 3.00 0.00 50100
create+drop 36.00 2.52 0.89 0.00 10000 create+drop 29.00 2.43 0.82 0.00 10000
create_MANY_tables 28.00 1.87 0.47 0.00 10000 create_MANY_tables 29.00 2.27 0.46 0.00 10000
create_index 4.00 0.00 0.00 0.00 8 create_index 4.00 0.00 0.00 0.00 8
create_key+drop 46.00 4.05 0.70 0.00 10000 create_key+drop 40.00 3.97 0.87 0.00 10000
create_table 0.00 0.00 0.00 0.00 31 create_table 0.00 0.00 0.00 0.00 31
delete_all 19.00 0.01 0.00 0.00 12 delete_all 20.00 0.00 0.00 0.00 12
delete_all_many_keys 181.00 0.02 0.00 0.00 1 delete_all_many_keys 151.00 0.03 0.01 0.00 1
delete_big 0.00 0.00 0.00 0.00 1 delete_big 0.00 0.00 0.00 0.00 1
delete_big_many_keys 181.00 0.02 0.00 0.00 128 delete_big_many_keys 151.00 0.03 0.01 0.00 128
delete_key 3.00 0.50 0.39 0.00 10000 delete_key 4.00 0.56 0.45 0.00 10000
drop_index 4.00 0.00 0.00 0.00 8 drop_index 4.00 0.00 0.00 0.00 8
drop_table 0.00 0.00 0.00 0.00 28 drop_table 0.00 0.01 0.00 0.00 28
drop_table_when_MANY_tables 14.00 0.60 0.60 0.00 10000 drop_table_when_MANY_tables 12.00 0.63 0.43 0.00 10000
insert 134.00 22.42 14.46 0.00 350768 insert 131.00 22.93 14.02 0.00 350768
insert_duplicates 24.00 2.86 2.57 0.00 100000 insert_duplicates 24.00 3.18 3.05 0.00 100000
insert_key 172.00 10.70 4.06 0.00 100000 insert_key 154.00 10.52 4.42 0.00 100000
insert_many_fields 9.00 0.39 0.10 0.00 2000 insert_many_fields 9.00 0.44 0.07 0.00 2000
insert_select_1_key 7.00 0.00 0.00 0.00 1 insert_select_1_key 7.00 0.00 0.00 0.00 1
insert_select_2_keys 9.00 0.00 0.00 0.00 1 insert_select_2_keys 9.00 0.00 0.00 0.00 1
min_max 30.00 0.03 0.00 0.00 60 min_max 32.00 0.01 0.00 0.00 60
min_max_on_key 206.00 27.71 4.96 0.00 85000 min_max_on_key 238.00 27.34 5.17 0.00 85000
multiple_value_insert 9.00 1.92 0.07 0.00 100000 multiple_value_insert 9.00 1.88 0.06 0.00 100000
order_by_big 53.00 22.27 16.17 0.00 10 order_by_big 52.00 22.29 15.95 0.00 10
order_by_big_key 33.00 22.36 10.06 0.00 10 order_by_big_key 34.00 23.91 10.39 0.00 10
order_by_big_key2 33.00 22.83 9.51 0.00 10 order_by_big_key2 33.00 22.58 10.06 0.00 10
order_by_big_key_desc 32.00 22.03 10.36 0.00 10 order_by_big_key_desc 36.00 23.89 10.41 0.00 10
order_by_big_key_diff 49.00 21.98 16.40 0.00 10 order_by_big_key_diff 50.00 22.07 16.43 0.00 10
order_by_key 3.00 1.28 0.40 0.00 500 order_by_big_key_prefix 32.00 22.21 10.50 0.00 10
order_by_key2_diff 5.00 1.91 0.83 0.00 500 order_by_key2_diff 5.00 1.12 0.07 0.00 500
order_by_range 5.00 1.09 0.51 0.00 500 order_by_key_prefix 3.00 1.10 0.38 0.00 500
outer_join 73.00 0.01 0.00 0.00 10 order_by_range 5.00 1.14 0.41 0.00 500
outer_join_found 70.00 0.00 0.00 0.00 10 outer_join 72.00 0.00 0.00 0.00 10
outer_join_not_found 50.00 0.00 0.01 0.00 500 outer_join_found 67.00 0.00 0.01 0.00 10
outer_join_on_key 61.00 0.00 0.00 0.00 10 outer_join_not_found 50.00 0.00 0.00 0.00 500
select_1_row 3.00 0.71 0.67 0.00 10000 outer_join_on_key 57.00 0.01 0.00 0.00 10
select_2_rows 3.00 0.65 0.68 0.00 10000 select_1_row 2.00 0.45 0.57 0.00 10000
select_big 58.00 31.42 17.06 0.00 10080 select_2_rows 3.00 0.59 0.61 0.00 10000
select_column+column 4.00 0.48 0.60 0.00 10000 select_big 62.00 32.48 15.99 0.00 10080
select_diff_key 184.00 0.36 0.02 0.00 500 select_column+column 3.00 0.58 0.68 0.00 10000
select_distinct 12.00 1.64 0.81 0.00 800 select_diff_key 191.00 0.33 0.03 0.00 500
select_group 70.00 1.92 0.41 0.00 2911 select_distinct 11.00 1.84 0.70 0.00 800
select_group_when_MANY_tables 11.00 0.81 0.61 0.00 10000 select_group 67.00 1.60 0.52 0.00 2911
select_join 16.00 4.55 2.23 0.00 200 select_group_when_MANY_tables 16.00 0.79 0.62 0.00 10000
select_key 126.00 68.62 14.75 0.00 200000 select_join 2.00 0.57 0.28 0.00 100
select_key2 134.00 73.78 14.11 0.00 200000 select_key 126.00 68.35 14.42 0.00 200000
select_key_prefix 136.00 69.37 14.48 0.00 200000 select_key2 132.00 69.41 13.86 0.00 200000
select_many_fields 22.00 8.31 6.73 0.00 2000 select_key_prefix 134.00 71.19 14.71 0.00 200000
select_range 201.00 9.29 3.51 0.00 410 select_key_prefix_join 13.00 4.13 1.96 0.00 100
select_range_key2 18.00 6.59 1.71 0.00 25010 select_many_fields 22.00 8.22 6.80 0.00 2000
select_range_prefix 20.00 6.80 1.51 0.00 25010 select_range 194.00 9.08 3.79 0.00 410
select_simple 2.00 0.53 0.51 0.00 10000 select_range_key2 18.00 6.36 1.64 0.00 25010
select_simple_join 2.00 0.65 0.26 0.00 500 select_range_prefix 20.00 6.82 1.38 0.00 25010
update_big 65.00 0.00 0.00 0.00 10 select_simple 2.00 0.47 0.71 0.00 10000
update_of_key 97.00 3.15 2.09 0.00 50256 select_simple_join 2.00 0.68 0.19 0.00 500
update_of_key_big 33.00 0.01 0.02 0.00 501 update_big 64.00 0.00 0.00 0.00 10
update_with_key 116.00 15.94 12.19 0.00 300000 update_of_key 88.00 2.82 2.30 0.00 50256
wisc_benchmark 4.00 1.92 0.66 0.00 114 update_of_key_big 33.00 0.11 0.03 0.00 501
TOTALS 4480.00 553.34 208.50 0.00 1946237 update_with_key 113.00 17.01 12.17 0.00 300000
update_with_key_prefix 32.00 5.68 4.36 0.00 100000
wisc_benchmark 4.00 1.80 0.69 0.00 114
TOTALS 4519.00 578.85 223.47 0.00 2046247
Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 21:49:19 Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 6:39:53
Testing of ALTER TABLE Testing of ALTER TABLE
Testing with 1000 columns and 1000 rows in 20 steps Testing with 1000 columns and 1000 rows in 20 steps
Insert data into the table Insert data into the table
Time for insert (1000) 1 wallclock secs ( 0.06 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert (1000) 0 wallclock secs ( 0.09 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for alter_table_add (992): 258 wallclock secs ( 0.26 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for alter_table_add (992): 263 wallclock secs ( 0.10 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for drop_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for alter_table_drop (496): 196 wallclock secs ( 0.07 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for alter_table_drop (496): 197 wallclock secs ( 0.05 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 463 wallclock secs ( 0.39 usr 0.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 468 wallclock secs ( 0.25 usr 0.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 21:57:03 Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 6:47:42
Testing of some unusual tables Testing of some unusual tables
All tests are done 1000 times with 1000 fields All tests are done 1000 times with 1000 fields
Testing table with 1000 fields Testing table with 1000 fields
Testing select * from table with 1 record Testing select * from table with 1 record
Time to select_many_fields(1000): 9 wallclock secs ( 4.22 usr 3.26 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_many_fields(1000): 9 wallclock secs ( 4.02 usr 3.44 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select all_fields from table with 1 record Testing select all_fields from table with 1 record
Time to select_many_fields(1000): 13 wallclock secs ( 4.09 usr 3.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_many_fields(1000): 13 wallclock secs ( 4.20 usr 3.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert VALUES() Testing insert VALUES()
Time to insert_many_fields(1000): 3 wallclock secs ( 0.34 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert_many_fields(1000): 3 wallclock secs ( 0.37 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert (all_fields) VALUES() Testing insert (all_fields) VALUES()
Time to insert_many_fields(1000): 6 wallclock secs ( 0.05 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert_many_fields(1000): 6 wallclock secs ( 0.07 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 32 wallclock secs ( 8.71 usr 6.83 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 31 wallclock secs ( 8.67 usr 6.87 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 21:57:35 Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 6:48:14
Testing the speed of connecting to the server and sending of data Testing the speed of connecting to the server and sending of data
All tests are done 10000 times All tests are done 10000 times
Testing connection/disconnect Testing connection/disconnect
Time to connect (10000): 13 wallclock secs ( 7.93 usr 2.58 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to connect (10000): 12 wallclock secs ( 7.18 usr 2.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test connect/simple select/disconnect Test connect/simple select/disconnect
Time for connect+select_simple (10000): 14 wallclock secs ( 7.69 usr 3.24 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for connect+select_simple (10000): 14 wallclock secs ( 7.39 usr 3.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test simple select Test simple select
Time for select_simple (10000): 2 wallclock secs ( 0.53 usr 0.51 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_simple (10000): 2 wallclock secs ( 0.47 usr 0.71 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing connect/select 1 row from table/disconnect Testing connect/select 1 row from table/disconnect
Time to connect+select_1_row (10000): 15 wallclock secs ( 7.98 usr 3.18 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to connect+select_1_row (10000): 15 wallclock secs ( 7.75 usr 3.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 1 row from table Testing select 1 row from table
Time to select_1_row (10000): 3 wallclock secs ( 0.71 usr 0.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_1_row (10000): 2 wallclock secs ( 0.45 usr 0.57 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 2 rows from table Testing select 2 rows from table
Time to select_2_rows (10000): 3 wallclock secs ( 0.65 usr 0.68 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_2_rows (10000): 3 wallclock secs ( 0.59 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test select with aritmetic (+) Test select with aritmetic (+)
Time for select_column+column (10000): 4 wallclock secs ( 0.48 usr 0.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_column+column (10000): 3 wallclock secs ( 0.58 usr 0.68 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing retrieval of big records (65000 bytes) Testing retrieval of big records (65000 bytes)
Time to select_big (10000): 25 wallclock secs ( 9.05 usr 6.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_big (10000): 28 wallclock secs ( 9.97 usr 5.76 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 79 wallclock secs (35.02 usr 18.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 79 wallclock secs (34.39 usr 17.84 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 21:58:54 Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 15:28:12
Testing the speed of creating and droping tables Testing the speed of creating and droping tables
Testing with 10000 tables and 10000 loop count Testing with 10000 tables and 10000 loop count
Testing create of tables Testing create of tables
Time for create_MANY_tables (10000): 28 wallclock secs ( 1.87 usr 0.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_MANY_tables (10000): 29 wallclock secs ( 2.27 usr 0.46 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Accessing tables Accessing tables
Time to select_group_when_MANY_tables (10000): 11 wallclock secs ( 0.81 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_group_when_MANY_tables (10000): 16 wallclock secs ( 0.79 usr 0.62 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing drop Testing drop
Time for drop_table_when_MANY_tables (10000): 14 wallclock secs ( 0.60 usr 0.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for drop_table_when_MANY_tables (10000): 12 wallclock secs ( 0.63 usr 0.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing create+drop Testing create+drop
Time for create+drop (10000): 36 wallclock secs ( 2.52 usr 0.89 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create+drop (10000): 29 wallclock secs ( 2.43 usr 0.82 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_key+drop (10000): 46 wallclock secs ( 4.05 usr 0.70 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_key+drop (10000): 40 wallclock secs ( 3.97 usr 0.87 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 135 wallclock secs ( 9.85 usr 3.27 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 126 wallclock secs (10.09 usr 3.20 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 22:01:09 Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 6:49:34
Testing the speed of inserting data into 1 table and do some selects on it. Testing the speed of inserting data into 1 table and do some selects on it.
The tests are done with a table that has 100000 rows. The tests are done with a table that has 100000 rows.
...@@ -8,53 +8,55 @@ Creating tables ...@@ -8,53 +8,55 @@ Creating tables
Inserting 100000 rows in order Inserting 100000 rows in order
Inserting 100000 rows in reverse order Inserting 100000 rows in reverse order
Inserting 100000 rows in random order Inserting 100000 rows in random order
Time for insert (300000): 114 wallclock secs (19.41 usr 12.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert (300000): 111 wallclock secs (20.07 usr 12.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert of duplicates Testing insert of duplicates
Time for insert_duplicates (100000): 24 wallclock secs ( 2.86 usr 2.57 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_duplicates (100000): 24 wallclock secs ( 3.18 usr 3.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data from the table Retrieving data from the table
Time for select_big (10:3000000): 32 wallclock secs (22.21 usr 10.20 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_big (10:3000000): 33 wallclock secs (22.37 usr 10.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key (10:3000000): 33 wallclock secs (22.36 usr 10.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key (10:3000000): 34 wallclock secs (23.91 usr 10.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key_desc (10:3000000): 32 wallclock secs (22.03 usr 10.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key_desc (10:3000000): 36 wallclock secs (23.89 usr 10.41 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key2 (10:3000000): 33 wallclock secs (22.83 usr 9.51 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key_prefix (10:3000000): 32 wallclock secs (22.21 usr 10.50 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key_diff (10:3000000): 49 wallclock secs (21.98 usr 16.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key2 (10:3000000): 33 wallclock secs (22.58 usr 10.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big (10:3000000): 53 wallclock secs (22.27 usr 16.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key_diff (10:3000000): 50 wallclock secs (22.07 usr 16.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_range (500:125750): 5 wallclock secs ( 1.09 usr 0.51 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big (10:3000000): 52 wallclock secs (22.29 usr 15.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_key (500:125750): 3 wallclock secs ( 1.28 usr 0.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_range (500:125750): 5 wallclock secs ( 1.14 usr 0.41 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_key2_diff (500:250500): 5 wallclock secs ( 1.91 usr 0.83 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_key_prefix (500:125750): 3 wallclock secs ( 1.10 usr 0.38 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_diff_key (500:1000): 184 wallclock secs ( 0.36 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_key2_diff (500:250500): 5 wallclock secs ( 1.12 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range_prefix (5010:42084): 11 wallclock secs ( 3.09 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_diff_key (500:1000): 191 wallclock secs ( 0.33 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range_key2 (5010:42084): 10 wallclock secs ( 3.00 usr 0.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_prefix (5010:42084): 11 wallclock secs ( 3.03 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key_prefix (200000): 136 wallclock secs (69.37 usr 14.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_key2 (5010:42084): 10 wallclock secs ( 2.59 usr 0.68 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key (200000): 126 wallclock secs (68.62 usr 14.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key_prefix (200000): 134 wallclock secs (71.19 usr 14.71 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key2 (200000): 134 wallclock secs (73.78 usr 14.11 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key (200000): 126 wallclock secs (68.35 usr 14.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key2 (200000): 132 wallclock secs (69.41 usr 13.86 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test of compares with simple ranges Test of compares with simple ranges
Time for select_range_prefix (20000:43500): 9 wallclock secs ( 3.71 usr 0.90 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_prefix (20000:43500): 9 wallclock secs ( 3.79 usr 0.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range_key2 (20000:43500): 8 wallclock secs ( 3.59 usr 0.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_key2 (20000:43500): 8 wallclock secs ( 3.77 usr 0.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_group (111): 56 wallclock secs ( 0.06 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_group (111): 54 wallclock secs ( 0.05 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max_on_key (15000): 8 wallclock secs ( 4.85 usr 0.88 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for min_max_on_key (15000): 8 wallclock secs ( 4.55 usr 0.93 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max (60): 30 wallclock secs ( 0.03 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for min_max (60): 32 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_on_key (100): 47 wallclock secs ( 0.04 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_on_key (100): 51 wallclock secs ( 0.09 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count (100): 45 wallclock secs ( 0.10 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count (100): 47 wallclock secs ( 0.05 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_big (20): 64 wallclock secs ( 0.01 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_big (20): 64 wallclock secs ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of keys with functions Testing update of keys with functions
Time for update_of_key (50000): 23 wallclock secs ( 3.12 usr 2.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_of_key (50000): 23 wallclock secs ( 2.80 usr 2.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for update_of_key_big (501): 33 wallclock secs ( 0.01 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_of_key_big (501): 33 wallclock secs ( 0.11 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update with key Testing update with key
Time for update_with_key (300000): 116 wallclock secs (15.94 usr 12.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_with_key (300000): 113 wallclock secs (17.01 usr 12.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for update_with_key_prefix (100000): 32 wallclock secs ( 5.68 usr 4.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of all rows Testing update of all rows
Time for update_big (10): 65 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_big (10): 64 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing left outer join Testing left outer join
Time for outer_join_on_key (10:10): 61 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join_on_key (10:10): 57 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for outer_join (10:10): 73 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join (10:10): 72 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for outer_join_found (10:10): 70 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join_found (10:10): 67 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for outer_join_not_found (500:10): 50 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join_not_found (500:10): 50 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing INSERT INTO ... SELECT Testing INSERT INTO ... SELECT
Time for insert_select_1_key (1): 7 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_select_1_key (1): 7 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
...@@ -62,24 +64,24 @@ Time for insert_select_2_keys (1): 9 wallclock secs ( 0.00 usr 0.00 sys + 0. ...@@ -62,24 +64,24 @@ Time for insert_select_2_keys (1): 9 wallclock secs ( 0.00 usr 0.00 sys + 0.
Time for drop table(2): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for drop table(2): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing delete Testing delete
Time for delete_key (10000): 3 wallclock secs ( 0.50 usr 0.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_key (10000): 4 wallclock secs ( 0.56 usr 0.45 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for delete_all (12): 19 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_all (12): 20 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Insert into table with 16 keys and with a primary key with 16 parts Insert into table with 16 keys and with a primary key with 16 parts
Time for insert_key (100000): 172 wallclock secs (10.70 usr 4.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_key (100000): 154 wallclock secs (10.52 usr 4.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of keys Testing update of keys
Time for update_of_key (256): 74 wallclock secs ( 0.03 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_of_key (256): 65 wallclock secs ( 0.02 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Deleting rows from the table Deleting rows from the table
Time for delete_big_many_keys (128): 181 wallclock secs ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_big_many_keys (128): 151 wallclock secs ( 0.03 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Deleting everything from table Deleting everything from table
Time for delete_all_many_keys (1): 181 wallclock secs ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_all_many_keys (1): 151 wallclock secs ( 0.03 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting 100000 rows with multiple values Inserting 100000 rows with multiple values
Time for multiple_value_insert (100000): 9 wallclock secs ( 1.92 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for multiple_value_insert (100000): 9 wallclock secs ( 1.88 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop table(1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for drop table(1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 2216 wallclock secs (423.12 usr 155.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 2227 wallclock secs (451.81 usr 170.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 22:38:07 Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 7:26:42
Testing the speed of selecting on keys that consist of many parts Testing the speed of selecting on keys that consist of many parts
The test-table has 10000 rows and the test is done with 500 ranges. The test-table has 10000 rows and the test is done with 500 ranges.
Creating table Creating table
Inserting 10000 rows Inserting 10000 rows
Time to insert (10000): 4 wallclock secs ( 0.88 usr 0.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (10000): 5 wallclock secs ( 1.03 usr 0.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing big selects on the table Testing big selects on the table
Time for select_big (70:17207): 1 wallclock secs ( 0.16 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_big (70:17207): 1 wallclock secs ( 0.14 usr 0.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range (410:1057904): 201 wallclock secs ( 9.29 usr 3.51 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range (410:1057904): 194 wallclock secs ( 9.08 usr 3.79 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max_on_key (70000): 198 wallclock secs (22.86 usr 4.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for min_max_on_key (70000): 230 wallclock secs (22.79 usr 4.24 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_on_key (50000): 467 wallclock secs (17.82 usr 3.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_on_key (50000): 508 wallclock secs (16.98 usr 2.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_group_on_key_parts (1000:100000): 62 wallclock secs ( 1.13 usr 0.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_group_on_key_parts (1000:100000): 54 wallclock secs ( 1.00 usr 0.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing count(distinct) on the table Testing count(distinct) on the table
Time for count_distinct (2000:2000): 124 wallclock secs ( 0.68 usr 0.16 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct (2000:2000): 119 wallclock secs ( 0.66 usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key (1000:6000): 61 wallclock secs ( 0.43 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group_on_key (1000:6000): 60 wallclock secs ( 0.40 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key_parts (1000:100000): 73 wallclock secs ( 1.27 usr 0.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group_on_key_parts (1000:100000): 81 wallclock secs ( 0.79 usr 0.41 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group (1000:100000): 74 wallclock secs ( 1.26 usr 0.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group (1000:100000): 80 wallclock secs ( 1.02 usr 0.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_big (100:1000000): 47 wallclock secs ( 7.79 usr 5.58 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_big (100:1000000): 47 wallclock secs ( 7.46 usr 5.86 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 1312 wallclock secs (63.58 usr 18.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 1379 wallclock secs (61.35 usr 18.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 22:59:59 Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 7:49:42
Wisconsin benchmark test Wisconsin benchmark test
Time for create_table (3): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_table (3): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data Inserting data
Time to insert (31000): 13 wallclock secs ( 1.64 usr 1.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (31000): 12 wallclock secs ( 1.45 usr 1.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to delete_big (1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to delete_big (1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Running actual benchmark Running actual benchmark
Time for wisc_benchmark (114): 4 wallclock secs ( 1.92 usr 0.66 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for wisc_benchmark (114): 4 wallclock secs ( 1.80 usr 0.69 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 17 wallclock secs ( 3.57 usr 1.80 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 16 wallclock secs ( 3.25 usr 1.72 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
# $server Object for current server # $server Object for current server
# $limits Hash reference to limits for benchmark # $limits Hash reference to limits for benchmark
$benchmark_version="2.10"; $benchmark_version="2.11";
use Getopt::Long; use Getopt::Long;
require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n"; require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n";
......
...@@ -188,6 +188,13 @@ sub new ...@@ -188,6 +188,13 @@ sub new
$smds{'q16'} = 'a'; $smds{'q16'} = 'a';
$smds{'q17'} = 'c'; $smds{'q17'} = 'c';
# Some fixes that depends on the environment
if (defined($main::opt_create_options) &&
$main::opt_create_options =~ /type=heap/i)
{
$limits{'working_blobs'} = 0; # HEAP tables can't handle BLOB's
}
return $self; return $self;
} }
......
...@@ -167,7 +167,9 @@ print "Retrieving data\n"; ...@@ -167,7 +167,9 @@ print "Retrieving data\n";
); );
@Q2=("select_join", @Q2=("select_join",
"select airline.airline_name,aircraft.aircraft_type from aircraft,airline,flight where flight.aircraft_code=aircraft.aircraft_code and flight.airline_code=airline.airline_code",579,1, "select airline.airline_name,aircraft.aircraft_type from aircraft,airline,flight where flight.aircraft_code=aircraft.aircraft_code and flight.airline_code=airline.airline_code",579,1);
@Q21=("select_key_prefix_join",
"select fare.fare_code from restrict_carrier,airline,fare where restrict_carrier.airline_code=airline.airline_code and fare.restrict_code=restrict_carrier.restrict_code",5692,1, "select fare.fare_code from restrict_carrier,airline,fare where restrict_carrier.airline_code=airline.airline_code and fare.restrict_code=restrict_carrier.restrict_code",5692,1,
); );
...@@ -214,7 +216,7 @@ print "Retrieving data\n"; ...@@ -214,7 +216,7 @@ print "Retrieving data\n";
"select engines,category,cruising_speed,from_airport,to_airport FROM aircraft,flight WHERE category='JET' AND ENGINES >= 1 AND aircraft.aircraft_code=flight.aircraft_code AND to_airport NOT LIKE from_airport AND stops>0 GROUP BY engines,category,cruising_speed,from_airport,to_airport ORDER BY engines DESC",29,$limits->{'group_functions'} && $limits->{'like_with_column'}, "select engines,category,cruising_speed,from_airport,to_airport FROM aircraft,flight WHERE category='JET' AND ENGINES >= 1 AND aircraft.aircraft_code=flight.aircraft_code AND to_airport NOT LIKE from_airport AND stops>0 GROUP BY engines,category,cruising_speed,from_airport,to_airport ORDER BY engines DESC",29,$limits->{'group_functions'} && $limits->{'like_with_column'},
); );
@Q=(\@Q1,\@Q2,\@Q3,\@Q4); @Q=(\@Q1,\@Q2,\@Q21,\@Q3,\@Q4);
foreach $Q (@Q) foreach $Q (@Q)
......
...@@ -291,7 +291,7 @@ $loop_time=new Benchmark; ...@@ -291,7 +291,7 @@ $loop_time=new Benchmark;
$estimated=$rows=0; $estimated=$rows=0;
for ($i=1 ; $i <= $small_loop_count ; $i++) for ($i=1 ; $i <= $small_loop_count ; $i++)
{ {
$rows+=fetch_all_rows($dbh,"select id from bench1 order by id",1); $rows+=fetch_all_rows($dbh,"select id,id2 from bench1 order by id,id2",1);
$end_time=new Benchmark; $end_time=new Benchmark;
last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i, last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
$small_loop_count)); $small_loop_count));
...@@ -303,11 +303,12 @@ else ...@@ -303,11 +303,12 @@ else
print " for order_by_big_key ($small_loop_count:$rows): " . print " for order_by_big_key ($small_loop_count:$rows): " .
timestr(timediff($end_time, $loop_time),"all") . "\n"; timestr(timediff($end_time, $loop_time),"all") . "\n";
$loop_time=new Benchmark; $loop_time=new Benchmark;
$estimated=$rows=0; $estimated=$rows=0;
for ($i=1 ; $i <= $small_loop_count ; $i++) for ($i=1 ; $i <= $small_loop_count ; $i++)
{ {
$rows+=fetch_all_rows($dbh,"select id from bench1 order by id desc",1); $rows+=fetch_all_rows($dbh,"select id,id2 from bench1 order by id desc, id2 desc",1);
$end_time=new Benchmark; $end_time=new Benchmark;
last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i, last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
$small_loop_count)); $small_loop_count));
...@@ -319,6 +320,24 @@ else ...@@ -319,6 +320,24 @@ else
print " for order_by_big_key_desc ($small_loop_count:$rows): " . print " for order_by_big_key_desc ($small_loop_count:$rows): " .
timestr(timediff($end_time, $loop_time),"all") . "\n"; timestr(timediff($end_time, $loop_time),"all") . "\n";
$loop_time=new Benchmark;
$estimated=$rows=0;
for ($i=1 ; $i <= $small_loop_count ; $i++)
{
$rows+=fetch_all_rows($dbh,"select id from bench1 order by id desc",1);
$end_time=new Benchmark;
last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
$small_loop_count));
}
if ($estimated)
{ print "Estimated time"; }
else
{ print "Time"; }
print " for order_by_big_key_prefix ($small_loop_count:$rows): " .
timestr(timediff($end_time, $loop_time),"all") . "\n";
$loop_time=new Benchmark; $loop_time=new Benchmark;
$estimated=$rows=0; $estimated=$rows=0;
for ($i=1 ; $i <= $small_loop_count ; $i++) for ($i=1 ; $i <= $small_loop_count ; $i++)
...@@ -407,7 +426,7 @@ if ($estimated) ...@@ -407,7 +426,7 @@ if ($estimated)
{ print "Estimated time"; } { print "Estimated time"; }
else else
{ print "Time"; } { print "Time"; }
print " for order_by_key ($range_loop_count:$rows): " . print " for order_by_key_prefix ($range_loop_count:$rows): " .
timestr(timediff($end_time, $loop_time),"all") . "\n"; timestr(timediff($end_time, $loop_time),"all") . "\n";
$sel=$limits->{'order_by_unused'} ? "id2" : "id2,id3"; $sel=$limits->{'order_by_unused'} ? "id2" : "id2,id3";
...@@ -889,13 +908,23 @@ print "Testing update with key\n"; ...@@ -889,13 +908,23 @@ print "Testing update with key\n";
$loop_time=new Benchmark; $loop_time=new Benchmark;
for ($i=0 ; $i < $opt_loop_count*3 ; $i++) for ($i=0 ; $i < $opt_loop_count*3 ; $i++)
{ {
$sth = $dbh->do("update bench1 set dummy1='updated' where id=$i") or die $DBI::errstr; $sth = $dbh->do("update bench1 set dummy1='updated' where id=$i and id2=$i") or die $DBI::errstr;
} }
$end_time=new Benchmark; $end_time=new Benchmark;
print "Time for update_with_key (" . ($opt_loop_count*3) . "): " . print "Time for update_with_key (" . ($opt_loop_count*3) . "): " .
timestr(timediff($end_time, $loop_time),"all") . "\n"; timestr(timediff($end_time, $loop_time),"all") . "\n";
$loop_time=new Benchmark;
for ($i=0 ; $i < $opt_loop_count*3 ; $i+=3)
{
$sth = $dbh->do("update bench1 set dummy1='updated' where id=$i") or die $DBI::errstr;
}
$end_time=new Benchmark;
print "Time for update_with_key_prefix (" . ($opt_loop_count) . "): " .
timestr(timediff($end_time, $loop_time),"all") . "\n";
print "\nTesting update of all rows\n"; print "\nTesting update of all rows\n";
$loop_time=new Benchmark; $loop_time=new Benchmark;
for ($i=0 ; $i < $small_loop_count ; $i++) for ($i=0 ; $i < $small_loop_count ; $i++)
...@@ -1530,7 +1559,12 @@ sub check_or_range ...@@ -1530,7 +1559,12 @@ sub check_or_range
$estimated=0; $estimated=0;
$loop_time=new Benchmark; $loop_time=new Benchmark;
$found=0; $found=0;
$loop_count=$range_loop_count*10; # The number of tests must be divisible by the following
$tmp= $limits->{'func_extra_in_num'} ? 15 : 10;
# We need to calculate the exact number of test to make 'Estimated' right
$loop_count=$range_loop_count*10+$tmp-1;
$loop_count=$loop_count- ($loop_count % $tmp);
for ($count=0 ; $count < $loop_count ; ) for ($count=0 ; $count < $loop_count ; )
{ {
for ($rowcnt=0; $rowcnt <= $columns; $rowcnt+= $columns/4) for ($rowcnt=0; $rowcnt <= $columns; $rowcnt+= $columns/4)
......
...@@ -76,7 +76,8 @@ ...@@ -76,7 +76,8 @@
const char *ha_berkeley_ext=".db"; const char *ha_berkeley_ext=".db";
bool berkeley_skip=0,berkeley_shared_data=0; bool berkeley_skip=0,berkeley_shared_data=0;
u_int32_t berkeley_init_flags= DB_PRIVATE, berkeley_lock_type=DB_LOCK_DEFAULT; u_int32_t berkeley_init_flags= DB_PRIVATE | DB_RECOVER, berkeley_env_flags=0,
berkeley_lock_type=DB_LOCK_DEFAULT;
ulong berkeley_cache_size; ulong berkeley_cache_size;
char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir; char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
long berkeley_lock_scan_time=0; long berkeley_lock_scan_time=0;
...@@ -125,6 +126,7 @@ bool berkeley_init(void) ...@@ -125,6 +126,7 @@ bool berkeley_init(void)
db_env->set_noticecall(db_env, berkeley_noticecall); db_env->set_noticecall(db_env, berkeley_noticecall);
db_env->set_tmp_dir(db_env, berkeley_tmpdir); db_env->set_tmp_dir(db_env, berkeley_tmpdir);
db_env->set_data_dir(db_env, mysql_data_home); db_env->set_data_dir(db_env, mysql_data_home);
db_env->set_flags(db_env, berkeley_env_flags, 1);
if (berkeley_logdir) if (berkeley_logdir)
db_env->set_lg_dir(db_env, berkeley_logdir); db_env->set_lg_dir(db_env, berkeley_logdir);
...@@ -790,6 +792,7 @@ int ha_berkeley::write_row(byte * record) ...@@ -790,6 +792,7 @@ int ha_berkeley::write_row(byte * record)
error=file->put(file, transaction, create_key(&prim_key, primary_key, error=file->put(file, transaction, create_key(&prim_key, primary_key,
key_buff, record), key_buff, record),
&row, key_type[primary_key]); &row, key_type[primary_key]);
last_dup_key=primary_key;
} }
else else
{ {
...@@ -818,6 +821,8 @@ int ha_berkeley::write_row(byte * record) ...@@ -818,6 +821,8 @@ int ha_berkeley::write_row(byte * record)
} }
} }
} }
else
last_dup_key=primary_key;
if (!error) if (!error)
{ {
DBUG_PRINT("trans",("committing subtransaction")); DBUG_PRINT("trans",("committing subtransaction"));
......
...@@ -53,7 +53,8 @@ class ha_berkeley: public handler ...@@ -53,7 +53,8 @@ class ha_berkeley: public handler
ulong alloced_rec_buff_length; ulong alloced_rec_buff_length;
ulong changed_rows; ulong changed_rows;
uint primary_key,last_dup_key, hidden_primary_key, version; uint primary_key,last_dup_key, hidden_primary_key, version;
bool fixed_length_row, fixed_length_primary_key, key_read; u_int32_t lock_on_read;
bool fixed_length_row, fixed_length_primary_key, key_read, using_ignore;
bool fix_rec_buff_for_blob(ulong length); bool fix_rec_buff_for_blob(ulong length);
byte current_ident[BDB_HIDDEN_PRIMARY_KEY_LENGTH]; byte current_ident[BDB_HIDDEN_PRIMARY_KEY_LENGTH];
...@@ -157,7 +158,8 @@ class ha_berkeley: public handler ...@@ -157,7 +158,8 @@ class ha_berkeley: public handler
}; };
extern bool berkeley_skip, berkeley_shared_data; extern bool berkeley_skip, berkeley_shared_data;
extern u_int32_t berkeley_init_flags,berkeley_lock_type,berkeley_lock_types[]; extern u_int32_t berkeley_init_flags,berkeley_env_flags, berkeley_lock_type,
berkeley_lock_types[];
extern ulong berkeley_cache_size, berkeley_max_lock; extern ulong berkeley_cache_size, berkeley_max_lock;
extern char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir; extern char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
extern long berkeley_lock_scan_time; extern long berkeley_lock_scan_time;
......
...@@ -125,7 +125,7 @@ void kill_one_thread(THD *thd, ulong id); ...@@ -125,7 +125,7 @@ void kill_one_thread(THD *thd, ulong id);
#define QUERY_PRIOR 6 #define QUERY_PRIOR 6
#endif /* __WIN92__ */ #endif /* __WIN92__ */
/* Bits fro testflag */ /* Bits from testflag */
#define TEST_PRINT_CACHED_TABLES 1 #define TEST_PRINT_CACHED_TABLES 1
#define TEST_NO_KEY_GROUP 2 #define TEST_NO_KEY_GROUP 2
#define TEST_MIT_THREAD 4 #define TEST_MIT_THREAD 4
...@@ -161,6 +161,7 @@ void kill_one_thread(THD *thd, ulong id); ...@@ -161,6 +161,7 @@ void kill_one_thread(THD *thd, ulong id);
#define OPTION_BEGIN OPTION_NOT_AUTO_COMMIT*2 #define OPTION_BEGIN OPTION_NOT_AUTO_COMMIT*2
#define OPTION_QUICK OPTION_BEGIN*2 #define OPTION_QUICK OPTION_BEGIN*2
#define OPTION_QUOTE_SHOW_CREATE OPTION_QUICK*2 #define OPTION_QUOTE_SHOW_CREATE OPTION_QUICK*2
#define OPTION_INTERNAL_SUBTRANSACTIONS OPTION_QUOTE_SHOW_CREATE*2
/* Set if we are updating a non-transaction safe table */ /* Set if we are updating a non-transaction safe table */
#define OPTION_STATUS_NO_TRANS_UPDATE OPTION_QUOTE_SHOW_CREATE*2 #define OPTION_STATUS_NO_TRANS_UPDATE OPTION_QUOTE_SHOW_CREATE*2
......
...@@ -203,7 +203,8 @@ ulong keybuff_size,sortbuff_size,max_item_sort_length,table_cache_size, ...@@ -203,7 +203,8 @@ ulong keybuff_size,sortbuff_size,max_item_sort_length,table_cache_size,
thread_stack_min,net_wait_timeout,what_to_log= ~ (1L << (uint) COM_TIME), thread_stack_min,net_wait_timeout,what_to_log= ~ (1L << (uint) COM_TIME),
query_buff_size, lower_case_table_names, mysqld_net_retry_count, query_buff_size, lower_case_table_names, mysqld_net_retry_count,
net_interactive_timeout, slow_launch_time = 2L, net_interactive_timeout, slow_launch_time = 2L,
net_read_timeout,net_write_timeout,slave_open_temp_tables=0; net_read_timeout,net_write_timeout,slave_open_temp_tables=0,
open_files_limit=0;
ulong thread_cache_size=0, binlog_cache_size=0, max_binlog_cache_size=0; ulong thread_cache_size=0, binlog_cache_size=0, max_binlog_cache_size=0;
volatile ulong cached_thread_count=0; volatile ulong cached_thread_count=0;
...@@ -1461,8 +1462,10 @@ int main(int argc, char **argv) ...@@ -1461,8 +1462,10 @@ int main(int argc, char **argv)
{ {
uint wanted_files=10+(uint) max(max_connections*5, uint wanted_files=10+(uint) max(max_connections*5,
max_connections+table_cache_size*2); max_connections+table_cache_size*2);
set_if_bigger(wanted_files, open_files_limit);
// Note that some system returns 0 if we succeed here:
uint files=set_maximum_open_files(wanted_files); uint files=set_maximum_open_files(wanted_files);
if (files && files < wanted_files) // Some systems return 0 if (files && files < wanted_files && ! open_files_limit)
{ {
max_connections= (ulong) min((files-10),max_connections); max_connections= (ulong) min((files-10),max_connections);
table_cache_size= (ulong) max((files-10-max_connections)/2,64); table_cache_size= (ulong) max((files-10-max_connections)/2,64);
...@@ -2225,7 +2228,7 @@ enum options { ...@@ -2225,7 +2228,7 @@ enum options {
OPT_BDB_HOME, OPT_BDB_LOG, OPT_BDB_HOME, OPT_BDB_LOG,
OPT_BDB_TMP, OPT_BDB_NOSYNC, OPT_BDB_TMP, OPT_BDB_NOSYNC,
OPT_BDB_LOCK, OPT_BDB_SKIP, OPT_BDB_LOCK, OPT_BDB_SKIP,
OPT_BDB_RECOVER, OPT_BDB_SHARED, OPT_BDB_NO_RECOVER, OPT_BDB_SHARED,
OPT_MASTER_HOST, OPT_MASTER_HOST,
OPT_MASTER_USER, OPT_MASTER_PASSWORD, OPT_MASTER_USER, OPT_MASTER_PASSWORD,
OPT_MASTER_PORT, OPT_MASTER_INFO_FILE, OPT_MASTER_PORT, OPT_MASTER_INFO_FILE,
...@@ -2252,7 +2255,7 @@ static struct option long_options[] = { ...@@ -2252,7 +2255,7 @@ static struct option long_options[] = {
{"bdb-home", required_argument, 0, (int) OPT_BDB_HOME}, {"bdb-home", required_argument, 0, (int) OPT_BDB_HOME},
{"bdb-lock-detect", required_argument, 0, (int) OPT_BDB_LOCK}, {"bdb-lock-detect", required_argument, 0, (int) OPT_BDB_LOCK},
{"bdb-logdir", required_argument, 0, (int) OPT_BDB_LOG}, {"bdb-logdir", required_argument, 0, (int) OPT_BDB_LOG},
{"bdb-recover", no_argument, 0, (int) OPT_BDB_RECOVER}, {"bdb-no-recover", no_argument, 0, (int) OPT_BDB_NO_RECOVER},
{"bdb-no-sync", no_argument, 0, (int) OPT_BDB_NOSYNC}, {"bdb-no-sync", no_argument, 0, (int) OPT_BDB_NOSYNC},
{"bdb-shared-data", no_argument, 0, (int) OPT_BDB_SHARED}, {"bdb-shared-data", no_argument, 0, (int) OPT_BDB_SHARED},
{"bdb-tmpdir", required_argument, 0, (int) OPT_BDB_TMP}, {"bdb-tmpdir", required_argument, 0, (int) OPT_BDB_TMP},
...@@ -2463,6 +2466,8 @@ CHANGEABLE_VAR changeable_vars[] = { ...@@ -2463,6 +2466,8 @@ CHANGEABLE_VAR changeable_vars[] = {
NET_READ_TIMEOUT, 1, 65535, 0, 1 }, NET_READ_TIMEOUT, 1, 65535, 0, 1 },
{ "net_write_timeout", (long*) &net_write_timeout, { "net_write_timeout", (long*) &net_write_timeout,
NET_WRITE_TIMEOUT, 1, 65535, 0, 1 }, NET_WRITE_TIMEOUT, 1, 65535, 0, 1 },
{ "open_files_limit", (long*) &open_files_limit,
0, 0, 65535, 0, 1},
{ "query_buffer_size", (long*) &query_buff_size, { "query_buffer_size", (long*) &query_buff_size,
0, MALLOC_OVERHEAD, (long) ~0, MALLOC_OVERHEAD, IO_SIZE }, 0, MALLOC_OVERHEAD, (long) ~0, MALLOC_OVERHEAD, IO_SIZE },
{ "record_buffer", (long*) &my_default_record_cache_size, { "record_buffer", (long*) &my_default_record_cache_size,
...@@ -2543,6 +2548,7 @@ struct show_var_st init_vars[]= { ...@@ -2543,6 +2548,7 @@ struct show_var_st init_vars[]= {
{"net_read_timeout", (char*) &net_read_timeout, SHOW_LONG}, {"net_read_timeout", (char*) &net_read_timeout, SHOW_LONG},
{"net_retry_count", (char*) &mysqld_net_retry_count, SHOW_LONG}, {"net_retry_count", (char*) &mysqld_net_retry_count, SHOW_LONG},
{"net_write_timeout", (char*) &net_write_timeout, SHOW_LONG}, {"net_write_timeout", (char*) &net_write_timeout, SHOW_LONG},
{"open_files_limit", (char*) &open_files_limit, SHOW_LONG},
{"pid_file", (char*) pidfile_name, SHOW_CHAR}, {"pid_file", (char*) pidfile_name, SHOW_CHAR},
{"port", (char*) &mysql_port, SHOW_INT}, {"port", (char*) &mysql_port, SHOW_INT},
{"protocol_version", (char*) &protocol_version, SHOW_INT}, {"protocol_version", (char*) &protocol_version, SHOW_INT},
...@@ -2744,7 +2750,7 @@ static void usage(void) ...@@ -2744,7 +2750,7 @@ static void usage(void)
(DEFAULT, OLDEST, RANDOM or YOUNGEST, # sec)\n\ (DEFAULT, OLDEST, RANDOM or YOUNGEST, # sec)\n\
--bdb-logdir=directory Berkeley DB log file directory\n\ --bdb-logdir=directory Berkeley DB log file directory\n\
--bdb-no-sync Don't synchronously flush logs\n\ --bdb-no-sync Don't synchronously flush logs\n\
--bdb-recover Start Berkeley DB in recover mode\n\ --bdb-no-recover Don't try to recover Berkeley DB tables on start\n\
--bdb-shared-data Start Berkeley DB in multi-process mode\n\ --bdb-shared-data Start Berkeley DB in multi-process mode\n\
--bdb-tmpdir=directory Berkeley DB tempfile name\n\ --bdb-tmpdir=directory Berkeley DB tempfile name\n\
--skip-bdb Don't use berkeley db (will save memory)\n\ --skip-bdb Don't use berkeley db (will save memory)\n\
...@@ -3233,10 +3239,10 @@ static void get_options(int argc,char **argv) ...@@ -3233,10 +3239,10 @@ static void get_options(int argc,char **argv)
berkeley_home=optarg; berkeley_home=optarg;
break; break;
case OPT_BDB_NOSYNC: case OPT_BDB_NOSYNC:
berkeley_init_flags|=DB_TXN_NOSYNC; berkeley_env_flags|=DB_TXN_NOSYNC;
break; break;
case OPT_BDB_RECOVER: case OPT_BDB_NO_RECOVER:
berkeley_init_flags|=DB_RECOVER; berkeley_init_flags&= ~(DB_RECOVER);
break; break;
case OPT_BDB_TMP: case OPT_BDB_TMP:
berkeley_tmpdir=optarg; berkeley_tmpdir=optarg;
......
...@@ -190,6 +190,8 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields, ...@@ -190,6 +190,8 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
error=0; error=0;
id=0; id=0;
thd->proc_info="update"; thd->proc_info="update";
if (duplic == DUP_IGNORE || duplic == DUP_REPLACE)
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
while ((values = its++)) while ((values = its++))
{ {
if (fields.elements || !value_count) if (fields.elements || !value_count)
...@@ -281,6 +283,8 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields, ...@@ -281,6 +283,8 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
table->next_number_field=0; table->next_number_field=0;
thd->count_cuted_fields=0; thd->count_cuted_fields=0;
thd->next_insert_id=0; // Reset this if wrongly used thd->next_insert_id=0; // Reset this if wrongly used
if (duplic == DUP_IGNORE || duplic == DUP_REPLACE)
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
if (error) if (error)
goto abort; goto abort;
...@@ -1056,6 +1060,7 @@ bool delayed_insert::handle_inserts(void) ...@@ -1056,6 +1060,7 @@ bool delayed_insert::handle_inserts(void)
{ {
int error; int error;
uint max_rows; uint max_rows;
bool using_ignore=0;
DBUG_ENTER("handle_inserts"); DBUG_ENTER("handle_inserts");
/* Allow client to insert new rows */ /* Allow client to insert new rows */
...@@ -1096,6 +1101,12 @@ bool delayed_insert::handle_inserts(void) ...@@ -1096,6 +1101,12 @@ bool delayed_insert::handle_inserts(void)
table->time_stamp=row->time_stamp; table->time_stamp=row->time_stamp;
info.handle_duplicates= row->dup; info.handle_duplicates= row->dup;
if (info.handle_duplicates == DUP_IGNORE ||
info.handle_duplicates == DUP_REPLACE)
{
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
using_ignore=1;
}
thd.net.last_errno = 0; // reset error for binlog thd.net.last_errno = 0; // reset error for binlog
if (write_record(table,&info)) if (write_record(table,&info))
{ {
...@@ -1105,6 +1116,11 @@ bool delayed_insert::handle_inserts(void) ...@@ -1105,6 +1116,11 @@ bool delayed_insert::handle_inserts(void)
pthread_mutex_unlock(&LOCK_delayed_status); pthread_mutex_unlock(&LOCK_delayed_status);
row->log_query = 0; row->log_query = 0;
} }
if (using_ignore)
{
using_ignore=0;
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
}
if (row->query && row->log_query) if (row->query && row->log_query)
{ {
mysql_update_log.write(&thd,row->query, row->query_length); mysql_update_log.write(&thd,row->query, row->query_length);
...@@ -1192,6 +1208,9 @@ select_insert::prepare(List<Item> &values) ...@@ -1192,6 +1208,9 @@ select_insert::prepare(List<Item> &values)
thd->cuted_fields=0; thd->cuted_fields=0;
if (info.handle_duplicates != DUP_REPLACE) if (info.handle_duplicates != DUP_REPLACE)
table->file->extra(HA_EXTRA_WRITE_CACHE); table->file->extra(HA_EXTRA_WRITE_CACHE);
if (info.handle_duplicates == DUP_IGNORE ||
info.handle_duplicates == DUP_REPLACE)
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
table->file->deactivate_non_unique_index((ha_rows) 0); table->file->deactivate_non_unique_index((ha_rows) 0);
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -1203,6 +1222,7 @@ select_insert::~select_insert() ...@@ -1203,6 +1222,7 @@ select_insert::~select_insert()
if (save_time_stamp) if (save_time_stamp)
table->time_stamp=save_time_stamp; table->time_stamp=save_time_stamp;
table->next_number_field=0; table->next_number_field=0;
table->file->extra(HA_EXTRA_RESET);
} }
thd->count_cuted_fields=0; thd->count_cuted_fields=0;
} }
...@@ -1245,6 +1265,7 @@ bool select_insert::send_eof() ...@@ -1245,6 +1265,7 @@ bool select_insert::send_eof()
int error,error2; int error,error2;
if (!(error=table->file->extra(HA_EXTRA_NO_CACHE))) if (!(error=table->file->extra(HA_EXTRA_NO_CACHE)))
error=table->file->activate_all_index(thd); error=table->file->activate_all_index(thd);
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
if ((error2=ha_autocommit_or_rollback(thd,error)) && ! error) if ((error2=ha_autocommit_or_rollback(thd,error)) && ! error)
error=error2; error=error2;
...@@ -1306,6 +1327,9 @@ select_create::prepare(List<Item> &values) ...@@ -1306,6 +1327,9 @@ select_create::prepare(List<Item> &values)
restore_record(table,2); // Get empty record restore_record(table,2); // Get empty record
thd->count_cuted_fields=1; // count warnings thd->count_cuted_fields=1; // count warnings
thd->cuted_fields=0; thd->cuted_fields=0;
if (info.handle_duplicates == DUP_IGNORE ||
info.handle_duplicates == DUP_REPLACE)
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -1338,6 +1362,7 @@ bool select_create::send_eof() ...@@ -1338,6 +1362,7 @@ bool select_create::send_eof()
abort(); abort();
else else
{ {
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
VOID(pthread_mutex_lock(&LOCK_open)); VOID(pthread_mutex_lock(&LOCK_open));
mysql_unlock_tables(thd, lock); mysql_unlock_tables(thd, lock);
if (!table->tmp_table) if (!table->tmp_table)
...@@ -1358,6 +1383,7 @@ void select_create::abort() ...@@ -1358,6 +1383,7 @@ void select_create::abort()
} }
if (table) if (table)
{ {
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
enum db_type table_type=table->db_type; enum db_type table_type=table->db_type;
if (!table->tmp_table) if (!table->tmp_table)
hash_delete(&open_cache,(byte*) table); hash_delete(&open_cache,(byte*) table);
......
...@@ -214,6 +214,9 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, ...@@ -214,6 +214,9 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
table->time_stamp=0; table->time_stamp=0;
table->next_number_field=table->found_next_number_field; table->next_number_field=table->found_next_number_field;
VOID(table->file->extra(HA_EXTRA_WRITE_CACHE)); VOID(table->file->extra(HA_EXTRA_WRITE_CACHE));
if (handle_duplicates == DUP_IGNORE ||
handle_duplicates == DUP_REPLACE)
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
table->file->deactivate_non_unique_index((ha_rows) 0); table->file->deactivate_non_unique_index((ha_rows) 0);
table->copy_blobs=1; table->copy_blobs=1;
if (!field_term->length() && !enclosed->length()) if (!field_term->length() && !enclosed->length())
...@@ -223,7 +226,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, ...@@ -223,7 +226,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
if (table->file->extra(HA_EXTRA_NO_CACHE) || if (table->file->extra(HA_EXTRA_NO_CACHE) ||
table->file->activate_all_index(thd)) table->file->activate_all_index(thd))
error=1; /* purecov: inspected */ error=1; /* purecov: inspected */
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
table->time_stamp=save_time_stamp; table->time_stamp=save_time_stamp;
table->next_number_field=0; table->next_number_field=0;
if (thd->lock) if (thd->lock)
......
...@@ -73,14 +73,15 @@ static void init_signals(void) ...@@ -73,14 +73,15 @@ static void init_signals(void)
static inline bool end_active_trans(THD *thd) static inline bool end_active_trans(THD *thd)
{ {
int error=0;
if (thd->options & (OPTION_NOT_AUTO_COMMIT | OPTION_BEGIN)) if (thd->options & (OPTION_NOT_AUTO_COMMIT | OPTION_BEGIN))
{ {
thd->options&= ~(ulong) (OPTION_BEGIN | OPTION_STATUS_NO_TRANS_UPDATE); thd->options&= ~(ulong) (OPTION_BEGIN | OPTION_STATUS_NO_TRANS_UPDATE);
thd->server_status&= ~SERVER_STATUS_IN_TRANS; thd->server_status&= ~SERVER_STATUS_IN_TRANS;
if (ha_commit(thd)) if (ha_commit(thd))
return 1; error=1;
} }
return 0; return error;
} }
......
...@@ -848,14 +848,13 @@ store_create_info(THD *thd, TABLE *table, String *packet) ...@@ -848,14 +848,13 @@ store_create_info(THD *thd, TABLE *table, String *packet)
packet->append(" CHECKSUM=1", 11); packet->append(" CHECKSUM=1", 11);
if (table->db_create_options & HA_OPTION_DELAY_KEY_WRITE) if (table->db_create_options & HA_OPTION_DELAY_KEY_WRITE)
packet->append(" DELAY_KEY_WRITE=1",18); packet->append(" DELAY_KEY_WRITE=1",18);
if(table->comment) if(table->comment && table->comment[0])
{ {
packet->append(" COMMENT='", 10); packet->append(" COMMENT='", 10);
append_unescaped(packet, table->comment); append_unescaped(packet, table->comment);
packet->append('\''); packet->append('\'');
} }
DBUG_RETURN(0); DBUG_RETURN(0);
} }
......
...@@ -1658,7 +1658,8 @@ copy_data_between_tables(TABLE *from,TABLE *to, ...@@ -1658,7 +1658,8 @@ copy_data_between_tables(TABLE *from,TABLE *to,
}; };
init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1,1); init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1,1);
if (handle_duplicates == DUP_IGNORE)
to->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
next_field=to->next_number_field; next_field=to->next_number_field;
while (!(error=info.read_record(&info))) while (!(error=info.read_record(&info)))
{ {
...@@ -1694,6 +1695,7 @@ copy_data_between_tables(TABLE *from,TABLE *to, ...@@ -1694,6 +1695,7 @@ copy_data_between_tables(TABLE *from,TABLE *to,
to->file->print_error(tmp_error,MYF(0)); to->file->print_error(tmp_error,MYF(0));
error=1; error=1;
} }
to->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
if (to->file->activate_all_index(thd)) if (to->file->activate_all_index(thd))
error=1; error=1;
......
...@@ -210,6 +210,8 @@ int mysql_update(THD *thd,TABLE_LIST *table_list,List<Item> &fields, ...@@ -210,6 +210,8 @@ int mysql_update(THD *thd,TABLE_LIST *table_list,List<Item> &fields,
if (!(test_flags & TEST_READCHECK)) /* For debugging */ if (!(test_flags & TEST_READCHECK)) /* For debugging */
VOID(table->file->extra(HA_EXTRA_NO_READCHECK)); VOID(table->file->extra(HA_EXTRA_NO_READCHECK));
if (handle_duplicates == DUP_IGNORE)
table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
init_read_record(&info,thd,table,select,0,1); init_read_record(&info,thd,table,select,0,1);
ha_rows updated=0L,found=0L; ha_rows updated=0L,found=0L;
...@@ -250,6 +252,7 @@ int mysql_update(THD *thd,TABLE_LIST *table_list,List<Item> &fields, ...@@ -250,6 +252,7 @@ int mysql_update(THD *thd,TABLE_LIST *table_list,List<Item> &fields,
end_read_record(&info); end_read_record(&info);
thd->proc_info="end"; thd->proc_info="end";
VOID(table->file->extra(HA_EXTRA_READCHECK)); VOID(table->file->extra(HA_EXTRA_READCHECK));
VOID(table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY));
table->time_stamp=save_time_stamp; // Restore auto timestamp pointer table->time_stamp=save_time_stamp; // Restore auto timestamp pointer
using_transactions=table->file->has_transactions(); using_transactions=table->file->has_transactions();
if (updated && (error <= 0 || !using_transactions)) if (updated && (error <= 0 || !using_transactions))
......
...@@ -6,6 +6,14 @@ then ...@@ -6,6 +6,14 @@ then
exit 1; exit 1;
fi fi
echo "NOTE: This is a MySQL binary distribution. It's ready to run, you don't"
echo "need to configure it!"
echo ""
echo "To help you a bit, I am now going to create the needed MySQL databases"
echo "and start the MySQL server for you. If you run into any trouble, please"
echo "consult the MySQL manual, that you can find in the Docs directory."
echo ""
./scripts/mysql_install_db ./scripts/mysql_install_db
if [ $? = 0 ] if [ $? = 0 ]
then then
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment