数据库引擎,主要的为:MyISAM与InnoDB。
两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁。

InnoDB

该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表。当需要使用数据库事务时,该引擎当然是首选。由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率。但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。

MyISAM

MyISAM是MySQL默认的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键,因此当INSERT(插入)或UPDATE(更新)数据时即写操作需要锁定整个表,效率便会低一些。不过和Innodb不同,MyISAM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选择。

两种引擎的选择

大尺寸的数据集趋向于选择InnoDB引擎,因为它支持事务处理和故障恢复。数据库的大小决定了故障恢复的时间长短,InnoDB可以利用事务日志进行数据恢复,这会比较快。

Index——索引

MyIASM引擎的索引结构

MyISAM引擎的索引结构为B+Tree,其中B+Tree的数据域存储的内容为实际数据的地址,也就是说它的索引和实际的数据是分开的,只不过是用索引指向了实际的数据,这种索引就是所谓的非聚集索引
MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。

Innodb引擎的索引结构

Innodb的索引文件本身就是数据文件,即B+Tree的数据域存储的就是实际的数据,这种索引就是聚集索引。这个索引的key就是数据表的主键,因此InnoDB表数据文件本身就是主索引。

两者区别

1、InnoDB的数据文件本身就是索引文件。
2、InnoDB的所有辅助索引都引用主键作为data域

例如知道了InnoDB的索引实现后,就很容易明白为什么不建议使用过长的字段作为主键,因为所有辅助索引都引用主索引,过长的主索引会令辅助索引变得过大。再例如,用非单调的字段作为主键在InnoDB中不是个好主意,因为InnoDB数据文件本身是一颗B+Tree,非单调的主键会造成在插入新记录时数据文件为了维持B+Tree的特性而频繁的分裂调整,十分低效,而使用自增字段作为主键则是一个很好的选择。

参考地址:
http://www.2cto.com/database/201503/385669.html
http://www.cnblogs.com/0201zcr/p/5296843.html

MySQL数据库的引擎相关推荐

  1. unicode表_Python数据库操作 Mysql数据库表引擎与字符集#学习猿地

    # Mysql数据库表引擎与字符集 ![](./imgs/752951346A5F4E7EBDE362FA97107707.png) ### 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是 ...

  2. MySQL—05—MySQL如何处理SQL语句;MySQL数据库存储引擎介绍;

    一. MySQL 中的执行计划 1 MySQL 执行计划 在 MySQL 中可以通过 explain 关键字模拟优化器,执行 SQL 语句,从而知道 MySQL 是 如何处理 SQL 语句的. 2 M ...

  3. 7.Mysql数据库表引擎与字符集

    7.Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送 一段文本(MySQL语句),服务器进 ...

  4. 如何查看mysql数据库的引擎/MySQL数据库引擎详解

    一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看: 看你的mysql现在已提供什么存储引擎: mysql> show engines; 看你的mysql当前默认的存储引擎: m ...

  5. mysql引擎修改_如何将MySQL数据库的引擎修改为InnoDB

    如何将MySQL数据库的引擎修改为InnoDB 发布时间:2020-12-19 16:52:25 来源:亿速云 阅读:90 作者:Leah 本篇文章给大家分享的是有关如何将MySQL数据库的引擎修改为 ...

  6. MySQL数据库表引擎与字符集

    Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送 一段文本(MySQL语句),服务器进程处 ...

  7. Mysql数据库存储引擎--转

    原文地址:http://pangge.blog.51cto.com/6013757/1303893 简单介绍 存储引擎就是指表的类型.数据库的存储引擎决定了表在计算机中的存储方式.存储引擎的概念是My ...

  8. mysql数据库存储引擎和索引的描述_Mysql InnoDB引擎的索引与存储结构详解

    前言 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的. 而MySql数据库提供了多种存储引擎.用户可以根据不同的需求为数据表选择不同的存储引擎,用户也 ...

  9. MySQL数据库储存引擎Inoodb一--记录储存结构

    在开文我先说明一下,接下来的数据库知识文章都是在微信公众号"我们都是小青蛙"学习然后在通过自己的理解进行书写的.有兴趣的朋友可以去关注这个微信公众号.话不多说,我们在日常使用数据库 ...

  10. mysql数据库存储引擎

    我们在<MySQL存储引擎有哪些>一节中介绍了 MySQL 中几种主要的存储引擎以及它们的使用特性,本节将介绍如何根据不同的应用场景去选择合适的存储引擎.   在使用 MySQL 数据库管 ...

最新文章

  1. 游戏开发--开源软件7--xith3D(java 3D引擎)
  2. jdk中的动态代理和cglib中动态代理的区别
  3. 5.1 vim—5.4vim编辑器
  4. 女生做产品经理好吗_产品经理如何做产品架构设计
  5. Tableau Desktop 2021最新安装 + 破解教程
  6. 视频ToneMapping(HDR转SDR)中的颜色空间转换问题(BT2020转BT709,YCbCr、YUV和RGB)
  7. Texas Instruments Website
  8. 淘宝自动回复机器人配置手册——利用旺旺分流针对性配置
  9. 中国流动人口动态监测调查数据(CMDS)2010-2018年
  10. 数组,异质结构以及指针的详解
  11. 晶振电路并联一个电阻作用
  12. 解决Ubuntu18.04网易云音乐打不开的问题
  13. 【服务器数据恢复】华为OceanStor服务器热备盘同步数据失败的数据恢复案例
  14. 如何在服务器搭建oa系统,如何在云主机搭建oa服务器
  15. 最新:亚马逊运营思路
  16. java 生成UUID字符串工具类 UUIDUtil
  17. 以下可用作c语言中的字符常量是,C语言-第3章简单的C程序设计 练习题.doc
  18. linux系统宝塔打开异常,宝塔面板进不去,且宝塔面板启动失败,重装宝塔遇见错误...
  19. 颜色的Pantone编码
  20. vue下载表格到本地

热门文章

  1. 遥感建筑物提取数据集
  2. 数字信号处理matlab相关实验
  3. ubuntu16怎么升级到ubuntu18
  4. Unity技术手册 - 粒子基础主模块属性-上
  5. jQuery 初学者入门教程
  6. LeetCode 69: Sqrt(x) 求根号x(牛顿迭代法和二分查找法)
  7. 微信小程序开发之页面布局
  8. 数字逻辑-头歌实训作业-译码器设计与应用(Logisim)
  9. 全球及中国游戏方向盘行业营销动态及销售渠道研究报告(2022-2027)
  10. 存储系统——基本概念