{"action":"created","issue":{"url":"https://api.github.com/repos/facebook/mysql-5.6/issues/150","labels_url":"https://api.github.com/repos/facebook/mysql-5.6/issues/150/labels{/name}","comments_url":"https://api.github.com/repos/facebook/mysql-5.6/issues/150/comments","events_url":"https://api.github.com/repos/facebook/mysql-5.6/issues/150/events","html_url":"https://github.com/facebook/mysql-5.6/issues/150","id":128958454,"number":150,"title":"MyRocks has more overhead from memcpy and malloc on range scans vs InnoDB","user":{"login":"mdcallag","id":1641037,"avatar_url":"https://avatars.githubusercontent.com/u/1641037?v=3","gravatar_id":"","url":"https://api.github.com/users/mdcallag","html_url":"https://github.com/mdcallag","followers_url":"https://api.github.com/users/mdcallag/followers","following_url":"https://api.github.com/users/mdcallag/following{/other_user}","gists_url":"https://api.github.com/users/mdcallag/gists{/gist_id}","starred_url":"https://api.github.com/users/mdcallag/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdcallag/subscriptions","organizations_url":"https://api.github.com/users/mdcallag/orgs","repos_url":"https://api.github.com/users/mdcallag/repos","events_url":"https://api.github.com/users/mdcallag/events{/privacy}","received_events_url":"https://api.github.com/users/mdcallag/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2016-01-26T22:11:46Z","updated_at":"2016-01-27T20:32:38Z","closed_at":null,"body":"MyRocks has much more overhead for _memcpy_ssse3_back, free, malloc on q2 as explained in https://github.com/facebook/mysql-5.6/issues/148. InnoDB gets ~1.35X more QPS than MyRocks.\r\n\r\nFlat linux perf CPU profiles\r\n````\r\nFrom InnoDB\r\n\r\n     4.06%  mysqld               [.] MYSQLparse\r\n     2.78%  mysqld               [.] rec_get_offsets_func\r\n     2.53%  mysqld               [.] page_rec_get_n_recs_before\r\n     1.63%  libc-2.17.so         [.] __memcpy_ssse3_back\r\n     1.41%  mysqld               [.] my_hash_sort_bin\r\n     1.28%  mysqld               [.] row_search_for_mysql\r\n     1.18%  mysqld               [.] buf_page_get_gen\r\n     0.99%  mysqld               [.] find_keyword\r\n     0.96%  mysqld               [.] JOIN::optimize\r\n     0.90%  mysqld               [.] make_join_statistics\r\n     0.86%  mysqld               [.] cmp_dtuple_rec_with_match_low\r\n     0.78%  mysqld               [.] page_cur_search_with_match\r\n     0.75%  mysqld               [.] lex_one_token\r\n     0.75%  mysqld               [.] free\r\n     0.70%  mysqld               [.] btr_cur_search_to_nth_level\r\n     0.64%  mysqld               [.] malloc\r\n     0.61%  [kernel.kallsyms]    [k] fget_light\r\n     0.58%  libpthread-2.17.so   [.] pthread_getspecific\r\n     0.55%  libpthread-2.17.so   [.] __libc_recv\r\n     0.55%  libc-2.17.so         [.] __memset_sse2\r\n     0.49%  mysqld               [.] THD::enter_stage\r\n     0.49%  mysqld               [.] row_sel_field_store_in_mysql_format_func\r\n---\r\n\r\nFrom MyRocks\r\n\r\n     3.58%  mysqld.stat          [.] MYSQLparse\r\n     2.80%  libc-2.17.so         [.] __memcpy_ssse3_back\r\n     2.32%  mysqld.stat          [.] free\r\n     2.24%  mysqld.stat          [.] malloc\r\n     1.60%  mysqld.stat          [.] rocksdb::BlockIter::ParseNextKey\r\n     1.17%  libc-2.17.so         [.] __memcmp_sse4_1\r\n     1.00%  mysqld.stat          [.] rocksdb::BlockIter::BinarySeek\r\n     0.94%  mysqld.stat          [.] rocksdb::InternalKeyComparator::Compare\r\n     0.77%  mysqld.stat          [.] find_keyword\r\n     0.74%  mysqld.stat          [.] rdb_perf_context_stop\r\n     0.74%  mysqld.stat          [.] lex_one_token\r\n     0.73%  mysqld.stat          [.] rocksdb::StatisticsImpl::recordTick\r\n     0.70%  mysqld.stat          [.] make_join_statistics\r\n     0.65%  mysqld.stat          [.] dispatch_command\r\n     0.63%  libpthread-2.17.so   [.] pthread_mutex_unlock\r\n     0.62%  mysqld.stat          [.] JOIN::optimize\r\n     0.62%  mysqld.stat          [.] update_row_stats\r\n     0.61%  libc-2.17.so         [.] __memset_sse2\r\n     0.54%  libpthread-2.17.so   [.] __libc_recv\r\n     0.51%  mysqld.stat          [.] rocksdb::DBIter::FindValueForCurrentKey\r\n     0.44%  mysqld.stat          [.] mysql_execute_command\r\n     0.44%  mysqld.stat          [.] rocksdb::MergingIterator::Prev\r\n````\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/facebook/mysql-5.6/issues/comments/175841685","html_url":"https://github.com/facebook/mysql-5.6/issues/150#issuecomment-175841685","issue_url":"https://api.github.com/repos/facebook/mysql-5.6/issues/150","id":175841685,"user":{"login":"mdcallag","id":1641037,"avatar_url":"https://avatars.githubusercontent.com/u/1641037?v=3","gravatar_id":"","url":"https://api.github.com/users/mdcallag","html_url":"https://github.com/mdcallag","followers_url":"https://api.github.com/users/mdcallag/followers","following_url":"https://api.github.com/users/mdcallag/following{/other_user}","gists_url":"https://api.github.com/users/mdcallag/gists{/gist_id}","starred_url":"https://api.github.com/users/mdcallag/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdcallag/subscriptions","organizations_url":"https://api.github.com/users/mdcallag/orgs","repos_url":"https://api.github.com/users/mdcallag/repos","events_url":"https://api.github.com/users/mdcallag/events{/privacy}","received_events_url":"https://api.github.com/users/mdcallag/received_events","type":"User","site_admin":false},"created_at":"2016-01-27T20:32:38Z","updated_at":"2016-01-27T20:32:38Z","body":"Callers to malloc for q2a, the ascending range scan\r\n\r\n````\r\n            ---malloc\r\n               |          \r\n               |--58.97%-- operator new\r\n               |          |          \r\n               |          |--13.48%-- std::string::_Rep::_S_create\r\n               |          |          |          \r\n               |          |          |--68.68%-- std::string::_Rep::_M_clone\r\n               |          |          |          std::string::reserve\r\n               |          |          |          |          \r\n               |          |          |          |--66.89%-- std::string::append\r\n               |          |          |          |          |          \r\n               |          |          |          |          |--64.84%-- rocksdb::AppendInternalKey\r\n               |          |          |          |          |          rocksdb::DBImpl::GetApproximateSizes\r\n               |          |          |          |          |          ha_rocksdb::records_in_range\r\n               |          |          |          |          |          handler::multi_range_read_info_const\r\n               |          |          |          |          |          check_quick_select\r\n               |          |          |          |          |          SQL_SELECT::test_quick_select\r\n               |          |          |          |          |          make_join_statistics\r\n               |          |          |          |          |          JOIN::optimize\r\n               |          |          |          |          |          \r\n               |          |          |          |           --35.16%-- rocksdb::EncodeKey\r\n               |          |          |          |                     rocksdb::(anonymous namespace)::SkipListRep::Iterator::Seek\r\n               |          |          |          |                     rocksdb::MemTableIterator::Seek\r\n               |          |          |          |                     rocksdb::MergingIterator::Seek\r\n               |          |          |          |                     rocksdb::DBIter::Seek\r\n               |          |          |          |                     rocksdb::BaseDeltaIterator::Seek\r\n               |          |          |          |                     ha_rocksdb::setup_index_scan\r\n               |          |          |          |                     ha_rocksdb::index_read_map_impl\r\n               |          |          |          |                     ha_rocksdb::read_range_first\r\n               |          |          |          |                     handler::multi_range_read_next\r\n               |          |          |          |                     QUICK_RANGE_SELECT::get_next\r\n               |          |          |          |                     rr_quick\r\n               |          |          |          |          \r\n               |          |          |           --33.11%-- rocksdb::WriteBatch::WriteBatch\r\n               |          |          |                     rocksdb::WriteBatchWithIndex::WriteBatchWithIndex\r\n               |          |          |                     rocksdb::TransactionBaseImpl::TransactionBaseImpl\r\n               |          |          |                     rocksdb::TransactionImpl::TransactionImpl\r\n               |          |          |                     rocksdb::TransactionDBImpl::BeginTransaction\r\n               |          |          |                     Rdb_transaction::start_trx\r\n               |          |          |                     get_or_create_trx\r\n               |          |          |                     ha_rocksdb::external_lock\r\n               |          |          |                     handler::ha_external_lock\r\n               |          |          |                     |          \r\n               |          |          |                     |--64.40%-- mysql_lock_tables\r\n               |          |          |                     |          lock_tables\r\n               |          |          |                     |          mysql_select\r\n               |          |          |                     |          handle_select\r\n               |          |          |                      --35.60%-- unlock_external\r\n               |          |          |                                mysql_unlock_tables\r\n               |          |          |                                close_thread_tables\r\n               |          |          |                                mysql_execute_command\r\n               |          |          |                                mysql_parse\r\n               |          |          |          \r\n               |          |           --31.32%-- std::string::_M_mutate\r\n               |          |                     std::string::_M_replace_safe\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::InitDataBlock\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::Seek\r\n               |          |                     |          \r\n               |          |                     |--54.27%-- rocksdb::MergingIterator::Seek\r\n               |          |                     |          rocksdb::DBIter::Seek\r\n               |          |                     |          rocksdb::BaseDeltaIterator::Seek\r\n               |          |                     |          ha_rocksdb::setup_index_scan\r\n               |          |                     |          ha_rocksdb::index_read_map_impl\r\n               |          |                     |          ha_rocksdb::read_range_first\r\n               |          |                     |          handler::multi_range_read_next\r\n               |          |                     |          QUICK_RANGE_SELECT::get_next\r\n               |          |                     |          rr_quick\r\n               |          |                     |          \r\n               |          |                      --45.73%-- rocksdb::(anonymous namespace)::TwoLevelIterator::Seek\r\n               |          |                                rocksdb::MergingIterator::Seek\r\n               |          |                                rocksdb::DBIter::Seek\r\n               |          |                                rocksdb::BaseDeltaIterator::Seek\r\n               |          |                                ha_rocksdb::setup_index_scan\r\n               |          |                                ha_rocksdb::index_read_map_impl\r\n               |          |                                ha_rocksdb::read_range_first\r\n               |          |                                handler::multi_range_read_next\r\n               |          |                                QUICK_RANGE_SELECT::get_next\r\n               |          |                                rr_quick\r\n               |          |          \r\n               |          |--11.77%-- rocksdb::WriteBatchWithIndex::WriteBatchWithIndex\r\n               |          |          rocksdb::TransactionBaseImpl::TransactionBaseImpl\r\n               |          |          rocksdb::TransactionImpl::TransactionImpl\r\n               |          |          rocksdb::TransactionDBImpl::BeginTransaction\r\n               |          |          Rdb_transaction::start_trx\r\n               |          |          get_or_create_trx\r\n               |          |          ha_rocksdb::external_lock\r\n               |          |          handler::ha_external_lock\r\n               |          |          |          \r\n               |          |          |--76.28%-- mysql_lock_tables\r\n               |          |          |          lock_tables\r\n               |          |          |          mysql_select\r\n               |          |          |          handle_select\r\n               |          |          |          execute_sqlcom_select\r\n               |          |          |          mysql_execute_command\r\n               |          |          |          mysql_parse\r\n               |          |          |          \r\n               |          |           --23.72%-- unlock_external\r\n               |          |                     mysql_unlock_tables\r\n               |          |                     close_thread_tables\r\n               |          |                     mysql_execute_command\r\n               |          |                     mysql_parse\r\n               |          |          \r\n               |          |--9.37%-- rocksdb::Block::NewIterator\r\n               |          |          |          \r\n               |          |          |--75.82%-- rocksdb::BlockBasedTable::NewIndexIterator\r\n               |          |          |          |          \r\n               |          |          |          |--76.49%-- rocksdb::BlockBasedTable::NewIterator\r\n               |          |          |          |          rocksdb::TableCache::NewIterator\r\n               |          |          |          |          |          \r\n               |          |          |          |          |--74.63%-- rocksdb::VersionSet::ApproximateSize\r\n               |          |          |          |          |          rocksdb::VersionSet::ApproximateSize\r\n               |          |          |          |          |          rocksdb::DBImpl::GetApproximateSizes\r\n               |          |          |          |          |          ha_rocksdb::records_in_range\r\n               |          |          |          |          |          handler::multi_range_read_info_const\r\n               |          |          |          |          |          check_quick_select\r\n               |          |          |          |          |          SQL_SELECT::test_quick_select\r\n               |          |          |          |          |          make_join_statistics\r\n               |          |          |          |          |          JOIN::optimize\r\n               |          |          |          |          |          \r\n               |          |          |          |           --25.37%-- rocksdb::(anonymous namespace)::LevelFileIteratorState::NewSecondaryIterator\r\n               |          |          |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::InitDataBlock\r\n               |          |          |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::Seek\r\n               |          |          |          |                     rocksdb::MergingIterator::Seek\r\n               |          |          |          |                     rocksdb::DBIter::Seek\r\n               |          |          |          |                     rocksdb::BaseDeltaIterator::Seek\r\n               |          |          |          |                     ha_rocksdb::setup_index_scan\r\n               |          |          |          |                     ha_rocksdb::index_read_map_impl\r\n               |          |          |          |                     ha_rocksdb::read_range_first\r\n               |          |          |          |                     handler::multi_range_read_next\r\n               |          |          |          |                     QUICK_RANGE_SELECT::get_next\r\n               |          |          |          |                     rr_quick\r\n               |          |          |          |          \r\n               |          |          |           --23.51%-- rocksdb::BlockBasedTable::ApproximateOffsetOf\r\n               |          |          |                     rocksdb::VersionSet::ApproximateSize\r\n               |          |          |                     rocksdb::VersionSet::ApproximateSize\r\n               |          |          |                     rocksdb::DBImpl::GetApproximateSizes\r\n               |          |          |                     ha_rocksdb::records_in_range\r\n               |          |          |                     handler::multi_range_read_info_const\r\n               |          |          |                     check_quick_select\r\n               |          |          |                     SQL_SELECT::test_quick_select\r\n               |          |          |                     make_join_statistics\r\n               |          |          |                     JOIN::optimize\r\n               |          |          |          \r\n               |          |           --24.18%-- rocksdb::BlockBasedTable::NewDataBlockIterator\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::InitDataBlock\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::Seek\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::Seek\r\n               |          |                     rocksdb::MergingIterator::Seek\r\n               |          |                     rocksdb::DBIter::Seek\r\n               |          |                     rocksdb::BaseDeltaIterator::Seek\r\n               |          |                     ha_rocksdb::setup_index_scan\r\n               |          |                     ha_rocksdb::index_read_map_impl\r\n               |          |                     ha_rocksdb::read_range_first\r\n               |          |                     handler::multi_range_read_next\r\n               |          |                     QUICK_RANGE_SELECT::get_next\r\n               |          |                     rr_quick\r\n               |          |          |          |          \r\n               |          |          |           --23.51%-- rocksdb::BlockBasedTable::ApproximateOffsetOf\r\n               |          |          |                     rocksdb::VersionSet::ApproximateSize\r\n               |          |          |                     rocksdb::VersionSet::ApproximateSize\r\n               |          |          |                     rocksdb::DBImpl::GetApproximateSizes\r\n               |          |          |                     ha_rocksdb::records_in_range\r\n               |          |          |                     handler::multi_range_read_info_const\r\n               |          |          |                     check_quick_select\r\n               |          |          |                     SQL_SELECT::test_quick_select\r\n               |          |          |                     make_join_statistics\r\n               |          |          |                     JOIN::optimize\r\n               |          |          |          \r\n               |          |           --24.18%-- rocksdb::BlockBasedTable::NewDataBlockIterator\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::InitDataBlock\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::Seek\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::Seek\r\n               |          |                     rocksdb::MergingIterator::Seek\r\n               |          |                     rocksdb::DBIter::Seek\r\n               |          |                     rocksdb::BaseDeltaIterator::Seek\r\n               |          |                     ha_rocksdb::setup_index_scan\r\n               |          |                     ha_rocksdb::index_read_map_impl\r\n               |          |                     ha_rocksdb::read_range_first\r\n               |          |                     handler::multi_range_read_next\r\n               |          |                     QUICK_RANGE_SELECT::get_next\r\n               |          |                     rr_quick\r\n               |          |          \r\n               |          |--6.69%-- rocksdb::BlockBasedTable::NewIterator\r\n               |          |          rocksdb::TableCache::NewIterator\r\n               |          |          |          \r\n               |          |          |--55.20%-- rocksdb::VersionSet::ApproximateSize\r\n               |          |          |          rocksdb::VersionSet::ApproximateSize\r\n               |          |          |          rocksdb::DBImpl::GetApproximateSizes\r\n               |          |          |          ha_rocksdb::records_in_range\r\n               |          |          |          handler::multi_range_read_info_const\r\n               |          |          |          check_quick_select\r\n               |          |          |          SQL_SELECT::test_quick_select\r\n               |          |          |          make_join_statistics\r\n               |          |          |          JOIN::optimize\r\n               |          |          |          \r\n               |          |           --44.80%-- rocksdb::(anonymous namespace)::LevelFileIteratorState::NewSecondaryIterator\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::InitDataBlock\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::Seek\r\n               |          |                     rocksdb::MergingIterator::Seek\r\n               |          |                     rocksdb::DBIter::Seek\r\n               |          |                     rocksdb::BaseDeltaIterator::Seek\r\n               |          |                     ha_rocksdb::setup_index_scan\r\n               |          |                     ha_rocksdb::index_read_map_impl\r\n               |          |                     ha_rocksdb::read_range_first\r\n               |          |                     handler::multi_range_read_next\r\n               |          |                     QUICK_RANGE_SELECT::get_next\r\n               |          |                     rr_quick\r\n               |          |          \r\n               |          |--6.40%-- rocksdb::TransactionDBImpl::BeginTransaction\r\n               |          |          Rdb_transaction::start_trx\r\n               |          |          get_or_create_trx\r\n               |          |          ha_rocksdb::external_lock\r\n               |          |          handler::ha_external_lock\r\n               |          |          |          \r\n               |          |          |--69.76%-- mysql_lock_tables\r\n               |          |          |          lock_tables\r\n               |          |          |          mysql_select\r\n               |          |          |          handle_select\r\n               |          |          |          execute_sqlcom_select\r\n               |          |          |          mysql_execute_command\r\n               |          |          |          mysql_parse\r\n               |          |          |          \r\n               |          |           --30.24%-- unlock_external\r\n               |          |                     mysql_unlock_tables\r\n               |          |                     close_thread_tables\r\n               |          |                     mysql_execute_command\r\n               |          |                     mysql_parse\r\n               |          |          \r\n               |          |--6.32%-- rocksdb::NewTwoLevelIterator\r\n               |          |          rocksdb::TableCache::NewIterator\r\n               |          |          |          \r\n               |          |          |--73.55%-- rocksdb::VersionSet::ApproximateSize\r\n               |          |          |          rocksdb::VersionSet::ApproximateSize\r\n               |          |          |          rocksdb::DBImpl::GetApproximateSizes\r\n               |          |          |          ha_rocksdb::records_in_range\r\n               |          |          |          handler::multi_range_read_info_const\r\n               |          |          |          check_quick_select\r\n               |          |          |          SQL_SELECT::test_quick_select\r\n               |          |          |          make_join_statistics\r\n               |          |          |          JOIN::optimize\r\n               |          |          |          \r\n               |          |           --26.45%-- rocksdb::(anonymous namespace)::LevelFileIteratorState::NewSecondaryIterator\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::InitDataBlock\r\n               |          |                     rocksdb::(anonymous namespace)::TwoLevelIterator::Seek\r\n               |          |                     rocksdb::MergingIterator::Seek\r\n               |          |                     rocksdb::DBIter::Seek\r\n               |          |                     rocksdb::BaseDeltaIterator::Seek\r\n               |          |                     ha_rocksdb::setup_index_scan\r\n               |          |                     ha_rocksdb::index_read_map_impl\r\n               |          |                     ha_rocksdb::read_range_first\r\n               |          |                     handler::multi_range_read_next\r\n               |          |                     QUICK_RANGE_SELECT::get_next\r\n               |          |                     rr_quick\r\n               |          |          \r\n               |          |--5.83%-- rocksdb::NewArenaWrappedDbIterator\r\n               |          |          rocksdb::DBImpl::NewIterator\r\n               |          |          rocksdb::TransactionBaseImpl::GetIterator\r\n               |          |          ha_rocksdb::setup_index_scan\r\n               |          |          ha_rocksdb::index_read_map_impl\r\n               |          |          ha_rocksdb::read_range_first\r\n               |          |          handler::multi_range_read_next\r\n               |          |          QUICK_RANGE_SELECT::get_next\r\n               |          |          rr_quick\r\n               |          |          \r\n               |          |--5.58%-- get_quick_select\r\n               |          |          TRP_RANGE::make_quick\r\n               |          |          SQL_SELECT::test_quick_select\r\n               |          |          make_join_statistics\r\n               |          |          JOIN::optimize\r\n               |          |          mysql_select\r\n               |          |          \r\n               |          |--5.33%-- rocksdb::DBImpl::GetSnapshotImpl\r\n               |          |          rocksdb::TransactionBaseImpl::SetSnapshot\r\n               |          |          ha_rocksdb::index_init\r\n               |          |          handler::ha_index_init\r\n               |          |          QUICK_RANGE_SELECT::reset\r\n               |          |          join_init_read_record\r\n               |          |          sub_select\r\n               |          |          JOIN::exec\r\n               |          |          mysql_select\r\n               |          |          \r\n               |          |--5.33%-- rocksdb::TransactionBaseImpl::SetSnapshot\r\n               |          |          ha_rocksdb::index_init\r\n               |          |          handler::ha_index_init\r\n               |          |          QUICK_RANGE_SELECT::reset\r\n               |          |          join_init_read_record\r\n               |          |          sub_select\r\n               |          |          JOIN::exec\r\n               |          |          mysql_select\r\n               |          |          \r\n               |          |--3.10%-- rocksdb::ColumnFamilyOptions::ColumnFamilyOptions\r\n               |          |          can_use_bloom_filter\r\n               |          |          ha_rocksdb::setup_index_scan\r\n               |          |          ha_rocksdb::index_read_map_impl\r\n               |          |          ha_rocksdb::read_range_first\r\n               |          |          handler::multi_range_read_next\r\n               |          |          QUICK_RANGE_SELECT::get_next\r\n               |          |          rr_quick\r\n               |          |          \r\n               |          |--3.00%-- rocksdb::WriteBatchWithIndex::NewIterator\r\n               |          |          rocksdb::WriteBatchWithIndex::NewIteratorWithBase\r\n               |          |          ha_rocksdb::setup_index_scan\r\n               |          |          ha_rocksdb::index_read_map_impl\r\n               |          |          ha_rocksdb::read_range_first\r\n               |          |          handler::multi_range_read_next\r\n               |          |          QUICK_RANGE_SELECT::get_next\r\n               |          |          rr_quick\r\n               |          |          sub_select\r\n               |          |          JOIN::exec\r\n               |          |          mysql_select\r\n\r\n               |          |--2.82%-- rocksdb::DBOptions::DBOptions\r\n               |          |          can_use_bloom_filter\r\n               |          |          ha_rocksdb::setup_index_scan\r\n               |          |          ha_rocksdb::index_read_map_impl\r\n               |          |          ha_rocksdb::read_range_first\r\n               |          |          handler::multi_range_read_next\r\n               |          |          QUICK_RANGE_SELECT::get_next\r\n               |          |          rr_quick\r\n               |          |          \r\n               |          |--2.25%-- rocksdb::WriteBatchWithIndex::NewIteratorWithBase\r\n               |          |          ha_rocksdb::setup_index_scan\r\n               |          |          ha_rocksdb::index_read_map_impl\r\n               |          |          ha_rocksdb::read_range_first\r\n               |          |          handler::multi_range_read_next\r\n               |          |          QUICK_RANGE_SELECT::get_next\r\n               |          |          rr_quick\r\n               |          |          sub_select\r\n               |          |          JOIN::exec\r\n               |          |          mysql_select\r\n               |          |          \r\n               |          |--1.44%-- std::_Rb_tree<rocksdb::Snapshot const*, std::pair<rocksdb::Snapshot const* const, std::shared_ptr<MyRocksSnapshot> >, std::_Select1st<std::pair<rocksdb::Snapshot const* const, std::shared_ptr<MyRocksSnapshot> > >, std::less<rocksdb::Snapshot const*>, std::allocator<std::pair<rocksdb::Snapshot const* const, std::shared_ptr<MyRocksSnapshot> > > >::_M_emplace_unique<rocksdb::Snapshot const*&, std::shared_ptr<MyRocksSnapshot> >\r\n               |          |          register_snapshot\r\n               |          |          ha_rocksdb::index_init\r\n               |          |          handler::ha_index_init\r\n               |          |          QUICK_RANGE_SELECT::reset\r\n               |          |          join_init_read_record\r\n               |          |          sub_select\r\n               |          |          JOIN::exec\r\n               |          |          mysql_select\r\n\r\n               |          |--1.43%-- rocksdb::DBImpl::NewInternalIterator\r\n               |          |          rocksdb::DBImpl::NewIterator\r\n               |          |          rocksdb::TransactionBaseImpl::GetIterator\r\n               |          |          ha_rocksdb::setup_index_scan\r\n               |          |          ha_rocksdb::index_read_map_impl\r\n               |          |          ha_rocksdb::read_range_first\r\n               |          |          handler::multi_range_read_next\r\n               |          |          QUICK_RANGE_SELECT::get_next\r\n               |          |          rr_quick\r\n               |          |          sub_select\r\n               |          |          JOIN::exec\r\n               |          |          mysql_select\r\n               |          |          \r\n               |           --1.42%-- register_snapshot\r\n               |                     ha_rocksdb::index_init\r\n               |                     handler::ha_index_init\r\n               |                     QUICK_RANGE_SELECT::reset\r\n               |                     join_init_read_record\r\n               |                     sub_select\r\n               |                     JOIN::exec\r\n               |                     mysql_select\r\n\r\n               |--18.84%-- my_malloc\r\n               |          |          \r\n               |          |--62.68%-- alloc_root\r\n               |          |--17.84%-- mysql_lock_tables\r\n               |          |--14.12%-- init_dynamic_array2\r\n               |           --5.37%-- QUICK_RANGE_SELECT::QUICK_RANGE_SELECT\r\n\r\n               |--5.96%-- operator new\r\n               |          MDL_ticket::create\r\n\r\n               |--3.49%-- MDL_ticket::create\r\n               |          MDL_context::try_acquire_lock_impl\r\n\r\n               |--2.33%-- rocksdb::DBImpl::GetSnapshotImpl\r\n               |          rocksdb::TransactionBaseImpl::SetSnapshot\r\n\r\n               |--2.31%-- std::string::_Rep::_S_create\r\n      \r\n               |--1.14%-- rocksdb::TransactionDBImpl::BeginTransaction\r\n               |          Rdb_transaction::start_trx\r\n\r\n               |--0.82%-- rocksdb::ColumnFamilyOptions::ColumnFamilyOptions\r\n               |          can_use_bloom_filter\r\n\r\n               |--0.69%-- std::_Rb_tree<rocksdb::Snapshot const*, std::pair<rocksdb::Snapshot const* const, std::shared_ptr<MyRocksSnapshot> >, std::_Select1st<std::pair<rocksdb::Snapshot const* const, std::shared_ptr<MyRocksSnapshot> > >, std::less<rocksdb::Snapshot const*>, std::allocator<std::pair<rocksdb::Snapshot const* const, std::shared_ptr<MyRocksSnapshot> > > >::_M_emplace_unique<rocksdb::Snapshot const*&, std::shared_ptr<MyRocksSnapshot> >\r\n               |          register_snapshot\r\n\r\n````"}}