MySQL存储引擎简介

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了MySQL存储引擎简介脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一、前言

本文主要介绍MySQL主要存储引擎MyISam和InnoDB的区别,特性,优缺点,应用等内容。同时举例介绍了MyISAM和InnoDB引擎的修改切换方法
 

二、MySQL存储引擎种类

MySQL存储引擎有MyISAM、InnoDB、MERGE、MEMORY、FEDERATED、ArchIVE、CSV、BLACKHOLE等

在此主要介绍今天我们常用的MyISAMInnoDB

1、MyISAM

MyISAM管理非事务表,它提供高速存储和检索,以及全文搜索能力,MySQL 5.5版本以前,它是默认引擎。

 

MyISAM主要特性:

  • 不支持事务,宕机时会破坏表;

  • 使用较小的内存和磁盘空间,执行速度比 Innodb类型更快;

  • 基于表的锁,表级锁;

  • mysql 只缓存index索引, 数据由OS缓存。

 

MyISAM适用于:

  • 日志系统

  • 大部分都是读的操作。 比如:门户网站,企业站点,个人博客,www.hello2099.COM

  • 没有事务 ,低并发的应用。

 

2、InnoDB

MySQL发展到今天,InnoDB引擎已经作为绝对的主力,除了像大数据量分析等比较特殊领域需求外,它适用于众多场景。InnoDB是MySQL下使用最广泛的引擎,它是基于MySQL的高可扩展性和高性能存储引擎,从5.5版本开始,它已经成为了默认引擎。

 

InnoDB主要特性:

  • 支持ACID,简单地说就是支持事务完整性、一致性;

  • 支持行锁,以及类似oracle的一致性读,多用户并发;

  • 独有的聚集索引主键设计方式,可大幅提升并发读写性能;

  • 支持外键;

  • 支持崩溃数据自修复;

 

InnoDB适用于:

  • 需要事务的应用

  • 高并发的应用

  • 需要自动灾难恢复的应用

  • 较快速的基于主键的操作的应用

 

注意问题

  1. 所有InnoDB数据表都创建一个和业务无关的自增数字型作为主键,对保证性能很有帮助;

  2. 杜绝使用text/blob,确实需要使用的,尽可能拆分出去成一个独立的表;

  3. 时间建议使用 TIMESTAMP 类型存储;

  4. ipv4 地址建议用 INT UNSIGNED 类型存储;

  5. 性别等非是即非的逻辑,建议采用 TINYINT 存储,而不是 CHAR(1),bool;

  6. 存储较长文本内容时,建议采用JSON/BSON格式存储;

 

3、MyISAM与InnoDB的区别

  • MyISAM不支持事务,InnoDB是事务类型的存储引擎当我们的表需要用到事务支持的时候,那肯定是不能选择MyISAM了。

  • MyISAM只支持表级锁, InnoDB支持行级锁和表级锁默认为行级锁。

表级锁:直接锁定整张表,在锁定期间,其他进程无法对该表进行写操作,如果设置的是写锁,那么其他进程读也不允许。

  • MyISAM引擎不支持外键,InnoDB支持外键。

  • InnoDB是为处理巨大数据量时的最大性能设计,它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。

  • MyISAM支持全文索引(FULLTEXT),InnoDB不支持。

  • MyISAM引擎的表的查询、更新、插入的效率要比InnoDB高

 

MySQL存储引擎简介

 

 

三、如何选择合适的存储引擎

选择标准可以分为:

(1)是否需要支持事务;(2)是否需要使用热备;(3)崩溃恢复:能否接受崩溃;(4)是否需要外键支持;

然后按照标准,选择对应的存储引擎即可

 

 

 

参考博客:

https://www.hello2099.com/647.htML

 

脚本宝典总结

以上是脚本宝典为你收集整理的MySQL存储引擎简介全部内容,希望文章能够帮你解决MySQL存储引擎简介所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。