山西网站建设 哪家好,极简风格 wordpress,做网页找什么公司,zencart网站一、存储引擎
1.1、概述 大家可能没有听说过存储引擎#xff0c;但是一定听过引擎这个词#xff0c;引擎就是发动机#xff0c;是一个机器的核心组件。 比如#xff0c;对于舰载机、直升机、火箭来说#xff0c;它们都有各自的引擎#xff0c;引擎是它们最为核心的组件。…一、存储引擎
1.1、概述 大家可能没有听说过存储引擎但是一定听过引擎这个词引擎就是发动机是一个机器的核心组件。 比如对于舰载机、直升机、火箭来说它们都有各自的引擎引擎是它们最为核心的组件。而我们在选择引擎的时候需要在合适的场景选择合适的存储引擎就像在直升机上不能选择舰载机的引擎一样。 对于存储引擎也是一样它是MySQL数据库的核心我们也需要在合适的场景下选择合适的存储引 擎。 存储引擎就是存储数据、建立索引、更新 / 查询数据等技术的实现方式 。存储引擎是基于表的而不是基于库的所以存储引擎也可被称为表类型。我们可以在创建表的时候来指定选择的存储引擎如果创建表时没有指定存储引擎那么系统将自动地选择默认的存储引擎。 1.2、分类
1.2.1、概述 不同的数据库有不同的存储引擎对于MySQL来说共有11种不同类型的存储引擎其中我们比较熟知的是InnoDB引擎和MyISAM引擎可以使用如下sql脚本查看MySQL支持的存储引擎有哪些 show engines; 1.2.2、InnoDB引擎 概述 InnoDB是一款兼顾高可靠性和高性能的通用存储引擎在 MySQL 5.5 之后 InnoDB是MySQL默认的存储引擎。 特点 1DML 操作遵循 ACID 模型支持事务 2行级锁提高并发访问性能 3支持外键FOREIGN KEY约束保证数据的完整性和正确性 文件位置 show variables like datadir; innodb_file_per_table默认值 show variables like innodb_file_per_table; 结论通过上述指令的执行结果可以看出默认情况下innodb_file_per_table的值是默认开启的这就意味着对于使用InnoDB引擎的表每一个表都对应着一个ibd文件例如前边几个系列的文章中vhr库中使用的表在/var/lib/mysql下的存储结构是什么样的如下 1.2.3、MyISAM引擎 概述 MyISAM是 MySQL 早期默认的存储引擎。 特点 1不支持事务不支持外键 2不支持行锁支持表锁 3访问速度快 案例创建my_isam_account表建表时指定存储引擎为MyISAM观察数据库中的文件信息 DROP TABLE IF EXISTS my_isam_account; CREATE TABLE my_isam_account ( id int NOT NULL AUTO_INCREMENT COMMENT ID, name varchar(10) DEFAULT NULL COMMENT 姓名, money double(10, 2) NULL DEFAULT NULL COMMENT 余额, PRIMARY KEY (id) USING BTREE ) ENGINE MyISAM CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT MyISAM账户表 ROW_FORMAT Dynamic; MyISAM文件说明 xxx.MYD存储数据 xxx.MYI存储索引 xxx.sdi存储表的结构信息 1.2.4、MEMORY引擎 概述 MEMORY引擎的表数据是存储在内存中的由于受到硬件问题、断电问题的影响只能将这些表作为临时表或缓存使用 特点 1内存存放断电即失 2hash索引 案例创建memory_account表建表时指定存储引擎为MEMORY观察数据库中的文件信息 DROP TABLE IF EXISTS memory_account; CREATE TABLE memory_account ( id int NOT NULL AUTO_INCREMENT COMMENT ID, name varchar(10) DEFAULT NULL COMMENT 姓名, money double(10, 2) NULL DEFAULT NULL COMMENT 余额, PRIMARY KEY (id) USING BTREE ) ENGINE Memory CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT Memory账户表 ROW_FORMAT Dynamic; 注意事项引擎要写成Memory否则报错 1.2.5、InnoDB vs MyISAM vs Memory 1.3、如何选择 在选择存储引擎时应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统还可以根据实际情况选择多种存储引擎进行组合。 InnoDB是MySQL的默认存储引擎支持事务、外键。如果应用对事务的完整性有比较高的要求在并发条件下要求数据的一致性数据操作除了插入和查询之外还包含很多的更新、删除操作那么InnoDB存储引擎是比较合适的选择。 如果应用是以读操作和插入操作为主只有很少的更新和删除操作并且对事务的完整性、并发性要求不是很高那么选择MyISAM存储引擎是非常合适的。 使用Memory引擎创建的表会将所有数据保存在内存中访问速度快通常用于临时表及缓存缺陷就是对表的大小有限制太大的表无法缓存在内存中而且无法保障数据的安全性。