存储引擎

115 阅读1分钟

1.1存储引擎的使用

是 mysql 特有的

  • 数据库中的各表在创建的时候指定存储引擎来处理。
  • mysql 默认引擎为INnoDB:
  • 指定语句为ENGINE= INnoDB。
  • 默认的字符集为UFT-8。 存储引擎.png

1.2什么是存储引擎

  • 存储引擎只有MySQL中存在。Oracle中有相对应的机制叫做存储方式,没有特殊的名字。
  • 每一个存储引擎都对应一个不同的存储方式,每一个存储方式都有自己的优缺点,需要在合适的时机选择合适的存储引擎。
  • 查看存储引擎:
    • show engines \G

1.3 MYISAM 存储引擎

  • 存储方式
                  Engine: MyISAM
                 Support: YES              
                 Comment: MyISAM storage engine
            Transactions: NO
                      XA: NO
              Savepoints: NO
  • 不支持事务
  • 是MySQL最常用的存储引擎。但不是默认的。
  • 使用三个文件表示一个表:
    • 格式文件(mytable.frm)--format
    • 数据文件(mytable.MYD)--data
    • 索引文件(mytable.MYI)--index
  • 可被转换成压缩,只读表来节省空间。

1.4 INnoDB存储引擎

            Engine: InnoDB
           Support: DEFAULT
           Comment: Supports transactions, row-level locking, and foreign keys
      Transactions: YES
                XA: YES
        Savepoints: YES     
  • 支持事务、行级锁、外键,这种存储引擎的数据的安全得到保障,
  • 表的结构在目录中以.frm格式表示。
  • INnoDB表空间tablespace被用于存储表的内容。(一种逻辑概念)
  • 提供日志文件来存储表的操作记录。
  • 在MySQL服务器崩溃后提供自动恢复机制。
  • 支持外键及应用的完整性,支持级联删除和更新。

1.5 MEMORY存储引擎

          Engine: MEMORY
         Support: YES
         Comment: Hash based, stored in memory, useful for temporary tables
    Transactions: NO
              XA: NO
      Savepoints: NO
  • 不支持事务,数据容易丢失,所有数据在内存中。
  • 查询速度最快。
  • 格式以.frm存储。
  • 数据和索引直接在内存中。(危险!)断电易丢!