-
Yasufumi Kinoshita authored
The bug caused by long index SX lock held by dict_stats_analyze_index_level(). It is from too huge number of pages for request to sampling at dict_stats_analyze_index() Even if wrong setting exceeds an assumption, should not crash. The fix points are, 1. Releases the SX lock when level0 scanning. Scanning leaf pages without index->lock is allowed. Then, this path doesn't cause the crash at least. 2. Prefers level0 scanning for the such huge pages request to sampling. Slower full scan of leaf pages is better than holding index SX lock too long and hang. 3. If long time waiters for the index->lock are detected, aborts dict_stats_analyze_index() and retries with smaller n_sample_pages. RB: 25277 Reviewed-by:
Jakub Lopuszanski <jakub.lopuszanski@oracle.com>
Yasufumi Kinoshita authoredThe bug caused by long index SX lock held by dict_stats_analyze_index_level(). It is from too huge number of pages for request to sampling at dict_stats_analyze_index() Even if wrong setting exceeds an assumption, should not crash. The fix points are, 1. Releases the SX lock when level0 scanning. Scanning leaf pages without index->lock is allowed. Then, this path doesn't cause the crash at least. 2. Prefers level0 scanning for the such huge pages request to sampling. Slower full scan of leaf pages is better than holding index SX lock too long and hang. 3. If long time waiters for the index->lock are detected, aborts dict_stats_analyze_index() and retries with smaller n_sample_pages. RB: 25277 Reviewed-by:
Jakub Lopuszanski <jakub.lopuszanski@oracle.com>
Loading