什么是存储引擎
MYSQL可以将数据以不同的技术存储到文件(内存)中,这种技术就称之为存储引擎。
每一种存储引擎都使用了不同存储机制、索引技巧、锁定水平、最终提供广泛且不同的功能。
MYSQL支持的存储引擎
- InnoDB
- MyISAM
- Memory
- CSV
- Archive
不同存储引擎的区别
特点 | MyISAM | InnoDB | Memory | Archive |
---|---|---|---|---|
存储限制 | 256TB | 64TB | 有 | 无 |
事务安全 | - | 支持 | - | - |
支持索引 | 支持 | 支持 | 支持 | - |
锁颗粒 | 表锁 | 行锁 | 表锁 | 行锁 |
数据压缩 | 支持 | - | - | 支持 |
支持外键 | - | 支持 | - | - |
如何选择存储引擎
通常我们常用的就是InnoDB和MyISAM这两种存储引擎。
- MyISAM:适用于事务的处理不多的情况。
- InnoDB:适用于事务处理较多,而且有外间支持的情况。
- MyISAM:存储限制可达256TB,支持索引,表记锁定,数据压缩。
- InnoDB:存储限制可达64TB,支持事务和外键,锁颗粒为行级锁定。
如何设置数据库中存储引擎
- 配置文件
- 通过修改MYSQL配置文件实现
-default-storage-engine = 引擎名称
- 通过修改MYSQL配置文件实现
- 命令行
- 通过创建表命令
mysql> create table teacher( -> id int(11) -> )engine=MyISAM; Query OK, 0 rows affected (0.01 sec) 可以通过show create table teacher;命令进行查看存储引擎
- 通过数据表命令实现
alter table teacher engine=InnoDB;
- 通过创建表命令
关联知识点
索引
普通索引、唯一索引、全文索引、btree索引、hash索引…
事务
四大特性(ACID):
- 原子性(Atomicity)
事务是一个不可分割的单位,事务中的所有SQL等操作要么都发生,要么都不发生。 - 一致性(Consistency)
事务发生前和发生后,数据的完整性必须保持一致。 - 隔离性(Isolation)
当并发访问数据库时,一个正在执行的事务在执行完毕前,对应其他的会话是不可见的,多个并发事务之间的数据是相互隔离的。备份的参数 --single-transaction - 持久性(Durability)
一个事务一旦被提交,它对数据库中的数据改变就是永久性的。如果出了错误,事务也不允许撤销,只能通过“补偿性事务”