广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据库引擎和索引
  • 662
分享到

MySQL数据库引擎和索引

2024-04-02 19:04:59 662人浏览 八月长安
摘要

一、Mysql 数据库引擎:1. Innodb引擎:Innodb引擎提供了对数据库ACID事务的支持,并且实现了sql标准的四种隔离级别。在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的

一、Mysql 数据库引擎:

1. Innodb引擎:
Innodb引擎提供了对数据库ACID事务的支持,并且实现了sql标准的四种隔离级别。

在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的修改,哪些是在事务内和事务间可见的,哪些是不可见的。较低级别的隔离通常可以执行更高的并发,系统的开销也更低。

四种隔离级别:
未提交读(Read uncommitted):在未提交读级别,事务中的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也被称为脏读(Dirty Read)。
这个级别会导致很多问题,从性能上来说,未提交读不会比其他的级别好太多,但是缺乏其他级别的很多好处,在实际应用中一般很少使用。
提交读(Read committed):大多数数据库系统的默认隔离级别都是提交读(但mysql不是)。提交读满足前面提到的隔离性的简单定义:一个事务开始时,只能“看见”已经提交的事务所做的修改。
换句话说,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。这个级别有时候也叫做不可重复读(nonrepeatable read),因为两次执行同样的查询,可能会得到不一样的结果。
可重复读(Repeatable read):可重复读解决了脏读的问题。该级别保证了在同一个事务中多次读取同样记录的结果是一致的。但是理论上,可重复读隔离级别还是无法解决另外一个幻读(Phantom read)问题。
所谓幻读,指的是当某个事务在读取某个范围内的记录时,另外一个事务中又在该范围插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行(Phantom row)。可重复读是MySQL的默认事务隔离级别。
可串行化(Serializable):可串行化是最高的隔离级别。它通过强制事务串行执行,避免了前面所说的幻读问题。简单来说,可串行化会在读取的每一行数据上都加上,所以可能导致大量的超时和锁争用问题。
实际应用中也很少用到这个隔离级别,只有在非常需要确保数据的一致性而且可以接受没有并发的情况下,才考虑用该级别。

该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引
但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表。
当需要使用数据库事务时,该引擎当然是首选。
由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率。
但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。


2. MyIASM引擎:

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


3.两种引擎的选择:

大尺寸的数据集趋向于选择InnoDB引擎,因为它支持事务处理和故障恢复。
数据库的大小决定了故障恢复的时间长短,InnoDB可以利用事务日志进行数据恢复,这会比较快。主键查询在InnoDB引擎下也会相当快,不过需要注意的是如果主键太长也会导致性能问题。
大批的INSERT语句(在每个INSERT语句中写入多行,批量插入)在MyISAM下会快一些,但是UPDATE语句在InnoDB下则会更快一些,尤其是在并发量大的时候。


您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库引擎和索引

本文链接: https://www.lsjlt.com/news/50576.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据库引擎和索引
    一、MySQL 数据库引擎:1. Innodb引擎:Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别。在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的...
    99+
    2022-10-18
  • MySQL(7)-mysql索引和存储引擎
         本篇博客讲的是MySQL的索引的功能和使用 , 以及存储引擎的基本简介 一. mysql索引索引的简介和作用索引在MySQL中叫做"键" , 是存储引擎用于快速找到记录的一种数据结构 . 索引对良...
    99+
    2022-10-18
  • MySql中的存储引擎和索引
    目录一、MySql的逻辑结构二、什么是存储引擎MySQL支持的存储引擎三、操作四、数据库的索引索引的分类五、索引操作一、MySql的逻辑结构 MySQL体系结构分为四层:分别是连接层...
    99+
    2022-11-13
    MySql存储引擎 MySql索引
  • MySQL数据库存储引擎
    MySQL数据库存储引擎MySQL数据库是一种关系型数据库,数据时存放在数据库中的一张一张的表中的,各个表之间或有关联,表中的每行相关,每列是不相关。这是关系型数据库的基本存储方式。MySQL存储引擎是为了...
    99+
    2022-10-18
  • MySQL数据库索引和事务
    目录1. 索引 1.1 概念 1.2 作用 1.3 索引的原理 1.3.1 减少磁盘的访问次数是构建索引的核心思想 1.3.2 B+ 树适用实现索引的底层 1.4 适用场景 1.5 ...
    99+
    2022-11-12
  • 数据库 --- 索引、触发器、事务(存储引擎)
    一、数据库  -----   按照数据结构来组织、存储和管理数据的仓库  主要特点:实现数据共享;减少数据的冗余度;数据的独立性;数据实现集中控制;数据一致性和可维护性,以确保...
    99+
    2022-10-18
  • mysql数据库引擎 MyISAM和 InnoDB区别
    1、 存储结构MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名...
    99+
    2022-10-18
  • mysql数据库的索引
    day04  MySQL数据库的索引一、索引概述:    索引是由一张表中的某个列或多列组成,而创建索引的目的是为了更优化管理我们的数据库表,提升我们查询使...
    99+
    2022-10-18
  • mysql数据库引擎有哪些
    这篇文章给大家介绍mysql数据库引擎有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  查看数据库引擎命令:SHOW ENGINES  ISAM  ISAM是一个定义明确且历经时...
    99+
    2022-10-18
  • MYSQL(一)数据库索引类型,索引优点
    索引在mysql中也叫做键(key),是存储引擎用于快速找到记录的一种数据结构。索引结构类型(常见有两种):1. B-Tree索引大多数mysql引擎都支持这种索引;  &nb...
    99+
    2022-10-18
  • MYSQL(二)数据库聚集/非聚集索引,索引和锁
    聚集索引(InnoDB,使用B+Tree作为索引结构)在一个结构中保存了b-tree索引和数据行;按照主键的顺序存储在叶子页上;主键索引:叶节点存储key-value为(主键数据:所有剩余列数据)二级索引(...
    99+
    2022-10-18
  • 数据库之——索引、触发器、事务(存储引擎)
    一. 数据库    数据库(DataBase)是按照数据结构来组织、存储和管理数据的仓库。其主要特点有如下几个方面:实现数据共享数据共享包含所有用户可同时存取数据库中的数据,也包括用户可...
    99+
    2022-10-18
  • MySQL数据库的索引和事务
    一、前言本文将要详细介绍MySQL索引与事务的概念及原理,并初步了解MySQL数据库视图概念,简述数据库的存储过程。二、索引2.1索引的概念——什么是索引一般来说,一篇论文,或者说一本书,都有其目录,而目录...
    99+
    2022-10-18
  • mysql数据库索引用处
    本文主要给大家介绍mysql数据库索引用处,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql数据库索引用处吧。    &n...
    99+
    2022-10-18
  • MySQL数据库唯一索引
    引言:什么是索引 创建索引是指在某个表的一列或多列上建立一个索引,以便提高对表的访问速度。创建索引有3种方式,分别是1.创建表的时候创建索引、2.在已经存在的表上创建索引和使用3.ALTER TABLE语句来创建索引。 本文福利,莬费领...
    99+
    2023-09-06
    数据库 mysql sql qt教程 qt开发
  • MySQL数据库的引擎是什么
    本篇内容介绍了“MySQL数据库的引擎是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!如果你是个赛车手...
    99+
    2022-10-18
  • MySQL数据库引擎如何选择
    MySQL数据库引擎如何选择,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  如何选择MySQL数据库引擎  MySQL的自带引擎肯定是够...
    99+
    2022-10-18
  • MySQL数据库引擎有什么用
    小编给大家分享一下MySQL数据库引擎有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  数据库引擎是用于存储、处理和保护...
    99+
    2022-10-19
  • MySQL数据库结构和引擎比对分析
    这篇文章主要介绍“MySQL数据库结构和引擎比对分析”,在日常操作中,相信很多人在MySQL数据库结构和引擎比对分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL数据库结构和引擎比对分析”的疑惑有所...
    99+
    2023-06-02
  • 数据库索引
    索引(index)是帮助MySQL高效获取数据的数据结构。常见的查询算法:顺序查找、二分查找、二叉树查找、哈希散列、分块查找、B树。   1)哈希算法:就是把任意长度值(key)通过散列算法变成固定长度的key地址,通过这个地址进行访问的数...
    99+
    2017-04-03
    数据库索引
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作