• unknown's avatar
    Applied innodb-5.1-ss1004 · 4ed7082e
    unknown authored
    Fixes:
    - Bug #15815: Very poor performance with multiple queries running concurrently
    - Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
    - Bug #24089: Race condition in fil_flush_file_spaces()
    
    
    storage/innobase/btr/btr0btr.c:
      Applied innodb-5.1-ss1004
      
      Revision r934:
      btr_lift_page_up(): Set new page levels in all ancestor pages, not just
      in the father page.
      
      btr0btr.h: Add a BTR_MAX_LEVELS define.
    storage/innobase/buf/buf0buf.c:
      Applied innodb-5.1-ss1004
      
      Revision r999:
      Reduce buffer pool mutex contention under >= 4 big concurrent
      CPU-bound SELECT queries.  (Bug #22868)
      
      Fix: replace the mutex by one mutex protecting the 'flush list'
      (and the free list) and several mutexes protecting portions of the
      buffer pool, where we keep several indivudual LRU lists of pages.
      
      This patch is from Sunny Bains and Heikki Tuuri.
    storage/innobase/buf/buf0flu.c:
      Applied innodb-5.1-ss1004
      
      Revision r999:
      Reduce buffer pool mutex contention under >= 4 big concurrent
      CPU-bound SELECT queries.  (Bug #22868)
      
      Fix: replace the mutex by one mutex protecting the 'flush list'
      (and the free list) and several mutexes protecting portions of the
      buffer pool, where we keep several indivudual LRU lists of pages.
      
      This patch is from Sunny Bains and Heikki Tuuri.
    storage/innobase/buf/buf0lru.c:
      Applied innodb-5.1-ss1004
      
      Revision r999:
      Reduce buffer pool mutex contention under >= 4 big concurrent
      CPU-bound SELECT queries.  (Bug #22868)
      
      Fix: replace the mutex by one mutex protecting the 'flush list'
      (and the free list) and several mutexes protecting portions of the
      buffer pool, where we keep several indivudual LRU lists of pages.
      
      This patch is from Sunny Bains and Heikki Tuuri.
      
      
      Revision r1004:
      UT_LIST_REMOVE(): Invalidate the node pointers #ifdef UNIV_DEBUG.
      
      buf_LRU_invalidate_tablespace(): Invoke UT_LIST_GET_PREV(LRU, block)
      before UT_LIST_REMOVE(LRU, buf_pool->LRU, block).
    storage/innobase/dict/dict0crea.c:
      Applied innodb-5.1-ss1004
      
      Revision r973:
      Do not break the latching order in TRUNCATE TABLE.
      
      dict_truncate_index_tree(): Replace parameter rec_t* rec with
      btr_pcur_t* pcur.  Reposition pcur before calling btr_create().
      
      sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
    storage/innobase/fil/fil0fil.c:
      Applied innodb-5.1-ss1004
      
      Revision r1002:
      fil_flush_file_spaces(): Copy the system->unflushed_spaces list to an
      array while holding the mutex.  This removes the crash-triggering
      race condition that was introduced when fixing Bug 15653.  (Bug #24089)
    storage/innobase/include/btr0btr.h:
      Applied innodb-5.1-ss1004
      
      Revision r934:
      btr_lift_page_up(): Set new page levels in all ancestor pages, not just
      in the father page.
      
      btr0btr.h: Add a BTR_MAX_LEVELS define.
    storage/innobase/include/buf0buf.h:
      Applied innodb-5.1-ss1004
      
      Revision r999:
      Reduce buffer pool mutex contention under >= 4 big concurrent
      CPU-bound SELECT queries.  (Bug #22868)
      
      Fix: replace the mutex by one mutex protecting the 'flush list'
      (and the free list) and several mutexes protecting portions of the
      buffer pool, where we keep several indivudual LRU lists of pages.
      
      This patch is from Sunny Bains and Heikki Tuuri.
    storage/innobase/include/buf0buf.ic:
      Applied innodb-5.1-ss1004
      
      Revision r999:
      Reduce buffer pool mutex contention under >= 4 big concurrent
      CPU-bound SELECT queries.  (Bug #22868)
      
      Fix: replace the mutex by one mutex protecting the 'flush list'
      (and the free list) and several mutexes protecting portions of the
      buffer pool, where we keep several indivudual LRU lists of pages.
      
      This patch is from Sunny Bains and Heikki Tuuri.
    storage/innobase/include/dict0crea.h:
      Applied innodb-5.1-ss1004
      
      Revision r973:
      Do not break the latching order in TRUNCATE TABLE.
      
      dict_truncate_index_tree(): Replace parameter rec_t* rec with
      btr_pcur_t* pcur.  Reposition pcur before calling btr_create().
      
      sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
    storage/innobase/include/ut0lst.h:
      Applied innodb-5.1-ss1004
      
      Revision r1004:
      UT_LIST_REMOVE(): Invalidate the node pointers #ifdef UNIV_DEBUG.
      
      buf_LRU_invalidate_tablespace(): Invoke UT_LIST_GET_PREV(LRU, block)
      before UT_LIST_REMOVE(LRU, buf_pool->LRU, block).
    storage/innobase/row/row0mysql.c:
      Applied innodb-5.1-ss1004
      
      Revision r973:
      Do not break the latching order in TRUNCATE TABLE.
      
      dict_truncate_index_tree(): Replace parameter rec_t* rec with
      btr_pcur_t* pcur.  Reposition pcur before calling btr_create().
      
      sync_thread_add_level(): Remove the relaxation of the assertion added in r968.
    4ed7082e
buf0lru.c 27.3 KB