summaryrefslogtreecommitdiff
path: root/storage/innobase/include/ut0new.h
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2018-01-27 19:30:18 +0400
committerSergey Vojtovich <svoj@mariadb.org>2018-01-31 15:18:21 +0400
commit53cc9aa5be63b4dd03aba804aebaa3bd470dab9c (patch)
treef6ceb3cbd4e2b2e16c575e363f583ecdc8837f41 /storage/innobase/include/ut0new.h
parentaf566d8a63f908c76d43957e790e861d944486b0 (diff)
downloadmariadb-git-53cc9aa5be63b4dd03aba804aebaa3bd470dab9c.tar.gz
MDEV-15104 - Remove trx_sys_t::rw_trx_ids
Take snapshot of registered read-write transaction identifiers directly from rw_trx_hash. It immediately saves one trx_sys.mutex lock, reduces size of another critical section protected by this mutex, and makes further optimisations like removing trx_sys_t::serialisation_list possible. Downside of this approach is bigger overhead for view opening, because iterating LF_HASH is more expensive compared to taking snapshot of an array. However for low concurrency overhead difference is negligible, while for high concurrency mutex is much bigger evil. Currently we still take trx_sys.mutex to serialise ReadView creation. This is required to keep serialisation_list ordered by trx->no as well as not to let purge thread to create more recent snapshot while another thread gets suspended during creation of older snapshot. This will become completely mutex free along with serialisation_list removal. Compared to previous implementation removing element from rw_trx_hash and serialisation_list is not atomic. We disregard all possible bad consequences (if there're any) since it will be solved along with serialisation_list removal.
Diffstat (limited to 'storage/innobase/include/ut0new.h')
-rw-r--r--storage/innobase/include/ut0new.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/storage/innobase/include/ut0new.h b/storage/innobase/include/ut0new.h
index 955e7b026c7..d51fb40a73e 100644
--- a/storage/innobase/include/ut0new.h
+++ b/storage/innobase/include/ut0new.h
@@ -172,7 +172,6 @@ extern PSI_memory_key mem_key_other;
extern PSI_memory_key mem_key_row_log_buf;
extern PSI_memory_key mem_key_row_merge_sort;
extern PSI_memory_key mem_key_std;
-extern PSI_memory_key mem_key_trx_sys_t_rw_trx_ids;
extern PSI_memory_key mem_key_partitioning;
/** Setup the internal objects needed for UT_NEW() to operate.