存储引擎
MySQL支持多种存储引擎(Storage Engine),每种引擎都有其自身的特点和适用场景。存储引擎是MySQL架构中的一个核心组件,它负责数据的物理存储、索引结构、并发控制以及事务处理。以下是一些常见的MySQL存储引擎以及它们的特点:
MyISAM
MyISAM:MyISAM既不支持事务、也不支持外键、其优势是访问速度快,但是表级别的锁定限制了它在读写负载方面的性能,因此它经常应用于只读或者以读为主的数据场景。
InnoDB
在 MySQL 5.5 及以后版本后,MySQL 选择使用 InnoDB为默认存储引擎。事务型数据库的首选引擎,支持ACID事务,支持行级锁定。
MEMORY
- 特点:将数据存储在内存中,非持久性,支持表级锁、快速读写操作。
- 适用场景:需要非常快速的临时存储、缓存、临时数据存储。
MyISAM和InnoDB区别
MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改的应用。其主要区别如下:
- 事务支持:InnoDB 支持事务,MyISAM 不支持。
- 外键约束:InnoDB 支持外键,而 MyISAM 不支持。
- 锁级别:InnoDB支持表级锁、行级锁,默认为行级锁;而 MyISAM 仅支持表级锁。
- 主键:InnoDB 必须要有主键,MyISAM可以没有主键
- 重建表:清空整个表时,InnoDB 是一行一行删除,MyISAM 则会重建表。
- **全文搜索:**InnoDB不直接支持全文搜索索引;MyISAM支持全文搜索索引,适用于文本搜索应用。
- 性能:InnoDB适合高并发读写需求的应用,对于写操作性能较好;MyISAM适合读密集型应用,对于读操作性能较好。
其他存储引擎
CSV: 逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个.CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。
BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。
Archive:只有INSERT和SELECT操作,Archive非常适合存储归档数据,如记录日志信息可以使用Archive。
innodb什么时候使用表锁
只有在你增删改查时匹配的条件字段带有索引时,innodb才会使用行级锁。行级锁锁的是索引。
在你增删改查时匹配的条件字段不带有索引时,innodb使用的将是表级锁。
如何更改存储引擎
首先存储引擎是表级别的。
修改前最好备份一下表和数据
## 查看存储引擎类型
SHOW TABLE STATUS LIKE 'your_table_name';
## 备份
CREATE TABLE new_table_name SELECT * FROM your_table_name;
## 修改引擎类型
ALTER TABLE your_table_name ENGINE = InnoDB;