MySQL中表的存储引擎如何选择

MySQL默认支持多种存储引擎

🍐多种存储引擎,以适应于不一样领域的数据库应用须要,用户能够选择不一样的存储引擎提升应用的效率,提供灵活的存储,用户甚至能够按照本身的须要定制和使用本身的存储引擎。数据库

🍐MySQL5.0支持的存储引擎包括MyISAM、InnoDB、MEMORY、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED,其中InnoDB和BDBD提供事务安全表,其余存储引擎都市非事务安全表。缓存

🍐建立新表时若是不指定存储引擎,系统会使用默认存储引擎。MySQL5.5以前的默认存储引擎是MYISAM,5.5以后改成InnoDB。(个人是8.0版,以下图)安全

创表时对存储引擎的操做

🍐建立表ai(存储引擎为MYISAM),表country(存储引擎为InnoDB):并发

 🍐使用ALTER TABLE语句,将一个已经存在的表修改为其余的存储引擎。下面的例子介绍了如何将表ai从MyISAM存储引擎修改到InnoDB存储引擎.性能

 

 

 嗯哼,怎么肥四啊???spa

 

 

 嗯哼,怎么肥四啊???好迷,暂未解决插件

 

 经常使用存储引擎的特性。

 

 

 

🎂MyISAM

🍐不支持事务,也不支持外键。对象

🍐优点访问速度快,对事务完整性没有要求,以SELECT、INSERT为主的应用基本用这个引擎来建立。blog

🍐支持三种不一样的存储格式分别是:排序

  • 静态表
  • 动态表(动态表中包含变长字段,记录不是固定长度的,这样存储的优势是占用的空间相对较少,可是频繁地更新和删除记录会产生碎片,须要按期执行OPTIMIZE TABLE语句或myisamchk-r命令来改善性能,而且在出现故障时恢复相对比较困难。)
  • 压缩表(空间小)
  • 注:静态表是默认的存储格式,存储迅速,容易缓存,占空间大。数据存储时混按照列宽补全空格,但在访问时不会获得后面这些空格。特别注意!!!

 

 

 

 

🎂InnoDB

🍐InooDB存储引擎具备提交,回滚,和崩溃恢复能力的事务安全。

 

  • 自动增加列:1.自动增加列能够手动插入,可是若是插入的值为空或者为0,那么实际插入的为自动增加以后的值。2.对于InnoDB表,自动增加列必须是索引。若是是组合索引,也必须是组合索引的第一列,可是对于 MyISAM 表,自动增加列能够是组合索引的其余列,这样插入记录后,自动增加列是按照组合索引的前面几列进行排序后递增的。
  • 1.手动插入示例
  • 2
  •  

  • 外键约束(MySQL支持外键的存储引擎只有InnoDB,在建立外键的时候,要求父表必须有对应的索引,子表在建立外键的时候也会自动建立对应的索引)
  • 存储方式1.共享表空间存储 2.多表空间存储。(多表空间的表的参数生效后,只对新建的表生效)。

🎂MERGE

MEMORY类型的表访问很是地快,由于它的数据是放在内存中的,而且默认使用HASH索引,可是一旦服务关闭,表中的数据就会丢失掉。

MEMORY 类型的存储引擎主要用于那些内容变化不频繁的代码表,或者做为统计操做的中间结果表,便于高效地对中间结果进行分析并获得最终的统计结果。对存储引擎为MEMORY的表进行更新操做要谨慎,由于数据并无实际写入到磁盘中,因此必定要对下次从新启动服务后如何得到这些修改后的数据有所考虑

 如何选择合适的存储引擎

 🎂MyISAM:默认的MySQL插件式存储引擎。若是应用是以读操做和插入操做为主,只有不多的更新和删除操做,而且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是很是适合的。MyISAM是在Web、数据仓储和其余应用环境下最常使用的存储引擎之一。
🎂InnoDB:用于事务处理应用程序,支持外键。若是应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操做除了插入和查询之外,还包括不少的更新、删除操做,那么InnoDB存储引擎应该是比较合适的选择。InnoDB存储引擎除了有效地下降因为删除和更新致使的锁定,还能够确保事务的完整提交(Commit)和回滚(Rollback),对于相似计费系统或者财务系统等对数据准确性要求比较高的系统,InnoDB都是合适的选择。
🎂MEMORY:将全部数据保存在 RAM 中,在须要快速定位记录和其余相似数据的环境下,可提供极快的访问。MEMORY 的缺陷是对表的大小有限制,太大的表没法缓存在内存中,其次是要确保表的数据能够恢复,数据库异常终止后表中的数据是能够恢复的。MEMORY表一般用于更新不太频繁的小表,用以快速获得访问结果。
🎂MERGE:用于将一系列等同的MyISAM表以逻辑方式组合在一块儿,并做为一个对象引用它们。MERGE表的优势在于能够突破对单个MyISAM表大小的限制,而且经过将不一样的表分布在多个磁盘上,能够有效地改善MERGE表的访问效率。这对于诸如数据仓储等VLDB环境十分适合。

相关文章
相关标签/搜索