MySQL 5.6.23 InnoDB相关Bugfix(2)

  src/backend/storage/smgr/README  
   
  Storage Managers  
  ================  
   
  In the original Berkeley Postgres system, there were several storage managers,  
  of which only the "magnetic disk" manager remains. (At Berkeley there were  
  also managers for the Sony WORM optical disk jukebox and persistent main  
  memory, but these were never supported in any externally released Postgres,  
  nor in any version of PostgreSQL.) The "magnetic disk" manager is itself  
  seriously misnamed, because actually it supports any kind of device for  
  which the operating system provides standard filesystem operations; which  
  these days is pretty much everything of interest. However, we retain the  
  notion of a storage manager switch in case anyone ever wants to reintroduce  
  other kinds of storage managers. Removing the switch layer would save  
  nothing noticeable anyway, since storage-access operations are surely far  
  more expensive than one extra layer of C function calls.  
   
  In Berkeley Postgres each relation was tagged with the ID of the storage  
  manager to use for it. This is gone. It would be probably more reasonable  
  to associate storage managers with tablespaces, should we ever re-introduce  
  multiple storage managers into the system catalogs.  
   
  The files in this directory, and their contents, are  
   
  smgr.c The storage manager switch dispatch code. The routines in  
  this file call the appropriate storage manager to do storage  
  accesses requested by higher-level code. smgr.c also manages  
  the file handle cache (SMgrRelation table).  
   
  md.c The "magnetic disk" storage manager, which is really just  
  an interface to the kernel's filesystem operations.  
   
  smgrtype.c Storage manager type -- maps string names to storage manager  
  IDs and provides simple comparison operators. This is the  
  regproc support for type "smgr" in the system catalogs.  
  (This is vestigial since no columns of type smgr exist  
  in the catalogs anymore.)  
   
  Note that md.c in turn relies on src/backend/storage/file/fd.c.  
   
   
  Relation Forks  
  ==============  
   
  Since 8.4, a single smgr relation can be comprised of multiple physical  
  files, called relation forks. This allows storing additional metadata like  
  Free Space information in additional forks, which can be grown and truncated  
  independently of the main data file, while still treating it all as a single  
  physical relation in system catalogs.  
   
  It is assumed that the main fork, fork number 0 or MAIN_FORKNUM, always  
  exists. Fork numbers are assigned in src/include/common/relpath.h.  
  Functions in smgr.c and md.c take an extra fork number argument, in addition  
  to relfilenode and block number, to identify which relation fork you want to  
  access. Since most code wants to access the main fork, a shortcut version of  
  ReadBuffer that accesses MAIN_FORKNUM is provided in the buffer manager for  
  convenience.  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c9d1408bed237e3dd316d197b1df91d8.html