mariadb/sql-bench
unknown d6f2fda680 Fixed REPAIR/CHECK/ANALYZE TABLE for tables with new BLOCK-ROW format.
Fixed maria_chk to repair BLOCK-ROW tables.
Added CREATE options ROW_FORMAT=PAGE & TRANSACTIONAL= 0|1
More DBUG information in a lot of functions
Some minor code cleanups
Enable handler errors earlier for better clear text error messages at handler startup / standalone usage.
Don't print NULL strings in my_create_with_symlink();  Fixes core dump when used with --debug


include/maria.h:
  Added extra variables needed for REPAIR with BLOCK records
include/my_base.h:
  Added argument for opening copy of maria table without a shared object
include/my_handler.h:
  Prototypes for my_handler_error_register() & my_handler_error_unregister()
include/pagecache.h:
  Added PAGECACHE_READ_UNKNOWN_PAGE
mysql-test/include/ps_conv.inc:
  Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/maria.result:
  Moved some things to maria-connect.test
  Updared results as REPAIR now works
  Added tests for creation option TRANSACTIONAL
mysql-test/r/ps_2myisam.result:
  Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/ps_3innodb.result:
  Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/ps_4heap.result:
  Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/ps_5merge.result:
  Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/ps_7ndb.result:
  Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/r/ps_maria.result:
  Enforce creation of table as MyISAM (to allow one to use --default-storage-engine)
mysql-test/t/maria.test:
  Moved some things to maria-connect.test
  Updared results as REPAIR now works
  Added tests for creation option TRANSACTIONAL
mysys/mf_iocache.c:
  More debugging
mysys/mf_tempfile.c:
  Added missing close()
mysys/my_error.c:
  init_glob_errs() is now done in my_init()
mysys/my_handler.c:
  Added functions to initialize handler error messages
mysys/my_init.c:
  Moevd init_glob_errs() here.
mysys/my_open.c:
  More comments
  More debugging
  Code cleanup (join multiple code paths) and indentation fixes. No change in logic.
mysys/my_symlink2.c:
  Don't print NULL strings
sql/handler.cc:
  Added printing of PAGE row type
  Moved out initializing of handler errors to allow handler to give better error messages at startup
sql/handler.h:
  ROW_TYPE_PAGES -> ROW_TYPE_PAGE
sql/lex.h:
  Added 'PAGE' and 'TRANSACTIONAL'
sql/mysqld.cc:
  Initialize handler error messages early to get better error messages from handler startup
sql/sql_show.cc:
  ROW_TYPE_PAGES -> ROW_TYPE_PAGE
sql/sql_table.cc:
  Removed not needed initializer
sql/sql_yacc.yy:
  Added CREATE options ROW_FORMAT=PAGE and TRANSACTIONAL=[0|1]
sql/table.cc:
  Store transactional flag in .frm
  More comments
sql-bench/example:
  Better example
sql/table.h:
  Added transactional table option
storage/maria/ha_maria.cc:
  More debug information
  Enable REPAIR
  Detect usage of TRANSACTIONAL table option
storage/maria/ma_bitmap.c:
  More comments (from Guilhem)
storage/maria/ma_blockrec.c:
  SANITY_CHECK -> SANITY_CHECKS (fixed typo)
  Write out pages on delete even if there is no rows. (Fixed problem with REPAIR)
  Removed some ASSERTS to runtime checks (for better REPAIR)
  Fixed bug when scanning rows
  More DBUG information
storage/maria/ma_check.c:
  Partial rewrite to allow REPAIR of BLOCK/PAGE format.
  Repair of BLOCK format rows is for now only done with 'maria_repair()' (= repair through key cache)
  The new logic to repair rows with BLOCK format is:
  
  - Create new, unrelated MARIA_HA of the table
  - Create new datafile and associate it with new handler
  - Reset all statistic information in new handler
  - Copy all data to new handler with normal write operations
  - Move state of new handler to old handler
  - Close new handler
  - Close data file in old handler
  - Rename old data file to new data file.
  - Reopen data file in old handler
storage/maria/ma_close.c:
  REmoved not needed block
storage/maria/ma_create.c:
  Swap arguments to _ma_initialize_data_file()
storage/maria/ma_delete_all.c:
  Split maria_delete_all_rows() to two functions to allow REPAIR to easily reset all status information.
storage/maria/ma_dynrec.c:
  Added checksum argument to _ma_rec_check (multi-thread fix)
storage/maria/ma_info.c:
  Indentation fix
storage/maria/ma_init.c:
  Register error message to get better error message on init and when using as standalone module.
storage/maria/ma_loghandler.c:
  Fixed typo that disabled some error detection by valgrind
storage/maria/ma_open.c:
  Added 'calc_check_checksum()'
  Don't log things during repair
  Added option HA_OPEN_COPY to allow one to open a Maria table with an independent share (required by REPAIR)
storage/maria/ma_pagecache.c:
  Fixed some compiler warnings
  Added support for PAGECACHE_READ_UNKNOWN_PAGE (used for scanning file without knowing page types)
storage/maria/ma_test_all.sh:
  More test of REPAIR
storage/maria/ma_update.c:
  Optimized checksum code
storage/maria/maria_chk.c:
  Use DBUG_SET_INITIAL() to get DBUG to work with --parallel-repair
  Ensure we always use maria_repair() for BLOCK format (for now)
  More DBUG information
storage/maria/maria_def.h:
  For now, always run with more checkings (SANITY_CHECKS)
  Added share->calc_check_checksum to be used with REPAIR / CHECK table.
  Swaped arguments to _ma_initialize_data_file()
storage/myisam/ft_stopwords.c:
  Added DBUG information
mysql-test/r/maria-connect.result:
  New BitKeeper file ``mysql-test/r/maria-connect.result''
mysql-test/t/maria-connect.test:
  New BitKeeper file ``mysql-test/t/maria-connect.test''
2007-07-01 16:20:57 +03:00
..
Comments
Data
limits
as3ap.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
bench-count-distinct.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
bench-init.pl.sh Fixed compiler warnings 2007-02-23 13:13:55 +02:00
compare-results.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
copy-db.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
crash-me.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
example Fixed REPAIR/CHECK/ANALYZE TABLE for tables with new BLOCK-ROW format. 2007-07-01 16:20:57 +03:00
example.bat
graph-compare-results.sh
innotest1.sh
innotest1a.sh
innotest1b.sh
innotest2.sh
innotest2a.sh
innotest2b.sh
Makefile.am my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
pwd.bat
README
run-all-tests.sh Fixed compiler warnings 2007-02-23 13:13:55 +02:00
server-cfg.sh Merge mysql.com:/home/kent/bk/main/mysql-5.0 2006-12-31 01:32:21 +01:00
test-alter-table.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
test-ATIS.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
test-big-tables.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
test-connect.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
test-create.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
test-insert.sh Fixed compiler warnings 2007-02-23 13:13:55 +02:00
test-select.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
test-transactions.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
test-wisconsin.sh my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
TODO
uname.bat

The MySQL Benchmarks

These tests require a MySQL version of at least 3.20.28 or 3.21.10.

Currently the following servers are supported:
MySQL 3.20 and 3.21, PostgreSQL 6.#, mSQL 2.# and Solid Server 2.2

The benchmark directory contains the query files and raw data files used to
populate the MySQL benchmark tables. In order to run the benchmarks, you
should normally execute a command such as the following:

run-all-tests --server=mysql --cmp=mysql,pg,solid --user=test --password=test --log

This means that you want to run the benchmarks with MySQL. The
limits should be taken from all of MySQL, PostgreSQL, and Solid.
The login name and password for connecting to the server both are
``test''.  The result should be saved as a RUN file in the output
directory.

When run-all-tests has finished, will have the individual results and the
the total RUN- file in the output directory.

If you want to look at some old results, use the compare-results script.
For example:

compare-results --dir=Results --cmp=mysql,pg,solid
compare-results --dir=Results --cmp=mysql,pg,solid --relative

compare-results --dir=Results --cmp=msql,mysql,pg,solid
compare-results --dir=Results --cmp=msql,mysql,pg,solid --relative

compare-results --dir=Results --server=mysql --same-server --cmp=mysql,pg,solid

Some of the files in the benchmark directory are:

File			Description

Data/ATIS		Contains data for 29 related tables used in the ATIS tests.
Data/Wisconsin		Contains data for the Wisconsin benchmark.
Results			Contains old benchmark results.
Makefile.am		Automake Makefile
README			This file.
test-ATIS.sh		Creation of 29 tables and a lot of selects on them.
test-connect.sh		Test how fast a connection to the server is.
test-create.sh		Test how fast a table is created.
test-insert.sh		Test create and fill of a table.
test-wisconsin.sh	A port of the PostgreSQL version of this benchmark.
run-all-tests		Use this to run all tests. When all tests are run,
			use the --log and --use-old options to get a RUN-file.
compare-results		Generates a comparison table from different RUN files.
server-cfg		Contains the limits and functions for all supported
			SQL servers.  If you want to add a new server, this
			should be the only file that neads to be changed.


Most of the tests should use portable SQL to make it possible to
compare different databases. Sometimes SQL extensions can make things
a lot faster. In this case the test may use the extensions if the --fast
option is used.

Useful options to all test-scripts (and run-all-tests):

--host=#	Hostname for MySQL server (default: localhost)
--db=#		Database to use (default: test)
--fast		Allow use of any non-standard SQL extension to
		get things done faster.
--lock-tables	Use table locking to get more speed.

From a text at http://www.mgt.ncu.edu.tw/CSIM/Paper/sixth/11.html:

The Wisconsin Benchmark

The Wisconsin Benchmark described in [Bitton, DeWitt, and Turbyfill
1983] [Boral and DeWitt 1984] [Bitton and Turbyfill 1985] [Bitton and
Turbyfill 1988], and [DeWitt 1993] is the first effort to
systematically measure and compare the performance of relational
database systems with database machines.  The benchmark is a
single-user and single-factor experiment using a synthetic database
and a controlled workload.  It measures the query optimization
performance of database systems with 32 query types to exercise the
components of the proposed systems.  The query suites include
selection, join, projection, aggregate, and simple update queries.

The test database consists of four generic relations.  The tenk
relation is the key table and most used. Two data types of small
integer numbers and character strings are utilized.  Data values are
uniformly distributed. The primary metric is the query elapsed
time. The main criticisms of the benchmark include the nature of
single-user workload, the simplistic database structure, and the
unrealistic query tests.  A number of efforts have been made to extend
the benchmark to incorporate the multi-user test.  However, they do
not receive the same acceptance as the original Wisconsin benchmark
except an extension work called the AS3AP benchmark.