mysql系列(三) mysql存储引擎简介

1.InnoDB引擎: 

InnoDB是一种兼顾了高可靠性和高性能的通用存储引擎。在MySQL 5.7中,InnoDB是默认的MySQL存储引擎。除非配置了其他默认存储引擎,否则发出CREATE TABLE不带ENGINE= 子句的语句将创建一个InnoDB表。InnoDB表是基于聚簇索引建立的,其索引结构和MySQL的其他存储引擎有很大区别。内部做了很多优化,包括从磁盘读取数据时采用的可预测性预读。

InnoDB存储引擎的优势:(重要)

  1. 他的DML操作遵循ACID模型,并具有提交,回滚和奔溃恢复功能的事物,以保护用户数据;
  2. 行级锁和Oracle风格的一致性读取可提高多用户并发性和性能;
  3. InnoDB表格将您的数据排列在磁盘上以基于主键优化查询 。每个 InnoDB表都有一个称为聚集索引的主键索引,该索引数据结构以最小化主键查找的 I/O;
  4. 维护数据完整性, InnoDB支持FOREIGN KEY约束。使用外键检查插入,更新和删除操作,以确保它们不会导致不同表之间的不一致;
特征 支持
B树索引
备份/时间点恢复(在服务器中而不是在存储引擎中实现。)
集群数据库支持 没有
聚集索引
压缩数据
资料快取
加密数据 是(通过加密功能在服务器中实现;在MySQL 5.7和更高版本中,支持静态数据表空间加密。)
外键支持
全文搜索索引 是(MySQL 5.6和更高版本提供InnoDB对FULLTEXT索引的支持。)
地理空间数据类型支持
地理空间索引支持 是(MySQL 5.7和更高版本提供InnoDB对地理空间索引的支持。)
哈希索引 否(InnoDB在内部将哈希索引用于其自适应哈希索引功能。)
索引缓存
锁定粒度
MVCC
复制支持(在服务器中而不是在存储引擎中实现。)
储存限制 64TB
T树索引 没有
交易次数
更新数据字典的统计信息

2.MyISAM引擎:

在MySQL5.1版本之前,MyISAM是默认的存储引擎。MyISAM提供了大量的特性,包括全文检索、压缩、空间函数等, 但MyISAM不支持事务和行级锁,而有一个缺陷就是崩溃后无法安全恢复。虽然MyISAM有这样的缺陷,但并非一无是处。 对于只读的数据,或者表比较小,可以忍受修复操作,则依然可以继续使用MyISAM引擎;

MyISAM基于较旧(且不再可用)的ISAM存储引擎,但具有许多有用的扩展

MyISAM特性

  1.  加锁与并发:MyISAM对整张表加锁,而不是针对行。读取时会对需要读到的所有表加共享锁,写入则对表加排它锁。 在表有读取查询的同时,也可以往表中插入新的记录(被称为并发插入)。
  2. 修复:MySQL可以对MyISAM表进行手工或者自动检查和修复操作,但这里所说的修复和事务恢复以及崩溃修复是不同的概念。执行表的修复可能导致一些数据丢失,而且修复操作非常慢。可以通过CHECK TABLE tableName检查表的错误,如果有错误可以通过执行REPAIR TABLE tableName进行修复。
  3. 索引特性:对于MyISAM表,即使是BLOB和TEXT等长字段,也可以基于前500个字符创建索引。MyISAM也支持全文索引,这是一种基于分词创建的索引,可以支持复杂的查询。
  4. 延迟更新索引键:创建MyISAM表的时候,如果指定了DELAY_KEY_WRITE选项,在每次修改执行完成时,不会立刻 将修改的索引数据写入磁盘,而是会写到内存中的键缓冲区,只有在清理键缓冲区或者关闭表的时候才会将对应的索引块写 入到磁盘。可以极大的提升写入性能,但是数据库或者主机崩溃时会造成索引损坏,需要执行修复操作。
特征 支持
B树索引
备份/时间点恢复(在服务器中而不是在存储引擎中实现。)
集群数据库支持 没有
聚集索引 没有
压缩数据 是(仅在使用压缩行格式时才支持压缩MyISAM表。将压缩行格式与MyISAM一起使用的表是只读的。)
资料快取 没有
加密数据 是(通过加密功能在服务器中实现。)
外键支持 没有
全文搜索索引
地理空间数据类型支持
地理空间索引支持
哈希索引 没有
索引缓存
锁定粒度
MVCC 没有
复制支持(在服务器中而不是在存储引擎中实现。)
储存限制 256TB
T树索引 没有
交易次数 没有
更新数据字典的统计信息

3.Memory引擎      

MEMORY存储引擎(以前称为 HEAP)创建具有存储在存储器中的内容的专用的表。由于数据容易受到崩溃,硬件问题或电源中断的影响,因此只能将这些表用作临时工作区或只读缓存,以存储从其他表中提取的数据;

应用场景:

  1. 涉及瞬态,非关键数据的操作,例如会话管理或缓存。当MySQL服务器停止或重新启动时,MEMORY表中的数据将丢失。
  2. 内存中存储可实现快速访问和低延迟。数据量可以完全容纳在内存中,而不会导致操作系统换出虚拟内存页面。
  3. 只读或只读的数据访问模式(有限的更新)。
  4. NDB群集提供MEMORY与具有更高性能级别的引擎相同的功能 ,并提供以下功能不可用的其他功能 MEMORY: 行级锁定和多线程操作可减少客户端之间的争用。
  5. 即使包含写的语句混合也具有可伸缩性。
  6. 可选的磁盘支持操作,可确保数据持久性。 无共享架构和多主机操作,没有单点故障,可实现99.999%的可用性。
  7. 跨节点自动数据分发;应用程序开发人员无需制定自定义分片或分区解决方案。
  8. 不支持可变长度数据类型(包括 BLOB和 TEXT) MEMORY。

 

修改表的存储引擎    

1.ALTER TABLE tableName ENGINE = InnoDB 

发布了55 篇原创文章 · 获赞 3 · 访问量 5241

猜你喜欢

转载自blog.csdn.net/qq_38130094/article/details/103599497