[Maria-developers] sql-bench results for MariaDB string optimization
Hi Monty, here are the results comparing your string optimization patch with MariaDB 5.2 and sql-bench. I added the configuration used, a short summary, and a full summary of the results. I ran the test on our new machine "pitbull", a two socket hexa-core Intel Xeon X5660 @ 2.80GHz with 23GB RAM with a single S-ATA disk. Todo: the tests show a couple of results with 0 - 1 wallclock seconds, which is due the quite faster machine. I will adjust the tests to run for at least 5 seconds (again). I attached the result file for the that the results are not good readable in this email. Best, Hakan hakan@pitbull:~/work/monty_program/mariadb-tools/sql-bench$ more conf/sql-bench-only_myisam.cnf # Base configuration for running sql-bench tests for MariaDB > 5.2.2. # # This is the minimal base test version # # Hakan Kuecuekyilmaz, <hakan at askmonty dot org>, 2010-11-18. # Configure environment variables. # Note: ccache is checked in the host specific config file. $ENV{'CC'} = "gcc"; $ENV{'CFLAGS'} = "-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparenthese s -Wsign-compare -Wwrite-strings -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wunused-paramete r -O3 -fno-omit-frame-pointer"; $ENV{'CXX'} = "gcc"; $ENV{'CXXFLAGS'} = "-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparenthe ses -Wsign-compare -Wwrite-strings -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wreorder -Wcto r-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -O3 -fno-omit-frame-pointer"; $ENV{'CXXLDFLAGS'} = ""; $config = { # Configure invocation line. # Do not use --prefix here. configure_line => '--enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-plugin-aria --with-aria-tmp-tables --without-plugin-innodb_plugin --with-mysqld-ldflags=-static --with-client -ldflags=-static --with-readline --with-ssl --with-plugins=max-no-ndb --with-embedded-server --with-libevent --enabl e-local-infile', }; # # Different test to be run with the above configuration. # The sql-bench-test will automaticly get --suffix=_test_name as an argument # The different options that can be used are: # # mysqld_start_options Options given to the mysqld that is started. # This is prefixed with --skip-grant. # mysqld_init_command SQL commands given to mysqld before tests starts. # sql_bench_options Options given to sql-bench. # $sql_bench_test->{'base'} = { mysqld_start_options => '', mysqld_init_command => '', sql_bench_options => '--comment="base test (with MyISAM)"', }; # This has to be the last line. See "perldoc -f require" for details. 1; RESULTS: Comparing 5.2 plain against patched 5.2 (three runs opt1/opt2/opt3) Overall the string optimization patch shows better results. Highlights are * Biggest gain we see in "connect": ~ 4 - 15% * Biggest loss we see in "insert": ~ 1 - 3% Biggest loss in detail: connect (50000) | 41.00| 1.024| 1.024| 1.000| connect+select_1_row (50000) | 48.00| 1.042| 1.042| 1.021| connect+select_simple (50000) | 45.00| 1.022| 1.022| 1.022| count_distinct_big (720) | 19.00| 1.105| 1.000| 1.053| count_distinct_group_on_key (7000) | 29.00| 1.034| 1.000| 1.034| count_group_on_key_parts (7000) | 27.00| 1.074| 1.000| 1.037| create_MANY_tables (400) | 17.00| 1.059| 1.059| 1.059| delete_all_many_keys (1) | 5.00| 1.200| 1.200| 1.000| delete_big_many_keys (128) | 5.00| 1.200| 1.200| 1.000| insert (350768) | 39.00| 1.103| 1.077| 1.051| insert_duplicates (100000) | 9.00| 1.000| 1.444| 1.333| insert_duplicates (100000) | 9.00| 1.000| 1.444| 1.333| min_max (60) | 1.00| 2.000| 1.000| 2.000| once_prepared_select (100000) | 13.00| 1.000| 1.308| 1.231| order_by_big (10) | 5.00| 1.000| 1.200| 1.200| order_by_big_key_desc (10) | 5.00| 1.200| 1.000| 1.200| outer_join_not_found (500) | 4.00| 1.250| 1.000| 1.250| select_big (80) | 5.00| 1.200| 1.000| 1.200| select_big_str (50000) | 14.00| 1.071| 1.071| 1.071| update_of_key (50000) | 6.00| 1.167| 1.333| 1.333| update_with_key (300000) | 30.00| 1.133| 1.333| 1.333| update_with_key_prefix (100000) | 10.00| 1.100| 1.400| 1.400| Full results: hakan@pitbull:~/sql-bench-results/pitbull$ /tmp/tmp.jAANb0DlLs/install/sql-bench/compare-results 2010-12-08-5.2-base/base/RUN-mysql-Linux_2.6.35_23_server_x86_64 2010-12-08-5.2-string-opt1/base/RUN-mysql-Linux_2.6.35_23_server_x86_64 2010-12-08-5.2-string-opt2/base/RUN-mysql-Linux_2.6.35_23_server_x86_64 2010-12-09-5.2-string-opt3/base/RUN-mysql-Linux_2.6.35_23_server_x86_64 --relative This is the result file of the different benchmark tests. The number in () after each tests shows how many SQL commands the particular test did. As one test may have many different parameters this gives only a rough picture of what was done. Check the source for more information :) Keep in mind that one can't compare benchmarks run with different --cmp options. The --cmp options sets the all limits according to the worst limit for all server in the benchmark. Numbers marked with '+' are estimated according to previous runs because the query took longer than a given time-limit to finish. The estimation shouldn't be far from the real result thought. Numbers marked with '?' contains results that gave wrong result. This can only be used as an indication of how long it took for the server to produce a wrong result :) Numbers marked with '*' are tests that was run a different number times than the test in the first column. The reason for this is normally that the marked test was run with different options that affects the number of tests or that the test was from another version of the MySQL benchmarks. Hope this will give you some idea how each db is performing at what thing .... Hope you like it .... Luuk & Monty (1997) Column 1 is in seconds. All other columns are presented relative to this. 1.00 is the same, bigger numbers indicates slower The result logs which where found and the options: 1 mysql-Linux_2.6.35_23_server_x86_64 : MySQL 5.2.4 MariaDB --socket=/tmp/tmp.bn05ikyeM5/mysql.sock base test (with MyISAM) 2 mysql-Linux_2.6.35_23_server_x86_64 : MySQL 5.2.4 MariaDB --socket=/tmp/tmp.eNBvB5BqYb/mysql.sock base test (with MyISAM) 3 mysql-Linux_2.6.35_23_server_x86_64 : MySQL 5.2.4 MariaDB --socket=/tmp/tmp.AG0msBbvC2/mysql.sock base test (with MyISAM) 4 mysql-Linux_2.6.35_23_server_x86_64 : MySQL 5.2.4 MariaDB --socket=/tmp/tmp.jAANb0DlLs/mysql.sock base test (with MyISAM) ================================================================================= Operation | 1| 2| 3| 4| |mysql-Linu|mysql-Linu|mysql-Linu|mysql-Linu| --------------------------------------------------------------------------------- Relative results per test (First column is in seconds): | --------------------------------------------------------------------------------- ATIS | 407.00| 0.980| 0.983| 0.978| alter-table | 112.00| 0.991| 0.955| 0.991| big-tables | 425.00| 0.965| 0.953| 0.958| connect | 403.00| 0.893| 0.963| 0.846| create | 918.00| 0.997| 1.001| 0.971| insert | 536.00| 1.007| 1.034| 1.011| select | 417.00| 0.959| 0.868| 0.986| wisconsin | 408.00| 1.007| 0.983| 0.985| --------------------------------------------------------------------------------- The results per operation: | --------------------------------------------------------------------------------- alter_table_add (992) | 73.00| 0.973| 0.945| 0.973| alter_table_drop (496) | 38.00| 1.026| 0.947| 1.000| connect (50000) | 41.00| 1.024| 1.024| 1.000| connect+select_1_row (50000) | 48.00| 1.042| 1.042| 1.021| connect+select_simple (50000) | 45.00| 1.022| 1.022| 1.022| count (100) | 3.00| 0.667| 0.667| 0.667| count_distinct (7000) | 22.00| 1.000| 1.000| 1.000| count_distinct_2 (7000) | 38.00| 1.000| 1.000| 1.000| count_distinct_big (720) | 19.00| 1.105| 1.000| 1.053| count_distinct_group (7000) | 36.00| 0.667| 0.667| 0.972| count_distinct_group_on_key (7000) | 29.00| 1.034| 1.000| 1.034| count_distinct_group_on_key_parts (7| 33.00| 1.000| 0.697| 0.818| count_distinct_key_prefix (7000) | 15.00| 1.000| 0.933| 1.000| count_group (7000) | 33.00| 1.000| 0.606| 1.030| count_group_on_key_parts (7000) | 27.00| 1.074| 1.000| 1.037| count_group_with_order (7000) | 34.00| 1.000| 0.618| 1.029| count_on_key (50100) | 66.00| 0.848| 0.955| 0.955| create+drop (10000) | 450.00| 1.002| 1.007| 0.973| create_MANY_tables (400) | 17.00| 1.059| 1.059| 1.059| create_index (8) | 0.00| 1.000| 0.000| 1.000| create_key+drop (10000) | 450.00| 0.991| 0.996| 0.967| create_table (31) | 2.00| 0.500| 0.500| 0.500| delete_all_many_keys (1) | 5.00| 1.200| 1.200| 1.000| delete_big (1) | 0.00| 0.000| 0.000| 0.000| delete_big_many_keys (128) | 5.00| 1.200| 1.200| 1.000| delete_key (10000) | 2.00| 0.500| 0.500| 0.500| delete_range (12) | 1.00| 2.000| 1.000| 1.000| drop_index (8) | 1.00| 0.000| 1.000| 1.000| drop_table (28) | 0.00| 0.000| 0.000| 0.000| drop_table_when_MANY_tables (400) | 1.00| 0.000| 0.000| 0.000| insert (350768) | 39.00| 1.103| 1.077| 1.051| insert_duplicates (100000) | 9.00| 1.000| 1.444| 1.333| insert_key (100000) | 25.00| 0.960| 1.040| 0.960| insert_many_fields (140000) | 112.00| 0.982| 0.982| 0.982| insert_select_1_key (1) | 1.00| 1.000| 1.000| 1.000| insert_select_2_keys (1) | 0.00| 0.000| 1.000| 1.000| min_max (60) | 1.00| 2.000| 1.000| 2.000| min_max_on_key (85000) | 16.00| 1.000| 1.000| 1.000| multiple_value_insert (100000) | 1.00| 0.000| 1.000| 1.000| once_prepared_select (100000) | 13.00| 1.000| 1.308| 1.231| order_by_big (10) | 5.00| 1.000| 1.200| 1.200| order_by_big_key (10) | 6.00| 0.833| 1.000| 0.833| order_by_big_key2 (10) | 5.00| 1.000| 1.000| 1.200| order_by_big_key_desc (10) | 5.00| 1.200| 1.000| 1.200| order_by_big_key_diff (10) | 6.00| 1.000| 0.833| 0.833| order_by_big_key_prefix (10) | 5.00| 1.000| 1.200| 1.000| order_by_key2_diff (500) | 1.00| 1.000| 1.000| 1.000| order_by_key_prefix (500) | 1.00| 1.000| 1.000| 1.000| order_by_range (500) | 1.00| 1.000| 0.000| 0.000| outer_join (10) | 5.00| 1.000| 1.200| 1.000| outer_join_found (10) | 5.00| 1.000| 1.000| 1.000| outer_join_not_found (500) | 4.00| 1.250| 1.000| 1.250| outer_join_on_key (10) | 5.00| 1.000| 0.800| 1.000| prepared_select (100000) | 22.00| 0.955| 0.955| 0.955| select_1_row (500000) | 52.00| 0.750| 0.788| 0.673| select_1_row_cache (500000) | 50.00| 0.660| 0.700| 0.660| select_2_rows (500000) | 57.00| 0.772| 0.947| 0.684| select_big (80) | 5.00| 1.200| 1.000| 1.200| select_big_str (50000) | 14.00| 1.071| 1.071| 1.071| select_cache (10000) | 18.00| 1.000| 0.944| 0.944| select_cache2 (10000) | 18.00| 0.944| 0.944| 0.944| select_column+column (500000) | 53.00| 0.925| 0.830| 0.792| select_diff_key (500) | 0.00| 0.000| 0.000| 0.000| select_distinct (40000) | 113.00| 1.018| 1.009| 1.009| select_group (140111) | 121.00| 1.008| 1.041| 1.000| select_group_when_MANY_tables (400) | 0.00| 0.000| 0.000| 0.000| select_join (5000) | 22.00| 1.000| 1.000| 1.000| select_key (200000) | 43.00| 1.000| 0.977| 0.953| select_key2 (200000) | 46.00| 0.978| 0.957| 0.957| select_key2_return_key (200000) | 44.00| 1.000| 0.977| 0.955| select_key2_return_prim (200000) | 46.00| 0.978| 0.935| 0.935| select_key_prefix (200000) | 46.00| 1.022| 0.957| 0.957| select_key_prefix_join (5000) | 131.00| 0.908| 0.893| 0.916| select_key_return_key (200000) | 43.00| 0.953| 0.953| 0.953| select_many_fields (140000) | 313.00| 0.958| 0.942| 0.949| select_range (410) | 22.00| 0.955| 0.955| 1.000| select_range_key2 (25010) | 5.00| 1.000| 1.200| 1.000| select_range_prefix (25010) | 6.00| 1.000| 1.000| 1.000| select_simple (500000) | 22.00| 1.000| 1.318| 0.955| select_simple_cache (500000) | 21.00| 0.952| 1.524| 0.952| select_simple_join (25000) | 22.00| 1.045| 1.045| 1.000| update_big (10) | 4.00| 1.000| 1.000| 1.000| update_of_key (50000) | 6.00| 1.167| 1.333| 1.333| update_of_key_big (501) | 3.00| 1.000| 1.000| 0.667| update_of_primary_key_many_keys (256| 3.00| 0.667| 1.000| 0.667| update_with_key (300000) | 30.00| 1.133| 1.333| 1.333| update_with_key_prefix (100000) | 10.00| 1.100| 1.400| 1.400| wisc_benchmark (50014) | 403.00| 1.010| 0.988| 0.988| --------------------------------------------------------------------------------- TOTALS | 3619.00| 0.978| 0.975| 0.966| ================================================================================= -- Hakan Küçükyılmaz, QA/Benchmark Engineer, Stuttgart/Germany Monty Program Ab, http://askmonty.org/ Skype: hakank_ Phone: +49 171 1919839
participants (1)
-
Hakan Kuecuekyilmaz