<div id="docs-body">
 <div class="section">
  <div class="titlepage">
   <div>
    <div>
     <h3 class="title">
      <a name="pluggable-storage-common-layer">
      </a>
      18.11.2 The Common Database Server Layer
     </h3>
    </div>
   </div>
  </div>
  <p>
   A MySQL pluggable storage engine is the component in the MySQL
        database server that is responsible for performing the actual
        data I/O operations for a database as well as enabling and
        enforcing certain feature sets that target a specific
        application need. A major benefit of using specific storage
        engines is that you are only delivered the features needed for a
        particular application, and therefore you have less system
        overhead in the database, with the end result being more
        efficient and higher database performance. This is one of the
        reasons that MySQL has always been known to have such high
        performance, matching or beating proprietary monolithic
        databases in industry standard benchmarks.
  </p>
  <p>
   From a technical perspective, what are some of the unique
        supporting infrastructure components that are in a storage
        engine? Some of the key feature differentiations include:
  </p>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      <span class="emphasis">
       <em>
        Concurrency
       </em>
      </span>
      : Some applications have
            more granular lock requirements (such as row-level locks)
            than others. Choosing the right locking strategy can reduce
            overhead and therefore improve overall performance. This
            area also includes support for capabilities such as
            multi-version concurrency control or
      <span class="quote">
       “
       <span class="quote">
        snapshot
       </span>
       ”
      </span>
      read.
     </p>
    </li>
    <li class="listitem">
     <p>
      <span class="emphasis">
       <em>
        Transaction Support
       </em>
      </span>
      : Not every
            application needs transactions, but for those that do, there
            are very well defined requirements such as ACID compliance
            and more.
     </p>
    </li>
    <li class="listitem">
     <p>
      <span class="emphasis">
       <em>
        Referential Integrity
       </em>
      </span>
      : The need to have
            the server enforce relational database referential integrity
            through DDL defined foreign keys.
     </p>
    </li>
    <li class="listitem">
     <p>
      <span class="emphasis">
       <em>
        Physical Storage
       </em>
      </span>
      : This involves
            everything from the overall page size for tables and indexes
            as well as the format used for storing data to physical
            disk.
     </p>
    </li>
    <li class="listitem">
     <p>
      <span class="emphasis">
       <em>
        Index Support
       </em>
      </span>
      : Different application
            scenarios tend to benefit from different index strategies.
            Each storage engine generally has its own indexing methods,
            although some (such as B-tree indexes) are common to nearly
            all engines.
     </p>
    </li>
    <li class="listitem">
     <p>
      <span class="emphasis">
       <em>
        Memory Caches
       </em>
      </span>
      : Different applications
            respond better to some memory caching strategies than
            others, so although some memory caches are common to all
            storage engines (such as those used for user connections),
            others are uniquely defined only when a particular storage
            engine is put in play.
     </p>
    </li>
    <li class="listitem">
     <p>
      <span class="emphasis">
       <em>
        Performance Aids
       </em>
      </span>
      : This includes
            multiple I/O threads for parallel operations, thread
            concurrency, database checkpointing, bulk insert handling,
            and more.
     </p>
    </li>
    <li class="listitem">
     <p>
      <span class="emphasis">
       <em>
        Miscellaneous Target Features
       </em>
      </span>
      : This may
            include support for geospatial operations, security
            restrictions for certain data manipulation operations, and
            other similar features.
     </p>
    </li>
   </ul>
  </div>
  <p>
   Each set of the pluggable storage engine infrastructure
        components are designed to offer a selective set of benefits for
        a particular application. Conversely, avoiding a set of
        component features helps reduce unnecessary overhead. It stands
        to reason that understanding a particular application's set of
        requirements and selecting the proper MySQL storage engine can
        have a dramatic impact on overall system efficiency and
        performance.
  </p>
 </div>
 <br/>
</div>
