MySQL存储引擎是什么??
- Mysql的数据用不同的技术存储在文件(或内存)中。
- 不同的技术拥有不同的存储机制、索引技巧、锁定水平等等。
- 通过选择不同的技术获得不同的功能,从而改善应用的整体功能,而这些不同的技术和功能就是存储引擎(也称作表引擎)。
MySQL的存储引擎有哪些??
- 查看所有的存储引擎:MariaDB [(none)]> SHOW ENGINES \G;
- 查看默认当前的存储引擎:
MariaDB [(none)]> show variables like "default_storage_engine";
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)
INNODB和MyISAM存储引擎的区别
- 锁机制:INNODB支持行级锁;MySIAM支持表级锁(锁的颗粒度不同)
- 事务:INNODB支持;MyIASM不支持
- 外键:INNODB支持;MyISAM不支持
- MVCC:只有INNODB支持 (MVCC:多版本并发控制机制 -> 基于锁的并发机制)
应用场景:
- INNODB:可以进行事务回滚、并发控制等等;所以:并发高、数据一致、更新和删除操作较多、事务的完整提交和回滚
- MyISAM:啥都不支持,限制并发能力;所以:读操作和插入操作为主(多读少写)
- Memory:特点是将数据存放在内存中,索引的数据结构是Hash方式;而INNODB和MyISAM是B+树这种数据结构;
所以:针对于单记录查询来说,Memory效率更高,但是对范围查找速度远不如其他两种存储引擎;快速定位记录
如何指定存储引擎:
- 创建表的时候指定
create table student(id int(4),name char(8)) engine=xxx;
- 修改已经创建表的存储引擎:(尽量少操作,因为表中的数据量非常大的时候,改变存储引擎导致数据存储方式改变可能会导致堵塞)
alter table student engine=xxx;
- 指定默认存储引擎: 配置文件中添加对应参数
配置文件:/etc/my.cnf | /etc/my.cnf.d/server.cnf
[mysqld]
default‐storage‐engine=INNODB