[MDEV-4276] Re-run DBT-3 benchmark with new statistics: 5.6 and 10.0 Created: 2013-03-15 Updated: 2018-01-30 Resolved: 2018-01-30 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Optimizer |
| Fix Version/s: | N/A |
| Type: | Task | Priority: | Critical |
| Reporter: | Sergei Petrunia | Assignee: | Axel Schwenke |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | benchmarking, dbt-3 | ||
| Description |
|
We need a re-run of DBT-3 benchmark with the new features:
The primary goal is to explore what query plans will be used with Engine-independent table statistics (further called EITS). EITS are persistent, predictable (statistics calculation has no randomness elements), and precise. The statistics need to be collected manually, and there is an optimizer setting to get them to be used (see https://kb.askmonty.org/en/engine-independent-table-statistics/ for details). MySQL-5.6 and their persistent statistics should be used as something to compare against. I suppose, increasing innodb_stats_persistent_sample_pages should reduce the number of chosen plans (to one plan even?) ? The benchmark should be a DBT-3 run. It should be IO-bound. |
| Comments |
| Comment by Timour Katchaounov (Inactive) [ 2013-03-25 ] |
|
The benchmark should be run with the following tree: This tree is based on MWL#253, which adds predicate selectivity estimates. The tree of set @@optimizer_use_condition_selectivity=3; In addition, in order to get proper selectivity estimates that let the optimizer choose the right plan |
| Comment by Timour Katchaounov (Inactive) [ 2013-03-26 ] |
|
To run the latest implementation of mdev-83 that includes histograms from MWL#253, To collect table independent statistics with ANALYZE TABLE set: In addition to other optimizer setttings, make sure that you set: Specifically Q20 benefits a lot from: |
| Comment by Timour Katchaounov (Inactive) [ 2013-04-03 ] |
|
To check how to re-create the statistics tables check the latest version of the file 'scripts/mysql_system_tables.sql'. use mysql; CREATE TABLE IF NOT EXISTS table_stats (db_name varchar(64) NOT NULL, table_name varchar(64) NOT NULL, cardinality bigint(21) unsigned DEFAULT NULL, PRIMARY KEY (db_name,table_name) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Statistics on Tables'; CREATE TABLE IF NOT EXISTS column_stats (db_name varchar(64) NOT NULL, table_name varchar(64) NOT NULL, column_name varchar(64) NOT NULL, min_value varchar(255) DEFAULT NULL, max_value varchar(255) DEFAULT NULL, nulls_ratio decimal(12,4) DEFAULT NULL, avg_length decimal(12,4) DEFAULT NULL, avg_frequency decimal(12,4) DEFAULT NULL, hist_size tinyint unsigned, hist_type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB'), histogram varbinary(255), PRIMARY KEY (db_name,table_name,column_name) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Statistics on Columns'; CREATE TABLE IF NOT EXISTS index_stats (db_name varchar(64) NOT NULL, table_name varchar(64) NOT NULL, index_name varchar(64) NOT NULL, prefix_arity int(11) unsigned NOT NULL, avg_frequency decimal(12,4) DEFAULT NULL, PRIMARY KEY (db_name,table_name,index_name,prefix_arity) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Statistics on Indexes'; Then run ANALYZE ... . |
| Comment by Axel Schwenke [ 2018-01-30 ] |
|
This stalled too long. If we need this kind of benchmark, open a new task. |