MySQL之存储引擎
InnoDB引擎特点
1、行级锁
2、支持事务,适合处理大量短期事务
3、读写阻塞与事务隔离级别相关
4、可缓存数据和索引
5、支持聚簇索引
6、崩溃恢复性更好
7、支持MVCC高并发
8、从MySQL5.5后支持全文索引
9、从MySQL5.5.5开始为默认的数据库引擎
默认所有InnoDB表的数据和索引放置于同一个表空间中
表空间文件:datadir定义的目录下
数据文件:ibddata1, ibddata2, ...
每个表单独使用一个表空间存储表的数据和索引
启用方法:编辑配置文件innodb_file_per_table=ON
两类文件放在数据库独立目录中
数据文件(存储数据和索引):tb_name.ibd
表格式定义:tb_name.frm
MyISAM引擎特点
1、不支持事务
2、表级锁定
3、读写相互阻塞,写入不能读,读时不能写
4、只缓存索引
5、不支持外键约束
6、不支持聚簇索引
7、读取数据较快,占用资源较少
8、不支持MVCC(多版本并发控制机制)高并发
9、崩溃恢复性较差
10、MySQL5.5.5前默认的数据库引擎
11、MyISAM存储引擎适用场景
只读(或者写较少)、表较小(可以接受长时间进行修复操作)
12、MyISAM引擎文件
tbl_name.frm 表格式定义
tbl_name.MYD 数据文件
tbl_name.MYI 索引文件
show engines;
2、查看当前默认的存储引擎
show variables like ‘%storage_engine%‘;
3、设置默认的存储引擎
vim /etc/my.conf
[mysqld]
default_storage_engine= InnoDB
4、查看库中所有表使用的存储引擎
show table status from db_name;
5、查看库中指定表的存储引擎
show table status like ‘ tb_name ‘;
show create table tb_name;
6、设置表的存储引擎:
CREATE TABLE tb_name(... ) ENGINE=InnoDB;
ALTER TABLE tb_name ENGINE=InnoDB;