网站建设 微信公众号运营,陈仓网站建设,网站后台管理系统下载,品牌网站建设公司推荐个人主页#xff1a;兜里有颗棉花糖 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】#x1f388; 本专栏旨在分享学习MySQL的一点学习心得#xff0c;欢迎大家在评论区讨论#x1f48c; 目录 一、什么… 个人主页兜里有颗棉花糖 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】 本专栏旨在分享学习MySQL的一点学习心得欢迎大家在评论区讨论 目录 一、什么是存储引擎二、InnoDB三、MyISAM四、Memory五、存储引擎选择 一、什么是存储引擎
概念存储引擎作为MySQL中的核心部分它是MySQL数据库中建立索引、更新/查询数据等技术的实现方式不同的存储引擎建立索引、更新/查询数据的机制是不同的。另外存储引擎是基于数据库表的而不是基于数据库的即一个数据库的多张表是可以选择不同存储引擎的故存储引擎也被称之为表类型。 我们通过建表语句来看一下存储引擎 创建表的时候我们是可以指定存储引擎的如果不指定的话默认的存储引擎就是InnoDB。
语法1创建表时要指定存储引擎语法格式如下
create table 表名(字段1 字段1类型 [comment 字段1注释],...字段n 字段n类型 [comment 字段n注释]
) engine innodb [comment 表注释];语法2查看当前数据库支持的存储引擎 语法格式show engines; 执行结果如下 二、InnoDB
概念InnoDB时一种兼顾高可靠性和高性能的通用存储引擎在MySQL5.5之后InnoDB是默认的MySQL存储引擎。
InnoDB特点
DML操作遵循ACID模型支持事务行级锁提高并发访问性能支持外键FOREIGN KEY约束保证数据的完整性和正确性。
文件 xxx.ibdxxx代表的是表名InnoDB引擎的每张表都会对应这样一个表空间文件存储该表的表结构frm、sdi、数据和索引。 参数innodb_file_per_table
当启用该选项时InnoDB会为数据库中的每个表创建单独的表空间文件。每个表都存储在自己的.ibd文件中而不是存储在共享的系统表空间中。 输入命令show variables like innodb_file_per_table; 结果演示 我们来看一下idb文件中存放着什么请看 InnoDB中的逻辑存储结构如下
TableSpace表空间Seqment段Extent区Page页Row行
三、MyISAM
MyISAM是MySQL中早期的默认存储引擎。
MyISAM特点
不支持事务不支持外键支持表锁不支持行锁访问速度快 MyISAM存储引擎表在磁盘中所涉及到的文件有三个请看 sdi文件存储的是表结构的信息。myd文件存储的是表中的数据。myi文件存储的是索引。
四、Memory
Memory存储引擎的表数据是存储在内容中的所以会受到硬件问题、或者断电的影响所以只能将这些表作为临时表或者缓存使用。
特点
内存存放hash索引默认
文件
xxx.sid存储表结构信息没有索引文件和数据文件因为数据都存放在内存中。 五、存储引擎选择
我们在选择存储引擎时应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统还可以根据实际情况选择多种存储引擎进行组合。
InnoDB是MySQL中默认的存储引擎支持事务、外键。如果应用对事务的完整性有比较高的要求在并发条件下要求数据的一致性数据操作除了插入和查询之外还包括很多的更新、删除操作这时我们选择InnoDB存储引擎比较合适。MyISAM如果应用是以读操作和插入操作为主只有很少的更新和删除操作并且对事务的完整性、并发性要求不是很高那么选择MySIAM存储引擎是很合适的。比如日志、评论等。MEMORY将所以的数据保存在内存中访问速度快通常用于临时表以及缓存。MEMORY的缺陷就是对表的大小有限制太大的表无法存储在内存中注意内存和磁盘是有所区别的磁盘中存储几个G的数据完全可以但是如果让内存中存储几个G的数据的代价是很大的而且无法保障数据的安全。
好了以上就是本文的全部内容了就到这里吧再见啦友友们