5.MySQL存储引擎
MySQL存储引擎
-
什么是存储引擎
-
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
-
这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。
-
MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。
-
选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储。
-
遗憾的是,其它类型的数据库解决方案采取的“一个尺码满足一切需求”的方式意味着你要么就牺牲一些性能,要么你就用几个小时甚至几天的时间详细调整你的数据库。使用MySQL,我们仅需要修改我们使用的存储引擎就可以了。
-
-
MySQL支持的存储引擎
-
MySQL支持的存储引擎包括InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、FEDERATED、MRG_MYISAM、ARCHIVE、PERFORMANCE_SCHEMA。其中NDB和InnoDB提供事务安全表,其他存储引擎都是非事务安全表。
-
查看当前数据库存储引擎
show variables like "default_storage_engine";
-
查看当前数据库支持的存储引擎
show engines \G;
-
-
存储引擎的一些概念
-
事务:为保证数据完整性,将多个操作组合成一个原子性操作。原子性操作不可再进行拆分,从开启事务、中间的多个操作,一直到最后提交事务,被当成一个整体,这个整体执行成功才算成功,有一个操作不成功都不算成功,之前的操作也都全部回滚。保证数据安全。事务的四大特性分别是:原子性、一致性、隔离性、持久性。
begin # 开启事务 select语句 for update # for update表示加上行级锁 # 其他SQL语句 commit # 提交事务
-
行级锁:在修改数据的时候只锁定某一行,在修改少量行数据的时候使用。
-
表级锁:在修改数据的时候锁定整张表,在修改大量行数据的时候使用。
-
外键:将表中的固定重复信息,单独建立在一张表中,通过外键的形式将两张表进行关联,同时约束两张表的关联字段不能随意添加和删除,因此能够极大的降低数据增删改的出错率。
-
-
常用存储引擎及适用场景
-
InnoDB(MySQL 5.6以后默认的存储引擎,最常用)
-
数据和索引存储在一起,分为两个文件,数据索引和表结构
-
数据持久化(存在硬盘中)
-
支持事务
-
支持行级锁
-
支持表级锁
-
支持外键
-
-
MyISAM(MsSQL 5.5以前默认的存储引擎)
-
数据和索引分开存储,分为三个文件,数据、索引和表结构
-
数据持久化(存在硬盘中)
-
不支持事务
-
不支持行级锁
-
支持表级锁
-
不支持外键
-
-
MEMORY
-
数据存在内存中,只有一个文件,表结构
-
断电数据消失
-
不支持事务
-
不支持行级锁
-
不支持表级锁
-
不支持外键
-
-