MySQL最重要的特性是数据的处理与存储分离的存储引擎架构。

一、MySQL逻辑架构

1)第一层架构 —— 连接处理、授权认证、安全等。

2)第二层架构 —— MySQL的核心服务功能:存储过程、触发器、视图、查询缓存、查询解析、查询优化、函数等等。

3)第三层架构 —— 实现了不同的存储引擎,存储引擎负责MySQL中数据的存取。

二、并发控制

MySQL多个存储引擎的架构提供了多粒度封锁机制。其中两种最重要的锁策略是:

  • 表锁 —— 锁定整张表。存储引擎和MySQL服务器都实现了表锁。
  • 行级锁 —— 锁定元组。InnoDB和XtraDB,以及其他一些存储引擎中都实现了行级锁。行级锁只在存储引擎层实现。

三、事务

在MySQL中,用户可以根据业务是否需要事务处理,来选择合适的存储引擎。对于一些事务的查询类应用,选择一个非事务型的存储引擎,可以获得更高的性能。

3.1、隔离级别

PEREATABLE READ是MYSQL的默认事务隔离级别。

可以在配置文件中设置整个数据库的隔离级别,也可以只改变当前会话的隔离级别:

3.2、死锁

InnoDB目前处理死锁的方法是,将持有最少行级排他锁的事务进行回滚。

3.3、事务日志

事务日志提供了类似缓存的功能,使多次修改的数据可以缓慢刷回磁盘。

同时事务日志也提供了数据库故障恢复的功能。

3.4、MySQL中的事务

InnoDB采用的是两段锁协议。在事务执行过程中,随时都可以执行锁定,锁只有在执行COMMIT或者ROLLBACK的时候才会释放,并且所有的锁是在同一时刻被释放。

四、多版本并发控制

后面更新。。。

五、MySQL的存储引擎

5.1、InnoDB存储引擎

InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。默认级别是REPEATABLE READ(可重复读),并且通过间隙锁策略防止幻读的出现。

5.2、MyISAM存储引擎

MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和行级锁,而且有一个毫无疑问的缺陷就是崩溃后无法安全恢复。

5.3、选择合适的存储引擎

除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,否则都应该优先选择InnoDB引擎。

视图查询缓慢mysql_《高性能MySQL》读书笔记——第一章、MySQL架构与历史相关推荐

  1. Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境

    Android群英传神兵利器读书笔记--第一章:程序员小窝--搭建高效的开发环境 目录 1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程 ...

  2. 《MAC OS X 技术内幕》读书笔记第一章:MAC OS X的起源

    <MAC OS X 技术内幕>读书笔记第一章:MAC OS X的起源 前言 1 System x.x系列 1.1System 1.0(1984年1月24日) 1.2System 2.x(1 ...

  3. mybatis从入门到精通(刘增辉著)-读书笔记第一章

    前言: 本读书笔记共11章节 本版本采用idea编写,不采用作者书中所说的eclipse jdk8 maven3.6.1 mysql5.7 1.idea新建maven项目,配置pom.xml < ...

  4. 深入理解计算机系统第四版_《深入理解计算机系统》读书笔记 —— 第一章 计算机系统漫游...

    本书第一章沿着一个程序的生命周期,简要地介绍一些逐步出现的关键概念.专业术语和组成部分. 一.信息就是位+上下文 在计算机系统中所有的信息都由一串比特来表示. 一串相同的比特(或者几个相同的字节)可以 ...

  5. linux鸟叔私房菜读后感,鸟叔的Linux私房菜 读书笔记 第一章

    目录dom 硬盘数学 第一章 计算机概论 知识点总结 计算机的定义为:接受使用者输入指令与资料,经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的资讯:程序 电脑的五大单元包括:输入单元. ...

  6. 《性能之巅—洞悉系统、企业与云计算》读书笔记---第一章

    目录 第一章  绪论 1.1系统性能 1.2人员 1.3事情 1.4视角 1.5性能是充满挑战的 1.6延时 1.7动态跟踪 1.8云计算 1.9案例研究 第一章  绪论 1.1系统性能 1.2人员 ...

  7. Android进阶之光读书笔记——第一章:Android新特性

    第一章 Android新特性 主要讲了一些Android 5.0.6.0.7.0新特性 1.1 Android 5.0新特性 Android 5.0 Lollipop是2014年10月发布的,那时候我 ...

  8. mysql第一二章笔记_MYSQL必知必会读书笔记 第一章(基础)

    1.1 什么是数据库 数据库(database)是一个以某种有组织的方式存储的数据集合. 保存有组织的数据的容器(通常是一个文件或一组文件) 注意:人们通常使用数据库来代表他们使用的数据库软件.其实这 ...

  9. Entity Framework 4 in Action读书笔记——第一章:数据访问重载:Entity Framework(2)...

    上一篇讲解了通用数据容器,这一篇使用类来组织数据. 类是面向对象编程语言的基础.使用类,你不需要知道具体的存储机制,数据源可以是数据库,Web服务,XML文件等.类提供了很多优势,尤其是在企业应用中. ...

最新文章

  1. 1.大数据处理架构Hadoop
  2. python语言程序设计实践教程答案实验六_20192417 实验一《Python程序设计》实验报告...
  3. 校园导游java版,校园导游系统Word版
  4. ​shell中经常能看到的:/dev/null 21
  5. SVN trunk branch tags 区别
  6. javaweb简要介绍,虚拟路径,虚拟主机
  7. 满满的一整篇,全是 JVM 核心知识点!
  8. linux php安装配置oci8模块
  9. 安装搭建zimbra邮件服务器(dns域名解析)
  10. 5款Java微服务开源框架
  11. uicontrol_与UIControl结合
  12. 超简单的HIDPI设置
  13. 如何使用REST Assured执行API测试
  14. 20189200余超 2018-2019-2 移动平台应用开发实践第九周作业
  15. c语言完美素数反思,《素数和合数》优秀教学反思
  16. H-WORM家族远控木马分析与处置
  17. upload-labs教程(一)
  18. windows下的ntsd命令
  19. 【智能材料】用人工智能发现新型材料,金属玻璃可替代钢材
  20. 信息化项目网络安全方案编制

热门文章

  1. 顺序表的动态存储细节
  2. 树莓派4B安装OPENCV遇到ffmpeg库版本太高的问题
  3. linux下升级php5.4到php5.6
  4. ORA-02049: 超时: 分布式事务处理等待锁
  5. Android通过泛型简化findViewById类型转换
  6. ibatis的缓存机制
  7. gcc4.4下实现backtrace代码
  8. 转载:Windows Phone 7 资源汇总(超全)
  9. “软”苹果水逆的一周:杂志服务崩溃,新机型遭泄露,芯片首架离职
  10. DS博客作业02--线性表