VPS测评 VPS推荐 VPS优惠
Linux运维

存储引擎myisam和innodb的区别

MySQL使用各种不同的技术把数据存储在文件中。这些技术称为存储引擎。这些存储引擎具有不同的功能和能力(存储机制、索引技巧、锁定水平等)。MyISAM虽然理论上可以存储更多的数据,但是它的功能比InnoDB少了很多。

MyISAM 存储引擎

引擎特点:

  • 不支持事务
  • 表级锁定
  • 读写相互阻塞,写入不能读,读时不能写
  • 只缓存索引
  • 不支持外键约束
  • 不支持聚簇索引
  • 读取数据较快,占用资源较少
  • 不支持MVCC(多版本并发控制机制)高并发
  • 崩溃恢复性较差
  • MySQL5.5.5 前默认的数据库引擎

适用场景:

  • 只读(或者写较少)
  • 表较小(可以接受长时间进行修复操作)

引擎文件:

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

InnoDB 引擎

引擎特点:

  • 支持事务,适合处理大量短期事务
  • 行级锁
  • 读写阻塞与事务隔离级别相关
  • 可缓存数据和索引
  • 支持外键
  • 支持聚簇索引
  • 崩溃恢复性更好
  • 支持MVCC高并发
  • 从MySQL5.5后支持全文索引
  • 从MySQL5.5.5开始为默认的数据库引擎

引擎文件:

  • tb_name.ibd(表的数据和索引存储在一起)

管理存储引擎

查看mysql支持的存储引擎:

show engines;

查看当前默认的存储引擎:

show variables like '%storage_engine%';

配置文件设置默认的存储引擎:

default_storage_engine= InnoDB

查看库中所有表使用的存储引擎:

show table status from db_name;

查看库中指定表的存储引擎:

show table status like 'tb_name';
show create table tb_name;

设置表的存储引擎:

CREATE TABLE tb_name(... ) ENGINE=InnoDB;
ALTER TABLE tb_name ENGINE=InnoDB;
未经允许不得转载:青蛙主机 » 存储引擎myisam和innodb的区别

VPS相关常用工具

PING测试工具自用毛子接码站