1.1 存储引擎的介绍

1.1.1 文件系统存储

  文件系统:操作系统组织和存取数据的一种机制。文件系统是一种软件。

  类型:ext2 3 4 ,xfs 数据。  不管使用什么文件系统,数据内容不会变化,不同的是,存储空间、大小、速度。

1.1.2 mysql数据库存储

  MySQL引擎: 可以理解为,MySQL的“文件系统”,只不过功能更加强大。

  MySQL引擎功能: 除了可以提供基本的存取功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。

1.1.3 MySQL存储引擎种类

MySQL 提供以下存储引擎:

1.1.4 innodb与myisam对比

InnoDb引擎

  1. 支持ACID的事务,支持事务的四种隔离级别;
  2. 支持行级锁及外键约束:因此可以支持写并发;
  3. 不存储总行数;
  4. 一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为2G),受操作系统文件大小的限制;
  5. 主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;最好使用自增主键,防止插入数据时,为维持B+树结构,文件的大调整。

Innodb__的主索引结构如下:

MyISAM引擎

  1. 不支持事务,但是每次查询都是原子的;
  2. 支持表级锁,即每次操作是对整个表加锁;
  3. 存储表的总行数;
  4. 一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;
  5. 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。

MYISAM__的主索引结构如下:

两种索引数据查找过程如下:

1.2 innodb存储引擎

  在MySQL5.5版本之后,默认的存储引擎,提供高可靠性和高性能。

1.2.1 Innodb引擎的优点

1.2.2 Innodb功能总览

    <td style="width: 24.4%; border-top-width: 1pt; border-top-color: #9bbb59; border-left: none; border-bottom-width: 1pt; border-bottom-color: #9bbb59; border-right: none; background: #9bbb59; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; color: white; mso-themecolor: background1;">支持</span></strong>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top-width: 1pt; border-top-color: #9bbb59; border-left: none; border-bottom-width: 1pt; border-bottom-color: #9bbb59; border-right: none; background: #9bbb59; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; color: white; mso-themecolor: background1;">功能</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-top-color: #9bbb59; border-right-color: #9bbb59; border-bottom-color: #9bbb59; border-left: none; background: #9bbb59; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; color: white; mso-themecolor: background1;">支持</span></strong>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 68;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">存储限制</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span lang="EN-US">64 TB</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">索引高速缓存</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 4;">
        <strong><span lang="EN-US">MVCC</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">数据高速缓存</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 68;">
        <strong><span lang="EN-US">B </span></strong><strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">树索引</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">自适应散列索引</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 4;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">群集索引</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">复制</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 68;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">压缩数据</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">更新数据字典</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 4;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">加密数据</span><span lang="EN-US">[b]</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">地理空间数据类型</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 68;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">查询高速缓存</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">地理空间索引</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">否</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 4;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">事务</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">全文搜索索引</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 68;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">锁定粒度</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">行</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">群集数据库</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">否</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 4;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">外键</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">备份和恢复</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 68;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">文件格式管理</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">快速索引创建</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 4;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">多个缓冲区池</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
        <strong><span lang="EN-US">PERFORMANCE_SCHEMA</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
  
  <tr>
    <td style="width: 24.46%; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-right-color: #c2d69b; border-bottom-color: #c2d69b; border-left-color: #c2d69b; border-top: none; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 68;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">更改缓冲</span></strong>
      </p>
    </td>
    
    <td style="width: 24.4%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
    
    <td style="width: 26.86%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="26%">
      <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
        <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">自动故障恢复</span></strong>
      </p>
    </td>
    
    <td style="width: 24.28%; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="24%">
      <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 64;" align="center">
        <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span>
      </p>
    </td>
  </tr>
</table>

1.2.3 查询存储引擎的方法

1、使用 SELECT 确认会话存储引擎:

2、使用 SHOW 确认每个表的存储引擎:

3、使用 INFORMATION_SCHEMA 确认每个表的存储引擎:

4、从5.1版本,迁移到5.5版本以上版本

     假如5.1版本数据库所有生产表都是myisam的。

     使用mysqldump备份后,一点要替换备份的文件中的engine(引擎)字段,从myisam替换为innodb(可以使用sed命令),否则迁移无任何意义。

     数据库升级时,要注意其他配套设施的兼容性,注意代码能否兼容新特性。

1.2.4 设置存储引擎

1、在启动配置文件中设置服务器存储引擎:

2、使用 SET 命令为当前客户机会话设置:

3、在 CREATE TABLE 语句指定:

1.3 InnoDB存储引擎的存储结构

1.3.1 InnoDB 系统表空间特性

  1. 默认情况下,InnoDB 元数据、撤消日志和缓冲区存储在系统“表空间”中。
  2. 这是单个逻辑存储区域,可以包含一个或多个文件。
  3. 每个文件可以是常规文件或原始分区。
  4. 最后的文件可以自动扩展。

1.3.2 表空间的定义

  表空间:MySQL数据库存储的方式

    表空间中包含数据文件

  MySQl表空间和数据文件是1:1的关系

    共享表空间除外,是可以1:N关系

1.3.3 表空间类型

  1、共享表空间:ibdata1~ibdataN,一般是2-3个

  2、独立表空间:存放在指定库目录下,例如data/world/目录下的city.ibd

    表空间位置(datadir):

    data/目录下

1.3.4 系统表空间的存储内容

共享表空间(物理存储结构)

     ibdata1~N 通常被叫做系统表空间,是数据初始化生成的

     系统元数据,基表数据,除了表内容数据之外的数据。

     tmp 表空间(一般很少关注)

     undo日志 :数据–回滚数据(回滚日志使用)

     redo日志 :ib_logfile0~N 存放系统的innodb表的一些重做日志。

     说明:undo日志默认实在ibdata中的,在5.6以后是可以单独定义的。

          tmp 表空间在_5.7__版本之后_被移出了ibdata1,变为ibtmp1

          在_5.5__版本之前_,所有的应用数据也都默认存放到了ibdata中。

独立表空间(一个存储引擎的功能)

     在5.6之后,默认的情况下会单表单独存储到独立表空间文件

   除了系统表空间之外,InnoDB 还在数据库目录中创建另外的表空间,用于每个 InnoDB 表的 .ibd 文件。

     InnoDB 创建的每个新表在数据库目录中设置一个 .ibd 文件来搭配表的.frm 文件。

   可以使用 innodb_file_per_table 选项控制此设置,更改该设置仅会更改已创建的新表的默认值。。

1.3.5 设置共享表空间

查看当前的共享表空间设置

  一般是在初始搭建环境的时候就配置号,预设值一般为1G;且最后一个为自动扩展。

重启服务查看当前的共享表空间设置

1.3.6 设置独立表空间

   独立表空间在5.6版本是默认开启的。

   独立表空间注意事项:不开起独立表空间,共享表空间会占用很大

   在参数文件/etc/my.cnf  可以控制独立表空间

关闭独立表空间 (0是关闭,1是开启)

查看独立表空间配置

小结:

1.4 MySQL中的事务

  一组数据操作执行步骤,这些步骤被视为一个工作单元

       用于对多个语句进行分组,可以在多个客户机并发访问同一个表中的数据时使用。

  所有步骤都成功或都失败

       如果所有步骤正常,则执行,如果步骤出现错误或不完整,则取消。

简单来说事务就是:保证工作单元中的语句同时成功或同时失败。

1.4.1 事务是什么

  与其给事务定义,不如说一说事务的特性。众所周知,事务需要满足ACID四个特性。

A(atomicity) 原子性。

   一个事务的执行被视为一个不可分割的最小单元。事务里面的操作,要么全部成功执行,要么全部失败回滚,不可以只执行其中的一部分。

C(consistency) 一致性

  一个事务的执行不应该破坏数据库的完整性约束。如果上述例子中第2个操作执行后系统崩溃,保证A和B的金钱总计是不会变的。

I(isolation) 隔离性。

  通常来说,事务之间的行为不应该互相影响。然而实际情况中,事务相互影响的程度受到隔离级别的影响。文章后面会详述。

隔离级别

  此规则除了受隔离级别控制,还受锁控制,可以联想一下NFS的实现

D(durability) 持久性。

  事务提交之后,需要将提交的事务持久化到磁盘。即使系统崩溃,提交的数据也不应该丢失。

1.4.2 事务的控制语句

常用的事务控制语句:

需要知道的事务控制语句:

1.4.3 autocommit参数

  在MySQL5.5开始,开启事务时不再需要begin或者start transaction语句。并且,默认是开启了Autocommit模式,作为一个事务隐式提交每个语句。

  在有些业务繁忙企业场景下,这种配置可能会对性能产生很大影响,但对于安全性上有很大提高。将来,我们需要去权衡我们的业务需求去调整是否自动提交。

**  注意:在生产中,根据实际需求选择是否可开启,一般银行类业务会选择关闭。**

查看当前autocommit状态:

修改配置文件,并重启

再次查看autocommit状态

1.4.4 导致提交的非事务语句:

导致隐式提交的语句示例:

用于隐式提交的 SQL 语句:

1.5 redo与undo

1.5.1 事务日志undo

undo原理:

  Undo Log的原理很简单,为了满足事务的原子性,在操作任何数据之前,首先将数据备份到一个地方(这个存储数据备份的地方称为Undo Log)。然后进行数据的修改。

  如果出现了错误或者用户执行了ROLLBACK语句,系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。

除了可以保证事务的原子性,Undo Log也可以用来辅助完成事务的持久化。

undo****是什么?

  undo,顾名思义“回滚日志”,是事务日志的一种。

作用是什么?

  在事务ACID过程中,实现的是“A“原子性的作用。

用Undo Log实现原子性和持久化的事务的简化过程

  这里有一个隐含的前提条件:‘数据都是先读到内存中,然后修改内存中的数据,最后将数据写回磁盘之所以能同时保证原子性和持久化,是因为以下特点:

缺陷:

  每个事务提交前将数据和Undo Log写入磁盘,这样会导致大量的磁盘IO,因此性能很低。如果能够将数据缓存一段时间,就能减少IO提高性能。但是这样就会丧失事务的持久性。

  因此引入了另外一种机制来实现持久化,即Redo Log.

1.5.2 事务日志redo

redo****原理:

  和Undo Log相反,Redo Log记录的是新数据的备份。在事务提交前,只要将Redo Log持久化即可,不需要将数据持久化。当系统崩溃时,虽然数据没有持久化,但是Redo Log已经持久化。

  系统可以根据Redo Log的内容,将所有数据恢复到最新的状态。

 

Redo****是什么?

  redo,顾名思义“重做日志”,是事务日志的一种。

作用是什么?

  在事务ACID过程中,实现的是“D”持久化的作用。

Undo + Redo__事务的简化过程

Undo + Redo__事务的特点

1.5.3 事务中的锁

什么是“锁”?

  “锁”顾名思义就是锁定的意思。

“锁”的作用是什么?

  在事务ACID过程中,“锁”和“隔离级别”一起来实现“I”隔离性的作用。

锁的粒度:

  1、MyIasm:低并发锁——表级锁

  2、Innodb:高并发锁——行级锁

四种隔离级别:

开销、加锁速度、死锁、粒度、并发性能

  仅从锁的角度来说:表级锁更适合于以查询为主,只有少量按索引条件更新数据的应用,如Web应用;而行级锁则更适合于有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用,如一些在线事务处理(OLTP)系统。

1.6 MySQL 日志管理

1.6.1 MySQL日志类型简介

日志的类型的说明:

<td style="width: 5cm; border-top-width: 1pt; border-top-color: #9bbb59; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right: none; background: #9bbb59; padding: 0cm 5.4pt; height: 13.15pt;" rowspan="2" width="189">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; color: white; mso-themecolor: background1;">选项</span></strong>
  </p>
</td>

<td style="width: 186.8pt; border-top-width: 1pt; border-top-color: #9bbb59; border-left: none; border-bottom-width: 1pt; border-bottom-color: #9bbb59; border-right: none; background: #9bbb59; padding: 0cm 5.4pt; height: 13.15pt;" width="249">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; color: white; mso-themecolor: background1;">文件名</span></strong>
  </p>
</td>

<td style="width: 130.7pt; border-top-width: 1pt; border-top-color: #9bbb59; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #9bbb59; background: #9bbb59; padding: 0cm 5.4pt; height: 13.15pt;" rowspan="2" width="174">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; color: white; mso-themecolor: background1;">程序</span></strong>
  </p>
  
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="color: white; mso-themecolor: background1;" lang="EN-US">N/A</span></strong>
  </p>
</td>
<td style="width: 5cm; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="189">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span lang="EN-US">--log-error</span>
  </p>
</td>

<td style="width: 186.8pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="249">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span lang="EN-US">host_name.err</span>
  </p>
</td>

<td style="width: 130.7pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="174">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span lang="EN-US">N/A</span>
  </p>
</td>
<td style="width: 5cm; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt; height: 13.15pt;" rowspan="2" width="189">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">--general_log</span>
  </p>
</td>

<td style="width: 186.8pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt; height: 13.15pt;" width="249">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">host_name.log</span>
  </p>
</td>

<td style="width: 130.7pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt; height: 13.15pt;" rowspan="2" width="174">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">mysqldumpslow</span>
  </p>
  
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">mysqlbinlog</span>
  </p>
</td>
<td style="width: 5cm; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding: 0cm 5.4pt; height: 17.3pt;" rowspan="2" width="189">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">--slow_query_log</span>
  </p>
  
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">--long_query_time</span>
  </p>
</td>

<td style="width: 186.8pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding: 0cm 5.4pt; height: 17.3pt;" width="249">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">host_name-slow.log</span>
  </p>
</td>

<td style="width: 130.7pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; padding: 0cm 5.4pt; height: 17.3pt;" rowspan="2" width="174">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">N/A</span>
  </p>
  
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">程序</span>
  </p>
</td>
<td style="width: 5cm; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="189">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">--log-bin</span>
  </p>
  
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">--expire-logs-days</span>
  </p>
</td>

<td style="width: 186.8pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="249">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">host_name-bin.000001</span>
  </p>
</td>

<td style="width: 130.7pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; background: #eaf1dd; padding: 0cm 5.4pt;" width="174">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span lang="EN-US">N/A</span>
  </p>
</td>
<td style="width: 5cm; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="189">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span lang="EN-US">--audit_log</span>
  </p>
  
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span lang="EN-US">--audit_log_file</span>
  </p>
</td>

<td style="width: 186.8pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="249">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span lang="EN-US">audit.log</span>
  </p>
</td>

<td style="width: 130.7pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #c2d69b; border-right-width: 1pt; border-right-color: #c2d69b; padding: 0cm 5.4pt;" width="174">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span lang="EN-US">N/A</span>
  </p>
</td>

1.6.2 配置方法

状态错误日志:

查看配置方式:

作用:

  记录mysql数据库的一般状态信息及报错信息,是我们对于数

 据库常规报错处理的常用日志。

1.6.3 一般查询日志

配置方法:

查看配置方式:

作用:

  记录mysql所有执行成功的SQL语句信息,可以做审计用,但是我们很少开启

1.7 二进制日志

  二进制日志不依赖与存储引擎的。

  依赖于sql层,记录和sql语句相关的信息

binlog日志作用:

     1、提供备份功能

     2、进行主从复制

     3、基于时间点的任意恢复

  记录在sql层已经执行完成的语句,如果是事务,则记录已完成的事务。

  功能作用: 时间点备份 和 时间点恢复、 主从

二进制日志的“总闸”

作用:

1.7.1 二进制日志的格式

statement,语句模式:

row,行模式

mixed,混合模式

1.7.2 开启二进制日志

修改配置文件开启二进制日志

命令行修改的方法

查看文件二进制日志的类型

查看MySQL的配置:

1.7.3 定义记录方式

查看现在的格式

修改格式

改完之后查看

1.8 二进制日志的操作

1.8.1 查看

  操作系统层面查看

刷新日志

刷新完成后的日志目录

查看当前使用的二进制日志文件

查看所有的二进制日志文件

1.8.2 查看二进制日志内容

名词说明:

  1、events 事件

         二进制日志如何定义:命令的最小发生单元

  2、position

       每个事件在整个二进制文件中想对应的位置号就是position号

导出所有的信息

binlog****的查看方式:

1、查看binlog原始信息

2、在row模式下,翻译成语句

3、查看binlog事件

4**、如何截取binlog****内容,按需求恢复(常规思路)**

使用上述方法遇到的问题:

 较好的解决方案。

1.8.3 mysqlbinlog截取二进制日志的方法

mysqlbinlog常见的选项有以下几个:

<td style="width: 374.2pt; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-top-color: white; border-right-color: white; border-bottom-color: white; border-left: none; background: #4f81bd; padding: 0cm 5.4pt;" width="499">
  <p class="MsoNormal" style="text-align: center; mso-yfti-cnfc: 1;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; color: white; mso-themecolor: background1;">参数说明</span></strong>
  </p>
</td>
<td style="width: 374.2pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #b8cce4; padding: 0cm 5.4pt;" width="499">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">从二进制日志中读取指定等于时间戳或者晚于本地计算机的时间</span>
  </p>
</td>
<td style="width: 374.2pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #dbe5f1; padding: 0cm 5.4pt;" width="499">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">从二进制日志中读取指定小于时间戳或者等于本地计算机的时间取值和上述一样</span>
  </p>
</td>
<td style="width: 374.2pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #b8cce4; padding: 0cm 5.4pt;" width="499">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph; mso-yfti-cnfc: 64;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">从二进制日志中读取指定</span><span lang="EN-US">position </span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">事件位置作为开始。</span>
  </p>
</td>
<td style="width: 374.2pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: white; border-right-width: 1pt; border-right-color: white; background: #dbe5f1; padding: 0cm 5.4pt;" width="499">
  <p class="MsoNormal" style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">从二进制日志中读取指定</span><span lang="EN-US">position </span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">事件位置作为事件截至</span>
  </p>
</td>

  二进制日志文件示例:  mysqlbinlog start-position=120 –stop-position=结束号  

1.8.4 删除二进制日志

**  默认情况下,不会删除旧的日志文件。**

根据存在时间删除日志:

根据文件名删除日志:

   重置二进制日志计数,从1开始计数,删除原有的二进制日志。

1.9 mysql的慢查询日志(slow log)

1.9.1 这是什么呢?

  slow-log  记录所有条件内的慢的sql语句

    优化的一种工具日志。能够帮我们定位问题。

1.9.2 慢查询日志

  是将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件

  通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的。慢日志设置

慢查询日志配置

      配置完成后重启服务…

查看慢查询日志是否开启,及其位置。

1.9.3 mysqldumpslow命令

这会输出记录次数最多的10条SQL语句,其中:

<td style="width: 466.35pt; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-top-color: #4f81bd; border-right-color: #4f81bd; border-bottom-color: #4f81bd; border-left: none; background: #4f81bd; padding: 0cm 5.4pt;" valign="top" width="622">
  <p class="MsoNormal">
    <strong><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; color: white; mso-themecolor: background1;">说明</span></strong>
  </p>
</td>
<td style="width: 466.35pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #95b3d7; border-right-width: 1pt; border-right-color: #95b3d7; background: #dbe5f1; padding: 0cm 5.4pt;" valign="top" width="622">
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是表示按照何种方式排序,</span><span lang="EN-US">c</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">、</span><span lang="EN-US">t</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">、</span><span lang="EN-US">l</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">、</span><span lang="EN-US">r</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">分别是按照记录次数、时间、查询</span>
  </p>
  
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">时间、返回的记录数来排序,</span><span lang="EN-US">ac</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">、</span><span lang="EN-US">at</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">、</span><span lang="EN-US">al</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">、</span><span lang="EN-US">ar</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">,表示相应的倒叙;</span>
  </p>
</td>
<td style="width: 466.35pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #95b3d7; border-right-width: 1pt; border-right-color: #95b3d7; padding: 0cm 5.4pt;" valign="top" width="622">
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">是</span><span lang="EN-US">top n</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">的意思,即为返回前面多少条的数据;</span>
  </p>
</td>
<td style="width: 466.35pt; border-top: none; border-left: none; border-bottom-width: 1pt; border-bottom-color: #95b3d7; border-right-width: 1pt; border-right-color: #95b3d7; background: #dbe5f1; padding: 0cm 5.4pt;" valign="top" width="622">
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New';">后边可以写一个正则匹配模式,大小写不敏感的;</span>
  </p>
</td>
  <div style="mso-element: para-border-div; border: solid windowtext 2.0pt; padding: 1.0pt 4.0pt 1.0pt 4.0pt; mso-border-shadow: yes; background: #F2F2F2; mso-shading: windowtext; mso-pattern: gray-5 auto;">
    <p class="a">
      <span lang="EN-US">/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log</span>
    </p>
  </div>
  
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-weight: bold;">得到返回记录集最多的</span><span lang="EN-US">10</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-weight: bold;">个查询。</span>
  </p>
  
  <div style="mso-element: para-border-div; border: solid windowtext 2.0pt; padding: 1.0pt 4.0pt 1.0pt 4.0pt; mso-border-shadow: yes; background: #F2F2F2; mso-shading: windowtext; mso-pattern: gray-5 auto;">
    <p class="a">
      <span lang="EN-US">/path/mysqldumpslow -s t -t 10 -g &ldquo;left </span>
    </p>
    
    <p class="a">
      <span lang="EN-US">join&rdquo;/database/mysql/slow-log</span>
    </p>
  </div>
  
  <p class="MsoNormal">
    <span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-weight: bold;">得到按照时间排序的前</span><span lang="EN-US">10</span><span style="font-family: '微软雅黑',sans-serif; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-weight: bold;">条里面含有左连接的查询语句。</span>
  </p>
</td>

1.9.4 怎么保证binlog和redolog已提交事务的一致性

  在没有开启binlog的时候,在执行commit,认为redo日志持久化到磁盘文件中,commit命令就成功。

写binlog参数:

   sync_binlog 确保是否每个提交的事务都写到binlog中。

1.9.5 mysql中的双一标准:

  innodb_flush_log_at_trx_commit和sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数。

参数意义说明:

  如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。

  如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.

  如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

注意:

参数意义说明:

  sync_binlog 的默认值是0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。

  当sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。

注:

安全方面说明

  当innodb_flush_log_at_trx_commit和sync_binlog 都为 1 时是最安全的,在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。但是鱼与熊掌不可兼得,双11 会导致频繁的io操作,因此该模式也是最慢的一种方式。

  当innodb_flush_log_at_trx_commit设置为0,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。

  当innodb_flush_log_at_trx_commit设置为2,只有在操作系统崩溃或者系统掉电的情况下,上一秒钟所有事务数据才可能丢失。

  双1适合数据安全性要求非常高,而且磁盘IO写能力足够支持业务,比如订单,交易,充值,支付消费系统。双1模式下,当磁盘IO无法满足业务需求时 比如11.11 活动的压力。推荐的做法是 innodb_flush_log_at_trx_commit=2 ,sync_binlog=N (N为500 或1000) 且使用带蓄电池后备电源的缓存cache,防止系统断电异常。

  系统性能和数据安全是业务系统高可用稳定的必要因素。我们对系统的优化需要寻找一个平衡点,合适的才是最好的,根据不同的业务场景需求,可以将两个参数做组合调整,以便是db系统的性能达到最优化。

1.10 参考文献

 

<li>
  <a href="#12_innodb">1.2 innodb存储引擎</a><ul>
    <li>
      <a href="#121_Innodb">1.2.1 Innodb引擎的优点</a>
    </li>
    <li>
      <a href="#122_Innodb">1.2.2 Innodb功能总览</a>
    </li>
    <li>
      <a href="#123">1.2.3 查询存储引擎的方法</a>
    </li>
    <li>
      <a href="#124">1.2.4 设置存储引擎</a>
    </li>
  </ul>
</li>

<li>
  <a href="#13_InnoDB">1.3 InnoDB存储引擎的存储结构</a><ul>
    <li>
      <a href="#131_InnoDB">1.3.1 InnoDB 系统表空间特性</a>
    </li>
    <li>
      <a href="#132">1.3.2 表空间的定义</a>
    </li>
    <li>
      <a href="#133">1.3.3 表空间类型</a>
    </li>
    <li>
      <a href="#134">1.3.4 系统表空间的存储内容</a>
    </li>
    <li>
      <a href="#135">1.3.5 设置共享表空间</a>
    </li>
    <li>
      <a href="#136">1.3.6 设置独立表空间</a>
    </li>
  </ul>
</li>

<li>
  <a href="#14_MySQL">1.4 MySQL中的事务</a><ul>
    <li>
      <a href="#141">1.4.1 事务是什么</a>
    </li>
    <li>
      <a href="#142">1.4.2 事务的控制语句</a>
    </li>
    <li>
      <a href="#143_autocommit">1.4.3 autocommit参数</a>
    </li>
    <li>
      <a href="#144">1.4.4 导致提交的非事务语句:</a>
    </li>
  </ul>
</li>

<li>
  <a href="#15_redoundo">1.5 redo与undo</a><ul>
    <li>
      <a href="#151_undo">1.5.1 事务日志undo</a>
    </li>
    <li>
      <a href="#152_redo">1.5.2 事务日志redo</a>
    </li>
    <li>
      <a href="#153">1.5.3 事务中的锁</a>
    </li>
  </ul>
</li>

<li>
  <a href="#16_MySQL">1.6 MySQL 日志管理</a><ul>
    <li>
      <a href="#161_MySQL">1.6.1 MySQL日志类型简介</a>
    </li>
    <li>
      <a href="#162">1.6.2 配置方法</a>
    </li>
    <li>
      <a href="#i">状态错误日志:</a>
    </li>
    <li>
      <a href="#163">1.6.3 一般查询日志</a>
    </li>
  </ul>
</li>

<li>
  <a href="#17">1.7 二进制日志</a><ul>
    <li>
      <a href="#171">1.7.1 二进制日志的格式</a>
    </li>
    <li>
      <a href="#172">1.7.2 开启二进制日志</a>
    </li>
    <li>
      <a href="#173">1.7.3 定义记录方式</a>
    </li>
  </ul>
</li>

<li>
  <a href="#18">1.8 二进制日志的操作</a><ul>
    <li>
      <a href="#181">1.8.1 查看</a>
    </li>
    <li>
      <a href="#182">1.8.2 查看二进制日志内容</a>
    </li>
    <li>
      <a href="#183_mysqlbinlog">1.8.3 mysqlbinlog截取二进制日志的方法</a>
    </li>
    <li>
      <a href="#184">1.8.4 删除二进制日志</a>
    </li>
  </ul>
</li>

<li>
  <a href="#19_mysqlslow_log">1.9 mysql的慢查询日志(slow log)</a><ul>
    <li>
      <a href="#191">1.9.1 这是什么呢?</a>
    </li>
    <li>
      <a href="#192">1.9.2 慢查询日志</a>
    </li>
    <li>
      <a href="#193_mysqldumpslow">1.9.3 mysqldumpslow命令</a>
    </li>
    <li>
      <a href="#194_binlogredolog">1.9.4 怎么保证binlog和redolog已提交事务的一致性</a>
    </li>
    <li>
      <a href="#195_mysql">1.9.5 mysql中的双一标准:</a>
    </li>
  </ul>
</li>

<li>
  <a href="#110">1.10 参考文献</a>
</li>