1、存储引擎:

https://zhidao.baidu.com/question/1049565846666168579.html

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。

这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。

2、MySQL的存储引擎:MyISAM和InnoDB(默认)

  • 如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择。支持行锁定和外键。维持自己的缓冲池,支持外键完整性约束。
  • 如果数据表主要用来插入和查询记录,不支持事物,则MyISAM引擎能提供较高的处理效率。
  • 如果只是临时存放数据,数据量不大,不需要较高的安全性,可以选择将数据保存在内存中的Memory引擎中。

(1)InnoDB锁模式:

InnoDB实现了两种类型的行锁。

①共享锁(S):允许一个事务去读一行,阻止其他事务获得相同的数据集的排它锁。

即我读的时候,你也可以读但是不能写。

②排它锁(X):允许获得排他锁的事务更新数据,但是其他事务不可以获得共享锁和排它锁。

即我写的时候,你不能读也不能写。

这两个锁就是就是MyISAM的读锁和写锁,只是针对的对象不同。

InnoDB还有两个表锁

意向共享锁(IS):表示事务准备给数据行加入共享锁,即一个数据行加共享锁前必须先取得该表的IS。

意向排他锁(IX):表示事务准备给数据行加入排它锁,即一个数据行加排它锁前必须先取得该表的IX。

锁的实现方式:

在MySQL中,行级锁并不是直接锁记录,而是锁索引。如果没有索引,InnoDB会通过隐藏的聚簇索引来对记录加锁,即其对表中所有数据加锁,实际效果和表锁一样。

行锁分为三种情形:

Record lock:对索引加锁,即锁定一条记录。

Gap lock:对索引项之间的间隙加锁,不锁记录。即锁定一个范围的记录。

Next-key Lock:锁定一个范围的记录并包含记录本身(上面两种锁的结合)

死锁产生:互斥条件、请求和保持条件、不剥夺条件、环路等待条件

互斥:一段时间内某资源只能由一个进程使用。

请求保持条件:进程已经保持至少一个资源,但又提出新的资源请求,该资源被其他进程占有,此时请求阻塞,而自己的资源不释放。

不剥夺条件:进程所获得的资源在未使用完之前,不能被剥夺。

环路等待条件:在发生死锁时,必然存在一个进程---资源的环形链,即p0申请p1的资源,p1申请p0的资源。

避免死锁的方法:

①表:按照约定以相同顺序访问表,可以降低死锁机会。

②事务:在同一个事务中,尽可能做到一次锁定所需要的所有资源

③对于非常容易产生死锁的业务部分,可以尝试使用升级锁定颗粒度,通过表级锁定来减少死锁产生的概率。

3、MySQL体系结构

mysql由连接池组件、管理服务和工具组件、sql接口组建、查询分析器组件、优化器组件、缓存组件、插件是存储引擎、物理文件。

MySQL-----笔记3:存储引擎的更多相关文章

  1. MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎

    目录 MySQL体系结构和存储引擎 定义数据库和实例 MYSQL体系结构 MYSQL存储引擎 MySQL体系结构和存储引擎 定义数据库和实例 数据库:物理操作系统文件或者其他形式文件类型的结合.在MY ...

  2. MySQL笔记(1)---MySQL体系结构和存储引擎

    1.前言 本系列记录MYSQL数据库的一些结构和实现特点,方便查询. 2.基本概念 数据库:物理操作系统文件或者其他形式文件类型的集合.MySQL中数据库文件可以是frm.MYD.MYI.ibd结尾的 ...

  3. MySQL的多存储引擎架构

    支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一.如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构.本文将 ...

  4. Mysql更换MyISAM存储引擎为Innodb的操作记录

    一般情况下,mysql会默认提供多种存储引擎,可以通过下面的查看: 1)查看mysql是否安装了innodb插件.通过下面的命令结果可知,已经安装了innodb插件. mysql> show p ...

  5. mysql缓存、存储引擎

    一.         mysql查询缓存 查询缓存不是mysql的子系统,却是查询优化和执行子系统不可缺少的组成部分.它不仅可以缓存查询结果,还可以缓存查询结果本身.如果某个查询的结果就在缓存里, 系 ...

  6. 转!!MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)

    MySQL中的存储引擎: 1.存储引擎的概念 2.查看MySQL所支持的存储引擎 3.MySQL中几种常用存储引擎的特点 4.存储引擎之间的相互转化 一.存储引擎: 1.存储引擎其实就是如何实现存储数 ...

  7. MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析

    文/何登成 导读:   来自网易研究院的MySQL内核技术研究人何登成,把MySQL数据库InnoDB存储引擎的多版本控制(简称:MVCC)实现原理,做了深入的研究与详细的文字图表分析,方便大家理解I ...

  8. MySQL数据库InnoDB存储引擎中的锁机制

    MySQL数据库InnoDB存储引擎中的锁机制    http://www.uml.org.cn/sjjm/201205302.asp   00 – 基本概念 当并发事务同时访问一个资源的时候,有可能 ...

  9. MySQL支持多种存储引擎

    MySQL的强大之处在于它的插件式存储引擎,我们可以基于表的特点使用不同的存储引擎,从而达到最好的性能. MySQL有多种存储引擎:MyISAM.InnoDB.MERGE.MEMORY(HEAP).B ...

  10. mysql基础之存储引擎

    原文:mysql基础之存储引擎 数据库对同样的数据,有着不同的存储方式和管理方式,在mysql中,称为存储引擎 常用的表的引擎 Myisam ,批量插入速度快, 不支持事务,锁表 Innodb, 批量 ...

随机推荐

  1. lucene_05_solr配置

    什么是solr Solr.是Apache 下的一个顶级开源项目,采用Java 开发,它是基于Lucene 的全文搜索服务器.Solr 提供了比Lucene 更为丰富的查询语言,同时实现了可配置.可扩展 ...

  2. 洛谷 P1768 天路

    P1768 天路 题目描述 “那是一条神奇的天路诶~,把第一个神犇送上天堂~”,XDM先生唱着这首“亲切”的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUNSHINE大神商量后,这道猥琐的题目终于 ...

  3. Rails 异常处理 && 性能

    Rails 异常处理 的多种处理方法 1.  routes match '*path', via: :all, to: 'controller#action' 2.  application.rb 的 ...

  4. nginx tomcat glassfish session 复制配置

    1.nginx配置 [root@www1-nlb1 ~]# cat /usr/local/nginx/conf/nginx.conf | grep -v ^$ | grep -v ^# user  w ...

  5. Windows 10家庭版也能共享打印机(中)解除Guest账户网络登录限制,实现局域网共享

    由于Windows系统默认是禁止Guest账户从网络登录的.我们须要解除这个限制.首先想到的是用组策略编辑器gpedit.msc. 可是Windows 10家庭版没有组策略编辑器,我们先尝试用U盘把W ...

  6. GIT 源码管理-简介

    关于GIT GIT 是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布.最初目的是为更好地管理Linux内核开发而设计.是目前世界上最先进的分 ...

  7. org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的systemPropertiesModeName属性

    转自:https://www.cnblogs.com/huqianliang/p/5673701.html 使用PropertyPlaceholderConfigurer类载入外部配置 在Spring ...

  8. ClassLoader.getResourceAsStream(name);获取配置文件的方法

    ClassLoader.getResourceAsStream(name);路径问题 InputStream in = getClass().getResourceAsStream('/'+" ...

  9. 备份SQL SERVER 2005数据库

  10. Comparable与Comparator源码分析

    package java.lang; import java.util.*; /** * This interface imposes a total ordering on the objects ...