From 8fcd9478cc6fdb1d4cdb84a552d7dcf8e6f596d3 Mon Sep 17 00:00:00 2001 From: Sergei Petrunia Date: Thu, 28 Mar 2019 15:54:42 +0300 Subject: [PATCH] MDEV-18080, part#1: MyRocks is slow with log-bin=off The cause for this was fix MDEV-15372, which was trying to speed up the parallel slave. Part#1: Do not attempt the "optimization" for transactions that are not replication slave workers. --- storage/rocksdb/ha_rocksdb.cc | 38 +++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/storage/rocksdb/ha_rocksdb.cc b/storage/rocksdb/ha_rocksdb.cc index 6ce00cb4d1c..022511320a6 100644 --- a/storage/rocksdb/ha_rocksdb.cc +++ b/storage/rocksdb/ha_rocksdb.cc @@ -3750,20 +3750,32 @@ static int rocksdb_commit(handlerton* hton, THD* thd, bool commit_tx) - For a COMMIT statement that finishes a multi-statement transaction - For a statement that has its own transaction */ - - // First, commit without syncing. This establishes the commit order - tx->set_sync(false); - bool tx_had_writes = tx->get_write_count()? true : false ; - if (tx->commit()) { - DBUG_RETURN(HA_ERR_ROCKSDB_COMMIT_FAILED); - } - thd_wakeup_subsequent_commits(thd, 0); - - if (tx_had_writes && rocksdb_flush_log_at_trx_commit == FLUSH_LOG_SYNC) + if (thd->slave_thread) { - rocksdb::Status s= rdb->FlushWAL(true); - if (!s.ok()) - DBUG_RETURN(HA_ERR_INTERNAL_ERROR); + // An attempt to make parallel slave performant (not fully successful, + // see MDEV-15372): + + // First, commit without syncing. This establishes the commit order + tx->set_sync(false); + bool tx_had_writes = tx->get_write_count()? true : false ; + if (tx->commit()) { + DBUG_RETURN(HA_ERR_ROCKSDB_COMMIT_FAILED); + } + thd_wakeup_subsequent_commits(thd, 0); + + if (tx_had_writes && rocksdb_flush_log_at_trx_commit == FLUSH_LOG_SYNC) + { + rocksdb::Status s= rdb->FlushWAL(true); + if (!s.ok()) + DBUG_RETURN(HA_ERR_INTERNAL_ERROR); + } + } + else + { + /* Not a slave thread */ + if (tx->commit()) { + DBUG_RETURN(HA_ERR_ROCKSDB_COMMIT_FAILED); + } } } else { /*