Details
-
Task
-
Status: Closed (View Workflow)
-
Minor
-
Resolution: Fixed
-
None
Description
Development task: MDEV-4345
LP tree: lp:maria/10.0
New variable/option:
optimizer_selectivity_sampling_limit (default 100)
+ Controls number of record samples to check condition
|
+ selectivity
|
|
+ ulong check_rows=
|
+ min(thd->variables.optimizer_selectivity_sampling_limit,
|
+ (ulong) (table_records * SELECTIVITY_SAMPLING_SHARE));
|
+ if (cond && check_rows > SELECTIVITY_SAMPLING_THRESHOLD &&
|
+ thd->variables.optimizer_use_condition_selectivity > 4)
|
+#define SELECTIVITY_SAMPLING_SHARE 0.10
|
+#define SELECTIVITY_SAMPLING_LIMIT 5000
|
|
|
+/* check this number of rows (default value) */
|
+#define SELECTIVITY_SAMPLING_LIMIT 5000
|
+/* but no more then this part of table (10%) */
|
+#define SELECTIVITY_SAMPLING_SHARE 0.10
|
+/* do not check if we are going check less then this number of records */
|
+#define SELECTIVITY_SAMPLING_THRESHOLD 10
|
+ "5 - additionally use selectivity of certain non-range predicates "
|
+ "calculated on record samples",
|
Attachments
Issue Links
- is blocked by
-
MDEV-4428 MWL#253: Assertion `join->best_read < double(..) fails in greedy_search with selectivity=3 and use_stat_tables, without ANALYZE
-
- Closed
-
-
MDEV-4429 MWL#253: Assertion `join->best_read < double(...) fails with optimizer_use_condition_selectivity=3, table statistics
-
- Closed
-
- relates to
-
MDEV-4345 Fix table selectivity by sampling some probably very selective predicates
-
- Closed
-
Ran a set of comparison tests on 10.0 revno 3749. Server parameters:
--mysqld1=--use_stat_tables=PREFERABLY
--mysqld1='--optimizer_use_condition_selectivity=5 --mysqld1=--histogram_size=100 --mysqld1=--histogram_type=DOUBLE_PREC_HB',
--mysqld1='--optimizer_use_condition_selectivity=5 --mysqld1=--histogram_size=50 --mysqld1=--histogram_type=SINGLE_PREC_HB'
(the baseline is the same server but without the options listed above).
Numerous tests failed with assertion failures similar to
MDEV-4428,MDEV-4429(they all look similar until one is fixed and others still fail).A few tests failed with known unrelated bugs.
It's going to be hard to continue the tests until the family of assertion `join->best_read < double(...) failures is fixed, but they're currently waiting for their turn in the bug queue.