<div id="docs-body">
 <div class="section">
  <div class="titlepage">
   <div>
    <div>
     <h2 class="title">
      <a name="innodb-introduction">
      </a>
      17.1 Introduction to InnoDB
     </h2>
    </div>
   </div>
  </div>
  <div class="toc">
   <dl class="toc">
    <dt>
     <span class="section">
      <a href="innodb-benefits.html">
       17.1.1 Benefits of Using InnoDB Tables
      </a>
     </span>
    </dt>
    <dt>
     <span class="section">
      <a href="innodb-best-practices.html">
       17.1.2 Best Practices for InnoDB Tables
      </a>
     </span>
    </dt>
    <dt>
     <span class="section">
      <a href="innodb-check-availability.html">
       17.1.3 Verifying that InnoDB is the Default Storage Engine
      </a>
     </span>
    </dt>
    <dt>
     <span class="section">
      <a href="innodb-benchmarking.html">
       17.1.4 Testing and Benchmarking with InnoDB
      </a>
     </span>
    </dt>
   </dl>
  </div>
  <a class="indexterm" name="idm46045167491728">
  </a>
  <a class="indexterm" name="idm46045167490240">
  </a>
  <a class="indexterm" name="idm46045167489168">
  </a>
  <a class="indexterm" name="idm46045167487680">
  </a>
  <a class="indexterm" name="idm46045167486608">
  </a>
  <a class="indexterm" name="idm46045167485120">
  </a>
  <a class="indexterm" name="idm46045167484048">
  </a>
  <a class="indexterm" name="idm46045167482976">
  </a>
  <a class="indexterm" name="idm46045167481904">
  </a>
  <p>
   <code class="literal">
    InnoDB
   </code>
   is a general-purpose storage engine that
    balances high reliability and high performance. In MySQL
    8.4,
   <code class="literal">
    InnoDB
   </code>
   is the default MySQL
    storage engine. Unless you have configured a different default
    storage engine, issuing a
   <a class="link" href="create-table.html" title="15.1.20 CREATE TABLE Statement">
    <code class="literal">
     CREATE
    TABLE
    </code>
   </a>
   statement without an
   <code class="literal">
    ENGINE
   </code>
   clause creates an
   <code class="literal">
    InnoDB
   </code>
   table.
  </p>
  <h3>
   <a name="innodb-key-advantages">
   </a>
   Key Advantages of InnoDB
  </h3>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      Its DML operations follow the ACID model, with transactions
        featuring commit, rollback, and crash-recovery capabilities to
        protect user data. See
      <a class="xref" href="mysql-acid.html" title="17.2 InnoDB and the ACID Model">
       Section 17.2, “InnoDB and the ACID Model”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      Row-level locking and Oracle-style consistent reads increase
        multi-user concurrency and performance. See
      <a class="xref" href="innodb-locking-transaction-model.html" title="17.7 InnoDB Locking and Transaction Model">
       Section 17.7, “InnoDB Locking and Transaction Model”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       InnoDB
      </code>
      tables arrange your data on disk to
        optimize queries based on primary keys. Each
      <code class="literal">
       InnoDB
      </code>
      table has a primary key index called
        the clustered index that organizes the data to minimize I/O for
        primary key lookups. See
      <a class="xref" href="innodb-index-types.html" title="17.6.2.1 Clustered and Secondary Indexes">
       Section 17.6.2.1, “Clustered and Secondary Indexes”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      To maintain data integrity,
      <code class="literal">
       InnoDB
      </code>
      supports
      <code class="literal">
       FOREIGN KEY
      </code>
      constraints. With foreign keys,
        inserts, updates, and deletes are checked to ensure they do not
        result in inconsistencies across related tables. See
      <a class="xref" href="create-table-foreign-keys.html" title="15.1.20.5 FOREIGN KEY Constraints">
       Section 15.1.20.5, “FOREIGN KEY Constraints”
      </a>
      .
     </p>
    </li>
   </ul>
  </div>
  <div class="table">
   <a name="idm46045167464704">
   </a>
   <p class="title">
    <b>
     Table 17.1 InnoDB Storage Engine Features
    </b>
   </p>
   <div class="table-contents">
    <table frame="box" rules="all" summary="Features supported by the InnoDB storage engine.">
     <colgroup>
      <col style="width: 60%"/>
      <col style="width: 40%"/>
     </colgroup>
     <thead>
      <tr>
       <th>
        Feature
       </th>
       <th>
        Support
       </th>
      </tr>
     </thead>
     <tbody>
      <tr>
       <td>
        <span class="bold">
         <strong>
          B-tree indexes
         </strong>
        </span>
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Backup/point-in-time recovery
         </strong>
        </span>
        (Implemented in the server, rather than in the storage engine.)
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Cluster database support
         </strong>
        </span>
       </td>
       <td>
        No
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Clustered indexes
         </strong>
        </span>
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Compressed data
         </strong>
        </span>
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Data caches
         </strong>
        </span>
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Encrypted data
         </strong>
        </span>
       </td>
       <td>
        Yes (Implemented in the server via encryption functions; In MySQL 5.7 and later, data-at-rest encryption is supported.)
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Foreign key support
         </strong>
        </span>
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Full-text search indexes
         </strong>
        </span>
       </td>
       <td>
        Yes (Support for FULLTEXT indexes is available in MySQL 5.6 and later.)
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Geospatial data type support
         </strong>
        </span>
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Geospatial indexing support
         </strong>
        </span>
       </td>
       <td>
        Yes (Support for geospatial indexing is available in MySQL 5.7 and later.)
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Hash indexes
         </strong>
        </span>
       </td>
       <td>
        No (InnoDB utilizes hash indexes internally for its Adaptive Hash Index feature.)
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Index caches
         </strong>
        </span>
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Locking granularity
         </strong>
        </span>
       </td>
       <td>
        Row
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          MVCC
         </strong>
        </span>
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Replication support
         </strong>
        </span>
        (Implemented in the server, rather than in the storage engine.)
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Storage limits
         </strong>
        </span>
       </td>
       <td>
        64TB
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          T-tree indexes
         </strong>
        </span>
       </td>
       <td>
        No
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Transactions
         </strong>
        </span>
       </td>
       <td>
        Yes
       </td>
      </tr>
      <tr>
       <td>
        <span class="bold">
         <strong>
          Update statistics for data dictionary
         </strong>
        </span>
       </td>
       <td>
        Yes
       </td>
      </tr>
     </tbody>
    </table>
   </div>
   <div class="table-contents">
    <table cellpadding="0" cellspacing="0" style="position: fixed; top: 0px; display: none; left: 401px; width: 739px;">
     <thead>
      <tr>
       <th style="width: 442.797px;">
        Feature
       </th>
       <th style="width: 295.203px;">
        Support
       </th>
      </tr>
     </thead>
    </table>
   </div>
  </div>
  <br class="table-break"/>
  <p>
   To compare the features of
   <code class="literal">
    InnoDB
   </code>
   with other
    storage engines provided with MySQL, see the
   <span class="emphasis">
    <em>
     Storage
    Engine Features
    </em>
   </span>
   table in
   <a class="xref" href="storage-engines.html" title="Chapter 18 Alternative Storage Engines">
    Chapter 18,
    <i>
     Alternative Storage Engines
    </i>
   </a>
   .
  </p>
  <h3>
   <a name="innodb-enhancements">
   </a>
   InnoDB Enhancements and New Features
  </h3>
  <p>
   For information about
   <code class="literal">
    InnoDB
   </code>
   enhancements and new
    features, refer to:
  </p>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      The
      <code class="literal">
       InnoDB
      </code>
      enhancements list in
      <a class="xref" href="mysql-nutshell.html" title="1.4 What Is New in MySQL 8.4 since MySQL 8.0">
       Section 1.4, “What Is New in MySQL 8.4 since MySQL 8.0”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      The
      <a class="ulink" href="/doc/relnotes/mysql/8.4/en/" target="_top">
       Release
        Notes
      </a>
      .
     </p>
    </li>
   </ul>
  </div>
  <h3>
   <a name="innodb-additional-resources">
   </a>
   Additional InnoDB Information and Resources
  </h3>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      For
      <code class="literal">
       InnoDB
      </code>
      -related terms and definitions, see
        the
      <a class="xref" href="glossary.html" title="MySQL Glossary">
       MySQL Glossary
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      For a forum dedicated to the
      <code class="literal">
       InnoDB
      </code>
      storage
        engine, see
      <a class="ulink" href="http://forums.mysql.com/list.php?22" target="_blank">
       MySQL
        Forums::InnoDB
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      <code class="literal">
       InnoDB
      </code>
      is published under the same GNU GPL
        License Version 2 (of June 1991) as MySQL. For more information
        on MySQL licensing, see
      <a class="ulink" href="http://www.mysql.com/company/legal/licensing/" target="_blank">
       http://www.mysql.com/company/legal/licensing/
      </a>
      .
     </p>
    </li>
   </ul>
  </div>
 </div>
 <br/>
</div>
