目录
1、修改默认的存储引擎
前提说明:如果在创建表的语句中没有显式指定表的存储引擎的话,那就会默认使用 InnoDB 作为表的存储引擎。
存储引擎:它是负责对表中的数据进行提取和写入工作的,我们可以为不同的表设置不同的存储引擎, 也就是说不同的表可以有不同的物理存储结构,不同的提取和写入方式。
查看表中的具体属性:(可以查看到当前使用的存储引擎)
SHOW CREATE TABLE 表名
方式一:
如果我们想改变表的默认存储引擎的话,可以这样写启动服务器的命令行:
#例如:这里将默认的存储引擎设置为 MyISAM
SET DEFAULT_STORAGE_ENGINE = MyISAM;
方式二:
在创建表的时候进行指定:
#在创建表时指定引擎
CREATE TABLE 表名(
建表语句;
) ENGINE = 存储引擎名称;
方式三:
若表已经创建好,则可以使用 alter 语法进行修改:
ALTER TABLE 表名 ENGINE = 存储引擎名称;
2、关于 InnoDB 引擎
-
InnoDB 的优势
- InnoDB存储引擎在实际应用中拥有诸多优势,比如 操作便利、提高了数据库的性能、维护成本低等。如 果由于硬件或软件的原因导致服务器崩溃,那么在重启服务器之后不需要进行额外的操作。InnoDB崩溃 恢复功能自动将之前提交的内容定型,然后撤销没有提交的进程,重启之后继续从崩溃点开始执行
- InnoDB存储引擎在主内存中维护缓冲池,高频率使用的数据将在内存中直接被处理。这种缓存方式应用于多种信息,加速了处理进程。在专用服务器上,物理内存中高达80%的部分被应用于缓冲池。如果需要将数据插入不同的表中,可以设置外键加强数据的完整性。更新或者删除数据,关联数据将会被自动更新或删除。如果试图将数据插入从表,但在主表中没有对应的数据,插入的数据将被自动移除。如果磁盘或内存中的数据出现崩溃, 在使用脏数据之前,校验和机制会发出警告。当每个表的主键都设置合理时,与这些列有关的操作会被自动优化。插入、更新和删除操作通过做改变缓冲自动机制进行优化。 InnoDB不仅支持当前读写,也会缓冲改变的数据到数据流磁盘
- InnoDB的性能优势不只存在于长时运行查询的大型表。在同一列多次被查询时,自适应哈希索引会提高查询的速度。使用InnoDB可以压缩表和相关的索引,可以在不影响性能和可用性的情况下创建或删除索引 。对于大型文本和BLOB数据,使用动态行形式,这种存储布局更高效。
- 通过查询 INFORMATION_SCHEMA 库中的表可以监控存储引擎的内部工作。在同一个语句中,InnoDB表可以与其他存储引擎表混用。即使有些操作系统限制文件大小为2GB,InnoDB仍然可以处理。
- 当处理大数据量时,InnoDB兼顾CPU,以达到最大性能
-
具备外键支持功能的事务存储引擎
- MySQL从3.23.34a开始就包含InnoDB存储引擎。 大于等于5.5之后,默认采用InnoDB引擎
- InnoDB是MySQL的 默认事务型引擎 ,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)
- 除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎
- 除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑 InnoDB 引擎
- InnoDB是 为处理巨大数据量的最大性能设计
-
InnoDB 索引的 B+ 树结构:
- 这里是聚簇索引
B+ 树索引的注意事项:
- 根页面位置万年不动
- 内节点中目录项记录的唯一性
- 一个页面最少存储2条记录
- 这里是二级索引(非聚簇索引)
回表:我们根据这个以c2列大小排序的B+树只能确定我们要查找记录的主键值,所以如果我们想根据c2列的值查找到完整的用户记录的话,仍然需要到 聚簇索引 中再查一遍,这个过程称为 回表 。也就是说,根据c2列的值查询一条完整的用户记录需要使用到 2 棵B+树!
缺点:
- 对比MyISAM的存储引擎, InnoDB写的处理效率差一些 ,并且会占用更多的磁盘空间以保存数据和索引。
- MyISAM只缓存索引,不缓存真实数据;InnoDB不仅缓存索引还要缓存真实数据, 对内存要求较高 ,而且内存大小对性能有决定性的影响。
3、关于 MyISAM 引擎
-
MyISQM 的优势
- MyISAM 提供了大量的特性,包括全文索引、压缩、空间函数(GIS) 等
- 访问的速度快 ,一般用于对事务完整性没有要求或者以SELECT、INSERT为主的应用
- 针对数据统计有额外的常数存储。故而 count(*) 的查询效率很高
-
MyISAM 索引的数据结构
缺点:
MyISAM 不支持事务、行级 锁、外键 ,有一个毫无疑问的缺陷就是 “崩溃后无法安全恢复数据”
4、 InnoDB 与 MyISAM 引擎对比图