mysql > SHOW ENGINES;
msyql> SHOW TBALES STATUS [LIKE clause] [WHERE clause]
SHOW TABLE STATUS [{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
存储引擎也通常称作“表类型”
mysql> SHOW TABLE STATUS IN success WHERE Name='classes'\G
*************************** 1. row ***************************
Name: classes
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 9
Avg_row_length: 1820
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 4194304
Auto_increment: NULL
Create_time: 2017-03-23 05:48:29
Update_time: NULL
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.01 sec)
Name:表名
Engine:存储引擎
Version:版本
Row_format:行格式
{DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
Rows:表中的行数
Avg_row_length:平均每行所包含的自己数:
Data_length:表中数据总体大小,单位是字节
Max_data_length:表能够占用的最大空间,单位为字节
Index_length:索引的大小,单位为字节
Data_free:对于MyISAM表,表示已经分配但尚未使用的空间,其中包含此前删除行之后腾出来的空间
Auto_increment:下一个AUTO_INCREMENT的值
Create_time:表的创建时间
Update_time:表数据的最近一次的修改时间
Check_time:使用CHECK TABLE或myisamchk最近一次检测表的时间
Collation:排序规则
Checksum:如果启动,则为表的checksum
Create_options:创建表时指定使用的其它选项
Comment:表的注释信息
InnoDB
两种格式
1、innodb_file_per_table=OFF,即使用共享空间
每张表一个独有的格式定义文件:tc_name.frm
还一个位于数据目录下共享的表空间文件:ibdata
2、innodb_file_per_table =ON,即使用独立表空间
每个表在数据库目录下存储两个文件:
tb_name.frm
tb_name.ibd
MyISAM:
每个表都在数据库目录下存储三个文件:
tb_name.frm
tb_name.MYD
tb_name.MYI
表空间:table space,由InnoDB管理的特有格式数据文件,内部可同时存储数据和索引
如何修改默认存储引擎:通过default_storage_engine服务变量实现
各存储引擎的特性:
InnoDB:
事务:事务日志
外键:
MVCC:
聚簇索引:
聚簇索引之外的其它索引,通常称为辅助索引
行级锁:间隙锁
支持辅助索引
支持自适应的hash索引
支持热备份
MyISAM:
全文索引:
压缩:用于实现数据仓库,能节约空间并提高性能
空间索引
表级锁
延迟更新索引
不支持事务、外键和行级锁
崩溃后无法安全恢复数据
适用场景: 只读数据、较小的表、能够容忍崩溃后的修复操作和数据丢失
ARCHIVE:
仅支持INSERT和SELECT,支持很好压缩功能
适用于存储日志信息,或其它按时间序列实现的数据采集类的应用:
不支持事务,不能很好的支持索引:
CSV:
将数据存储为CSV格式:不支持索引:仅适用于数据交换场景:
BLACKHOLE:
没有存储机制,任何发往此引擎的数据都会丢弃:其会记录二进制日志,因此,常用于多级复制架构中作中转服务器:
MEMORY:
保存数据在内存中,内存表:常用于保存中间数据,如周期性的聚合数据等:也用于实现临时表
支持hash索引,使用表级锁,不支持BLOB和TEXT数据类型
MRG_MYISAM:是MYISAM的一个变种,能够将多个MyISAM表合并成一个虚表:
NDB:是MySQL CLUSTER中专用的存储引擎
第三方的存储引擎:
XtraDB:增强的InnoDB,由Percona提供:
编译安装时,下载XtraDB的源码替换MySQL存储引擎中的InnoDB的源码
PBXT:MariaDB自带此引擎
支持引擎级别的复制、外键约束,对SSD磁盘提供适当支持:
支持事务、MVCC
TokuDB:使用Fractal Trees索引 ,使用于存储大数据,拥有很好的压缩比:已经引入MariaDB:
列式存储引擎:
Inforight:目前较有名的列式引擎,适用于海量数据存储场景,如PB级别,专为数据分析和数据仓库设计:
InfiniDB
MonetDB
LucidDB
开源社区存储引擎:
Aria:前身为Maria,可理解为增强版的MyISAM(支持崩溃后安全恢复,支持数据缓存)
Groona:全文索引引擎,Mroonga是基于Groona的二次开发版
OQGraph:由Open Query研发,支持图结构的存储引擎
SphinxSE:为Sphinx全文搜索服务器提供了SQL接口
Spider:能将数据切分成不同分片,比较高效透明地实现了分片,并支持在分片上支持并行查询:
如何选择?
是否需要事务
备份类型的支持
奔溃后的恢复
特有的特性
索引类型:
聚簇索引
辅助索引
B树索引
R树索引
hash索引
全文索引
1、查看存储引擎
mysql> SHOW ENGINES;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)
2、查看默认的存储引擎
mysql> SHOW VARIABLES LIKE '%engine%';
+---------------------------+--------+
| Variable_name | Value |
+---------------------------+--------+
| engine_condition_pushdown | ON |
| storage_engine | MyISAM |
+---------------------------+--------+
2 rows in set (0.00 sec)