Engines

表类型

CREATE TABLE ... ENGINE=

常见的存储引擎:

InnoDB:

处理大量的短期事务;
数据存储于“表空间(table space)”中:
  (1)可以将所有InnoDB表的数据放置于同一个表空间中;
       表空间文件:datadir定义的目录下:
         数据文件(存储数据和索引):ibddata1, ibddata2, ...
  (2)也可以每个表单独使用一个表空间存储表的数据和索引;
       innodb_file_per_table=ON

       数据文件(存储数据和索引):tbl_name.ibd, 
       表格式定义:tbl.frm

基于MVCC来支持高并发,支持所有的四个隔离级别,默认级别为REPEATABLE READ;间隙锁防止幻读
InnoDB使用聚集索引
支持“自适应hash索引”
锁粒度:行级锁

MariaDB(XtraDB(percona))

特性总结:
  数据存储:表空间   并发:MVCC, 间隙锁   索引:聚集索引、辅助索引   性能:预读操作、自适应hash、插入缓冲区   备份:支持热备、(xtrabackup)

MyISAM:

支持全文索引(FULLTEXT index)、压缩、空间函数(GIS);但不支持事务,且为表级锁;
崩溃后无法安全恢复

适用场景:只读(或者写较少)、表较小(可以接受长时间进行修复操作)
  Aria: crash-safe

文件:
  tbl_name.frm:表格式定义
  tbl_name.MYD: 数据文件
  tbl_name.MYI: 索引文件

特性总结:
  加锁和并发:表级锁
  修复:手工或自动修复、但可能丢失数据
  索引:非聚集索引
  延迟更新索引键:
  压缩表

行格式:dynamic, fixed, compressed, compact, redundent

其他存储引擎:

CSV:将普通的CSV(字段通过逗号分隔)作为Mysql表使用;
MRG_MYISAM:将多个MyISAM表合并成为一个虚拟表;
BLACKHOLE: 类似于/dev/null,不真正存储任何数据;
MEMORY:所有数据都保存于内存中,内存表;支持hash索引;表级锁;
  临时表
PERFORMANCE_SCHEMA:伪存储引擎;
ARCHIVE:专用于做归档的存储引擎,只支持SELECT和INSERT操作;支持行级锁和专用缓冲区,不支持事务;
FEDERATED:将自己扮演成mysql客户端,从而连到其他mysql服务器上,所做的查询操作都自动发给另一个服务器,获取数据后再返回
  用于访问其他远程MYSQL服务器的一个代理,它通过创建一个到远程mysql服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取;
    在MariaDB上的实现是FederatedX    

MariadDB支持的其他存储引擎:

OQGraph
SphinxSE
TokuDB
Cassandra
CONNET
SQUENCE

 

posted @ 2021-03-02 12:07  coocoo  阅读(541)  评论(0编辑  收藏  举报