• monty@mysql.com's avatar
    Table definition cache, part 2 · e42c9809
    monty@mysql.com authored
    The table opening process now works the following way:
    - Create common TABLE_SHARE object
    - Read the .frm file and unpack it into the TABLE_SHARE object
    - Create a TABLE object based on the information in the TABLE_SHARE
      object and open a handler to the table object
    
    Other noteworthy changes:
    - In TABLE_SHARE the most common strings are now LEX_STRING's
    - Better error message when table is not found
    - Variable table_cache is now renamed 'table_open_cache'
    - New variable 'table_definition_cache' that is the number of table defintions that will be cached
    - strxnmov() calls are now fixed to avoid overflows
    - strxnmov() will now always add one end \0 to result
    - engine objects are now created with a TABLE_SHARE object instead of a TABLE object.
    - After creating a field object one must call field->init(table) before using it
    
    - For a busy system this change will give you:
     - Less memory usage for table object
     - Faster opening of tables (if it's has been in use or is in table definition cache)
     - Allow you to cache many table definitions objects
     - Faster drop of table
    e42c9809
sql_class.cc 53.6 KB