• Satya B's avatar
    Applying InnoDB Plugin 1.0.5 snapshot, part 4 · abfdf76b
    Satya B authored
    From revision r5703 to r5716
    
    Detailed revision comments:
    
    r5703 | marko | 2009-08-27 02:25:00 -0500 (Thu, 27 Aug 2009) | 41 lines
    branches/zip: Replace the constant 3/8 ratio that controls the LRU_old
    size with the settable global variable innodb_old_blocks_pct. The
    minimum and maximum values are 5 and 95 per cent, respectively. The
    default is 100*3/8, in line with the old behavior.
    
    ut_time_ms(): New utility function, to return the current time in
    milliseconds. TODO: Is there a more efficient timestamp function, such
    as rdtsc divided by a power of two?
    
    buf_LRU_old_threshold_ms: New variable, corresponding to
    innodb_old_blocks_time. The value 0 is the default behaviour: no
    timeout before making blocks 'new'.
    
    bpage->accessed, bpage->LRU_position, buf_pool->ulint_clock: Remove.
    
    bpage->access_time: New field, replacing bpage->accessed. Protected by
    buf_pool_mutex instead of bpage->mutex. Updated when a page is created
    or accessed the first time in the buffer pool.
    
    buf_LRU_old_ratio, innobase_old_blocks_pct: New variables,
    corresponding to innodb_old_blocks_pct
    
    buf_LRU_old_ratio_update(), innobase_old_blocks_pct_update(): Update
    functions for buf_LRU_old_ratio, innobase_old_blocks_pct.
    
    buf_page_peek_if_too_old(): Compare ut_time_ms() to bpage->access_time
    if buf_LRU_old_threshold_ms && bpage->old.  Else observe
    buf_LRU_old_ratio and bpage->freed_page_clock.
    
    buf_pool_t: Add n_pages_made_young, n_pages_not_made_young,
    n_pages_made_young_old, n_pages_not_made_young, for statistics.
    
    buf_print(): Display buf_pool->n_pages_made_young,
    buf_pool->n_pages_not_made_young.  This function is only for crash
    diagnostics.
    
    buf_print_io(): Display buf_pool->LRU_old_len and quantities derived
    from buf_pool->n_pages_made_young, buf_pool->n_pages_not_made_young.
    This function is invoked by SHOW ENGINE INNODB STATUS.
    
    rb://129 approved by Heikki Tuuri.  This addresses Bug #45015.
    r5704 | marko | 2009-08-27 03:31:17 -0500 (Thu, 27 Aug 2009) | 32 lines
    branches/zip: Fix a critical bug in fast index creation that could
    corrupt the created indexes.
    
    row_merge(): Make "half" an in/out parameter. Determine the offset of
    half the output file. Copy the last blocks record-by-record instead of
    block-by-block, so that the records can be counted. Check that the
    input and output have matching n_rec.
    
    row_merge_sort(): Do not assume that two blocks of size N are merged
    into a block of size 2*N. The output block can be shorter than the
    input if the last page of each input block is almost empty. Use an
    accurate termination condition, based on the "half" computed by
    row_merge().
    
    row_merge_read(), row_merge_write(), row_merge_blocks(): Add debug output.
    
    merge_file_t, row_merge_file_create(): Add n_rec, the number of records
    in the merge file.
    
    row_merge_read_clustered_index(): Update n_rec.
    
    row_merge_blocks(): Update and check n_rec.
    
    row_merge_blocks_copy(): New function, for copying the last blocks in
    row_merge().  Update and check n_rec.
    
    This bug was discovered with a user-supplied test case that creates an
    index where the initial temporary file is 249 one-megabyte blocks and
    the merged files become smaller. In the test, possible merge record
    sizes are 10, 18, and 26 bytes.
    
    rb://150 approved by Sunny Bains.  This addresses Issue #320.
    r5705 | marko | 2009-08-27 06:56:24 -0500 (Thu, 27 Aug 2009) | 11 lines
    branches/zip: dict_index_find_cols(): On column name lookup failure,
    return DB_CORRUPTION (HA_ERR_CRASHED) instead of abnormally
    terminating the server.  Also, disable the previously added diagnostic
    output to the error log, because mysql-test-run does not like extra
    output in the error log.  (Bug #44571)
    
    dict_index_add_to_cache(): Handle errors from dict_index_find_cols().
    
    mysql-test/innodb_bug44571.test: A test case for triggering the bug.
    
    rb://135 approved by Sunny Bains.
    r5706 | inaam | 2009-08-27 11:00:27 -0500 (Thu, 27 Aug 2009) | 20 lines
    branches/zip rb://147
    
    Done away with following two status variables:
    
    innodb_buffer_pool_read_ahead_rnd
    innodb_buffer_pool_read_ahead_seq
    
    Introduced two new status variables:
    innodb_buffer_pool_read_ahead = number of pages read as part of
    readahead since server startup
    innodb_buffer_pool_read_ahead_evicted = number of pages that are read
    in as readahead but were evicted before ever being accessed since
    server startup i.e.: a measure of how badly our readahead is
    performing
    
    SHOW INNODB STATUS will show two extra numbers in buffer pool section:
    pages read ahead/sec and pages evicted without access/sec
    
    Approved by: Marko
    
    r5707 | inaam | 2009-08-27 11:20:35 -0500 (Thu, 27 Aug 2009) | 6 lines
    branches/zip
    
    Remove unused macros as we erased the random readahead code in r5703.
    Also fixed some comments.
    
    
    r5708 | inaam | 2009-08-27 17:43:32 -0500 (Thu, 27 Aug 2009) | 4 lines
    branches/zip
    
    Remove redundant TRUE : FALSE from the return statement
    
    r5709 | inaam | 2009-08-28 01:22:46 -0500 (Fri, 28 Aug 2009) | 5 lines
    branches/zip rb://152
    
    Disable display of deprecated parameter innodb_file_io_threads in
    'show variables'.
    
    r5714 | marko | 2009-08-31 01:10:10 -0500 (Mon, 31 Aug 2009) | 5 lines
    branches/zip: buf_chunk_not_freed(): Do not acquire block->mutex unless
    block->page.state == BUF_BLOCK_FILE_PAGE.  Check that block->page.state
    makes sense.
    
    Approved by Sunny Bains over the IM.
    r5716 | vasil | 2009-08-31 02:47:49 -0500 (Mon, 31 Aug 2009) | 9 lines
    branches/zip:
    
    Fix Bug#46718 InnoDB plugin incompatible with gcc 4.1 (at least: on PPC): "Undefined symbol"
    
    by implementing our own check in plug.in instead of using the result from
    the check from MySQL because it is insufficient.
    
    Approved by:	Marko (rb://154)
    
    abfdf76b
buf0lru.h 10.9 KB