MySQL数据库的引擎
数据库引擎,主要的为: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数据库的引擎相关推荐
- unicode表_Python数据库操作 Mysql数据库表引擎与字符集#学习猿地
# Mysql数据库表引擎与字符集 ![](./imgs/752951346A5F4E7EBDE362FA97107707.png) ### 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是 ...
- MySQL—05—MySQL如何处理SQL语句;MySQL数据库存储引擎介绍;
一. MySQL 中的执行计划 1 MySQL 执行计划 在 MySQL 中可以通过 explain 关键字模拟优化器,执行 SQL 语句,从而知道 MySQL 是 如何处理 SQL 语句的. 2 M ...
- 7.Mysql数据库表引擎与字符集
7.Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送 一段文本(MySQL语句),服务器进 ...
- 如何查看mysql数据库的引擎/MySQL数据库引擎详解
一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看: 看你的mysql现在已提供什么存储引擎: mysql> show engines; 看你的mysql当前默认的存储引擎: m ...
- mysql引擎修改_如何将MySQL数据库的引擎修改为InnoDB
如何将MySQL数据库的引擎修改为InnoDB 发布时间:2020-12-19 16:52:25 来源:亿速云 阅读:90 作者:Leah 本篇文章给大家分享的是有关如何将MySQL数据库的引擎修改为 ...
- MySQL数据库表引擎与字符集
Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送 一段文本(MySQL语句),服务器进程处 ...
- Mysql数据库存储引擎--转
原文地址:http://pangge.blog.51cto.com/6013757/1303893 简单介绍 存储引擎就是指表的类型.数据库的存储引擎决定了表在计算机中的存储方式.存储引擎的概念是My ...
- mysql数据库存储引擎和索引的描述_Mysql InnoDB引擎的索引与存储结构详解
前言 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的. 而MySql数据库提供了多种存储引擎.用户可以根据不同的需求为数据表选择不同的存储引擎,用户也 ...
- MySQL数据库储存引擎Inoodb一--记录储存结构
在开文我先说明一下,接下来的数据库知识文章都是在微信公众号"我们都是小青蛙"学习然后在通过自己的理解进行书写的.有兴趣的朋友可以去关注这个微信公众号.话不多说,我们在日常使用数据库 ...
- mysql数据库存储引擎
我们在<MySQL存储引擎有哪些>一节中介绍了 MySQL 中几种主要的存储引擎以及它们的使用特性,本节将介绍如何根据不同的应用场景去选择合适的存储引擎. 在使用 MySQL 数据库管 ...
最新文章
- 游戏开发--开源软件7--xith3D(java 3D引擎)
- jdk中的动态代理和cglib中动态代理的区别
- 5.1 vim—5.4vim编辑器
- 女生做产品经理好吗_产品经理如何做产品架构设计
- Tableau Desktop 2021最新安装 + 破解教程
- 视频ToneMapping(HDR转SDR)中的颜色空间转换问题(BT2020转BT709,YCbCr、YUV和RGB)
- Texas Instruments Website
- 淘宝自动回复机器人配置手册——利用旺旺分流针对性配置
- 中国流动人口动态监测调查数据(CMDS)2010-2018年
- 数组,异质结构以及指针的详解
- 晶振电路并联一个电阻作用
- 解决Ubuntu18.04网易云音乐打不开的问题
- 【服务器数据恢复】华为OceanStor服务器热备盘同步数据失败的数据恢复案例
- 如何在服务器搭建oa系统,如何在云主机搭建oa服务器
- 最新:亚马逊运营思路
- java 生成UUID字符串工具类 UUIDUtil
- 以下可用作c语言中的字符常量是,C语言-第3章简单的C程序设计 练习题.doc
- linux系统宝塔打开异常,宝塔面板进不去,且宝塔面板启动失败,重装宝塔遇见错误...
- 颜色的Pantone编码
- vue下载表格到本地