Commit eaaea8eb authored by Vasil Dimov's avatar Vasil Dimov

Fix Bug#56340 innodb updates index stats too frequently after non-index updates

This is a simple optimization issue. All stats are related to only indexed
columns, index size or number of rows in the whole table. UPDATEs that touch
only non-indexed columns cannot affect stats and we can avoid calling the
function row_update_statistics_if_needed() which may result in unnecessary I/O.

Approved by:	Marko (rb://466)
parent 51cdf595
......@@ -1447,7 +1447,12 @@ row_update_for_mysql(
srv_n_rows_updated++;
}
row_update_statistics_if_needed(prebuilt->table);
/* We update table statistics only if it is a DELETE or UPDATE
that changes indexed columns, UPDATEs that change only non-indexed
columns would not affect statistics. */
if (node->is_delete || !(node->cmpl_info & UPD_NODE_NO_ORD_CHANGE)) {
row_update_statistics_if_needed(prebuilt->table);
}
trx->op_info = "";
......
......@@ -1422,7 +1422,12 @@ row_update_for_mysql(
srv_n_rows_updated++;
}
row_update_statistics_if_needed(prebuilt->table);
/* We update table statistics only if it is a DELETE or UPDATE
that changes indexed columns, UPDATEs that change only non-indexed
columns would not affect statistics. */
if (node->is_delete || !(node->cmpl_info & UPD_NODE_NO_ORD_CHANGE)) {
row_update_statistics_if_needed(prebuilt->table);
}
trx->op_info = "";
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment