mirror of
https://github.com/MariaDB/server.git
synced 2025-08-26 20:31:37 +02:00

Problem: ======= InnoDB persistent statistics doesn't take innodb_stats_method variable while calculating n_diff_pfx for the n-prefix index columns. Solution: ========= While calculating the persistent statistics, InnoDB consider all NULLS as different value when innodb_stats_method is set to NULLS_UNEQUAL or NULLS_IGNORED. InnoDB statistics depends on the value of "innodb_stats_method" variable when the statistics were last recalculated. dict_stats_analyze_index_level(), dict_stats_scan_page(), dict_stats_analyze_index_below_cur(), dict_stats_analyze_index_for_n_prefix(): All function accepts the parameter to indicate the innodb_stats_method. It also calculates the number of non-null key value for each level or leaf page dict_stats_index_set_n_diff(): calculates the number of non-null values similar to number of different key values. Append the non-default innodb_stats_method variable name for n_diff_pfx statistics description in mysql.innodb_index_stats. IndexScanStatistics: Structure to store the various statistical metric gathered during index scan fetch operation. This structure is being used in dict_stats_analyze_index_level() to fetch the statistics
25 lines
1 KiB
Text
25 lines
1 KiB
Text
--- innodb_stats_method.result
|
|
+++ innodb_stats_method,NULLS_IGNORED.result
|
|
@@ -7,16 +7,16 @@
|
|
SELECT stat_name, stat_value, stat_description
|
|
FROM mysql.innodb_index_stats WHERE database_name="test" and table_name="t1";
|
|
stat_name stat_value stat_description
|
|
-n_diff_pfx01 16341 DB_ROW_ID NULLS_UNEQUAL
|
|
+n_diff_pfx01 16341 DB_ROW_ID NULLS_IGNORED
|
|
n_leaf_pages 37 Number of leaf pages in the index
|
|
size 97 Number of pages in the index
|
|
-n_diff_pfx01 16384 f1 NULLS_UNEQUAL
|
|
-n_diff_pfx02 16384 f1,f3 NULLS_UNEQUAL
|
|
-n_diff_pfx03 16384 f1,f3,DB_ROW_ID NULLS_UNEQUAL
|
|
+n_diff_pfx01 16384 f1 NULLS_IGNORED
|
|
+n_diff_pfx02 16384 f1,f3 NULLS_IGNORED
|
|
+n_diff_pfx03 16384 f1,f3,DB_ROW_ID NULLS_IGNORED
|
|
n_leaf_pages 1 Number of leaf pages in the index
|
|
size 19 Number of pages in the index
|
|
-n_diff_pfx01 16384 f3 NULLS_UNEQUAL
|
|
-n_diff_pfx02 16384 f3,DB_ROW_ID NULLS_UNEQUAL
|
|
+n_diff_pfx01 16384 f3 NULLS_IGNORED
|
|
+n_diff_pfx02 16384 f3,DB_ROW_ID NULLS_IGNORED
|
|
n_leaf_pages 1 Number of leaf pages in the index
|
|
size 15 Number of pages in the index
|
|
SHOW KEYS FROM t1;
|