• Dmitry Lenev's avatar
    Fix for bug #13116518 - "OPEN_TABLES() SHOULD NOT ALLOCATE AND FREE · 883daae4
    Dmitry Lenev authored
    NEW_FRM_MEM WITHOUT NEEDING TO".
    
    During the process of opening tables for a statement, we allocated
    memory which was used only during view loading even in cases when the
    statement didn't use any views. Such an unnecessary allocation (and
    corresponding freeing) might have caused significant performance
    overhead in some workloads. For example, it caused up to 15% slowdown
    in a simple stored routine calculating Fibonacci's numbers.
    
    This memory was pre-allocated as part of "new_frm_mem" MEM_ROOT
    initialization at the beginning of open_tables(). 
    
    This patch addresses this issue by turning off memory pre-allocation
    during initialization for this MEM_ROOT. Now, memory on this root
    will be allocated only at the point when the first .FRM for a view is 
    opened.
    
    The patch doesn't contain a test case since it is hard to test the
    performance improvements or the absence of memory allocation in our
    test framework.
    883daae4
sql_base.cc 300 KB