• unknown's avatar
    InnoDB: Performance optimizations based on OProfile analysis · 4a3a46af
    unknown authored
    
    innobase/btr/btr0btr.c:
      Eliminate some buf_frame_align() calls.
      Make use of the page_rec_is_infimum(), page_rec_is_supremum()
      and page_rec_is_user_rec() functions.
      Replace some index->table->comp with page_is_comp().
      Eliminate some variables to reduce register spilling on x86.
      Note that page_is_comp() may return nonzero instead of TRUE.
      Note that rec_offs_comp() may return nonzero instead of TRUE.
    innobase/btr/btr0cur.c:
      Eliminate some buf_frame_align() calls.
      Replace some index->table->comp with
      page_is_comp() or rec_offs_comp().
      Eliminate some variables to reduce register spilling on x86.
      Note that page_is_comp() may return nonzero instead of TRUE.
      Note that rec_offs_comp() may return nonzero instead of TRUE.
      Remove an extra mem_heap_create() call from btr_cur_update_in_place().
      Add "page" parameter to lock_rec_store_on_page_infimum().
      Add some UNIV_LIKELY() and UNIV_UNLIKELY() hints.
      
      btr_estimate_number_of_different_key_vals(): Rename the
      offsets_* variables to be more descriptive and eliminate one
      rec_get_offsets() and one page_rec_get_next() call in the loop.
    innobase/btr/btr0pcur.c:
      Eliminate some buf_frame_align() calls.
      Make use of the page_rec_is_infimum(), page_rec_is_supremum()
      and page_rec_is_user_rec() functions.
      Replace some index->table->comp with page_is_comp().
      Eliminate some variables to reduce register spilling on x86.
      Note that page_is_comp() may return nonzero instead of TRUE.
      Make some ut_a() assertions ut_ad() ones to improve performance.
      Add some UNIV_LIKELY() and UNIV_UNLIKELY() hints.
    innobase/btr/btr0sea.c:
      Make use of page_rec_is_infimum() and page_rec_is_supremum().
      Eliminate some buf_frame_align() calls.
      Add some UNIV_UNLIKELY and UNIV_LIKELY hints.
      Turn some assertions into debug assertions.
    innobase/dict/dict0crea.c:
      Replace FALSE/TRUE ibool comp with zero/nonzero ulint comp
    innobase/ibuf/ibuf0ibuf.c:
      Make use of page_rec_is_infimum() and page_rec_is_supremum().
      Add some UNIV_UNLIKELY and UNIV_LIKELY hints.
      ibuf_get_merge_page_nos(): Rename parameter "first_rec" to "rec"
      and eliminate local variable "rec".
    innobase/include/btr0btr.h:
      Replace FALSE/TRUE ibool comp with zero/nonzero ulint comp
    innobase/include/buf0buf.h:
      Rename buf_frame_get_modify_clock()
      to buf_block_get_modify_clock().
    innobase/include/buf0buf.ic:
      Rename buf_frame_get_modify_clock()
      to buf_block_get_modify_clock() and
      remove the buf_block_align() call.
    innobase/include/lock0lock.h:
      lock_rec_store_on_page_infimum(): Add parameter "page"
    innobase/include/mach0data.h:
      Add mach_encode_2() and mach_decode_2().
    innobase/include/mach0data.ic:
      Add mach_encode_2() and mach_decode_2().
    innobase/include/page0cur.h:
      Add const qualifier to page_cur_is_before_first()
      and page_cur_is_after_last().
    innobase/include/page0cur.ic:
      Make use of page_rec_is_infimum() and page_rec_is_supremum().
    innobase/include/page0page.h:
      Remove page_rec_is_first_user_rec() and page_rec_is_last_user_rec().
      Add page_rec_is_infimum() and page_rec_is_supremum().
      Replace FALSE/TRUE ibool comp with zero/nonzero ulint comp.
    innobase/include/page0page.ic:
      Remove page_rec_is_first_user_rec() and page_rec_is_last_user_rec().
      Add page_rec_is_infimum() and page_rec_is_supremum().
      Replace FALSE/TRUE ibool comp with zero/nonzero ulint comp.
      Add UNIV_UNLIKELY, UNIV_LIKELY and UNIV_EXPECT hints.
      Reduce the number of buf_frame_align() calls.
    innobase/include/rem0rec.ic:
      rec_offs_comp(): Return zero or nonzero instead of FALSE or TRUE.
    innobase/include/row0mysql.h:
      Replace FALSE/TRUE ibool comp with zero/nonzero ulint comp.
    innobase/lock/lock0lock.c:
      Replace FALSE/TRUE ibool comp with zero/nonzero ulint comp.
      Remove parameter "comp" from lock_rec_get_next(),
      lock_rec_has_expl() and lock_rec_other_has_expl_req().
      Add parameter "page" to lock_rec_store_on_page_infimum().
      Add UNIV_UNLIKELY hints.
      Reduce the number of buf_frame_align() calls.
      Make use of page_rec_is_infimum(), page_rec_is_supremum() and
      page_rec_is_user_rec().
      Move the "comp" flag outside some loops.
    innobase/mtr/mtr0log.c:
      Replace index->table->comp with page_rec_is_comp().
    innobase/page/page0cur.c:
      Replace index->table->comp with page_is_comp() or page_rec_is_comp().
      Eliminate some buf_frame_align() calls.
      Add some debug assertions.
    innobase/page/page0page.c:
      Optimize page_dir_find_owner_slot(). Compare the record offset
      16 bits at a time, because that seems to be the only way to avoid
      register spilling on x86.
      Replace FALSE/TRUE ibool comp with zero/nonzero ulint comp.
      Remove parameter "page" of page_delete_rec_list_write_log().
      Make use of page_rec_is_infimum().
    innobase/rem/rem0cmp.c:
      Replace FALSE/TRUE ibool comp with zero/nonzero ulint comp.
    innobase/row/row0ins.c:
      Make use of page_rec_is_infimum() and page_rec_is_supremum().
      Reduce the amount of buf_frame_align() calls.
      row_ins_index_entry_low(): Disable assertion about column count
      unless #ifdef UNIV_DEBUG.
    innobase/row/row0mysql.c:
      Replace FALSE/TRUE ibool comp with zero/nonzero ulint comp.
    innobase/row/row0row.c:
      Eliminate some buf_frame_align() calls.
      Make use of page_rec_is_infimum().
    innobase/row/row0sel.c:
      Make use of page_rec_is_supremum() and page_rec_is_infimum().
      Turn some assertions into debug assertions.
      Add UNIV_LIKELY and UNIV_UNLIKELY hints.
      
      row_search_for_mysql(): Eliminate local variables "moved",
      "cons_read_requires_clust_rec", "was_lock_wait", "shortcut",
      "success" and "comp". Replace some of them with goto's.
      Disable variable "cnt" unless #ifdef UNIV_SEARCH_DEBUG.
    innobase/row/row0vers.c:
      Replace FALSE/TRUE ibool comp with zero/nonzero ulint comp.
      Replace index->table->comp with page_rec_is_comp().
      Eliminate some buf_frame_align() calls.
    4a3a46af
row0row.c 17.9 KB