高性能MySQL-第一章MySQL架构与历史

并发控制

锁粒度

MySQL 中提供了两种锁粒度:表级锁、行级锁。

  • 表锁:写锁的优先级高于读锁;写锁的请求可以插入到读锁的前面,但读锁的请求却不能插入到写锁的前面;
  • 行级锁:行级锁只在存储引擎层实现,在服务器层没有实现;

尽量只锁定需要修改的那部分数据,而不是所有的资源。锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高。

但是加锁需要消耗资源,锁的各种操作(包括获取锁、释放锁、以及检查锁状态)都会增加系统开销。因此锁粒度越小,系统开销就越大。

锁类型

1.读写锁

  • 互斥锁(Exclusive),简写为 X 锁,又称写锁。
  • 共享锁(Shared),简写为 S 锁,又称读锁。

2.意向锁

意向锁在原来的 X/S 锁之上引入了 IX/IS,IX/IS 都是表锁,用来表示一个事务想要在表中的某个数据行上加 X 锁或 S 锁。

事务

事务:事务是一组原子性的SQL查询,或者说一个独立的工作单元。换句话说,事务内的语句,要么全部执行成功,要么全部执行失败。

事务的标准特征ACID:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。
原子性:一个事务必须被视为一个不可分割的最小工作单元,要么全部提交成功,要么全部失败回滚。
一致性:数据库总是从一个一致性的状态转换到另一个一致性的状态。
隔离性:一个事务所做的修改在最终提交以前,对其他事务是不可见的。
持久性:一旦事务提交,则其所做的修改就会永久保存到数据库中。

事务的隔离级别:未提交读(READ UNCOMMITTED)、提交读(READ COMMITTED)、可重复读(REPEATABLE READ)、可串行化(SEAIALIZABLE)。
READ UNCOMMITTED(未提交读):事务可以读取未提交的数据,也叫脏读,实际中很少使用。
READ COMMITTED(提交读):一个事务从开始直至提交前,所做的任何修改对其他事务都是不可见的,也叫不可重复读,因为两次执行同样的查询,可能结果不同。
REPEATABLE READ(可重复读):保证了在同一个事务中多次读取同样记录的结果是一致的。解决了脏读的问题,但是无法解决幻读问题。
SEAIALIZABLE(可串行化):最高的隔离级别。通过强制事务串行执行,避免了幻读。SEAIALIZABLE会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题,实际中很少使用。

幻读(Phantom Read):指当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行(Phantom Row)。

死锁

两个或者多个事务在同一资源上相互作用,并请求锁定对方占用的资源,从而导致恶性循环的现象。

死锁的产生有双重原因:1、真正的数据冲突,比较难避免。2、存储引擎的实现方式造成的。

原文地址:https://www.cnblogs.com/zhishuiyushi/p/12288888.html

时间: 2024-07-30 12:49:32

高性能MySQL-第一章MySQL架构与历史的相关文章

高性能MySQL_第一章-MySQL架构和历史

事务:一组原子性的SQL查询.如果数据库能够成功的对数据库应用该组查询的全部语句,那么就执行改组查询:否则所有的语句都不会执行. ACID:原子性(atomocity),一致性(consistency),隔离性(isolation),持久性(durability). 原子性:一个事务必须被视为不可分割的最小执行单元.整个事物的操作要么全部提交成功,要么全部失败回滚,不可能存在只执行了一部分的操作. 一致性:数据库总是从一个一致性的状态转移到另一个一致性的状态.即使中间出现问题,因为事务没有提交,

一周学会mysql:第一章mysql简介

mysql是支持众所周知的sql(结构化查询语言)数据库语言的一个关系数据库 数据库是由持久性数据的某些集合组成的,由数据库管理系统管理 数据库专用语言把命令传递给数据库服务器,这种语言叫数据库语言 NULL值:未知的值(空值),部要和0混淆了 主键用来唯一标识表中的一列,表中不可能有2个不同行在他们的主键上具有相同的值,主键必须有个值 候选键:表中包含多个可以作为主键的列,但只有其中一个可以作为主键 替换键:不是表格主键的候选键. 外键:是表中的一列,该列是另外一个表的主键内容的一个子集 一周

第一章 Mysql简介及安装和配置

第一章 Mysql简介及安装和配置 ·    第一节:Mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品. 使用 C和 C++编写的. 集群(Cluster),适合大规模应用 ·   第二节:Mysql安装及配置 MySql安装注意一次行安装成功,不然要处理注册表. 安装选择编码格式为GBK或UTF-8. 安装MySql图形界面(Navica或MySQlog). p.MsoNormal,li.MsoNormal,div.Mso

第一章 关于linux的历史

第一章 关于linux的历史 很多关于linux的书籍在前面章节中写了一大堆东西来介绍linux,可惜读者看了好久也没有正式开始进入linux的世界,这样反而导致了他们对linux失去了一些兴趣,而把厚厚的一本书丢掉. Linux的历史确实有必要让读者了解的,但是不了解也并不会影响你将来的linux技术水平.哈哈,本人其实就不怎么了解linux的历史,所以对于linux的历史在本教程中不会涉及到.如果你感兴趣的话,那你去网上搜一下吧,一大堆呢足够让你看一天的.虽然我不太想啰嗦太多,但是关于lin

高性能mysql第一章——架构

第一章 架构 1.1 mysql逻辑架构 mysql服务器逻辑架构图如上图所示. 第一层为连接/线程处理层.每个客户端连接mysql服务器,都会拥有一个线程.服务器会缓存线程,因此无需为每一个连接新建或释放线程.mysql5.5以上的版本还提供了线程池,可以用少量线程服务大量连接.当客户端连接到服务器时,服务器需要对其认证,根据用户名主机名密码等信息,确定客户端是否有查询/更新某个数据库内某张表的权限. 第二层为mysql的核心服务功能层.包括查询解析.分析.优化.缓存以及所有内置函数(日期.时

第一章 MYSQL的架构和历史

在读第一章的过程中,整理出来了一些重要的概念. 锁粒度  表锁(服务器实现,忽略存储引擎). 行锁(存储引擎实现,服务器没有实现). 事务的ACID概念 原子性(要么全部成功,要么全部回滚). 一致性(从一个一致性状态转换到另外一个一致性状态). 隔离性(一个事务所做的修改在提交前,对其他事务是不可见的). 持久性(一旦事务提交,所有修改都会永久保存到数据库中). 四种隔离级别 READ UNCOMMITTED(未提交读): 事务即使没有提交,所做的修改对其他事务是可见的.  也称脏读. REA

第一章--MySQL数据库介绍及搭建

1. MySQL数据库介绍 1.1 MySQL介绍 MySQL属于传统关系型数据库产品,它开放式的架构使得用户选择性很强,同时社区开发与维护人数众多.其功能稳定,性能卓越,且在遵守GPL协议的前提下,可以免费使用与修改,也为MySQL的推广与使用带来了更多的利好.在MySQL成长与发展过程中,支持的功能逐渐增多,性能也不断提高,对平台的支持也越来越多. MySQL是一种关系型数据库管理系统,关系型数据库的特点是将数据保存在不同的表中,再将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓

第一章·MySQL介绍及安装

一.DBA工作内容及课程体系 二.MySQL课程体系介绍 三.DBA的职业素养 四.MySQL简介及安装 01 什么是数据? 02 什么是数据库管理系统 03 数据库管理系统种类 04 MySQL发展史 05 MySQL正在推动世界 06 MySQL简介及产品线 06 MySQL 安装 一.DBA工作内容及课程体系 二.MySQL课程体系介绍 三.DBA的职业素养 四.MySQL简介及安装 01 什么是数据? 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加

【MYSQL系列】【基础版】第一章 MYSQL的安装以及测试

1. MYSQL的安装以及测试     1.1 什么是数据库,有什么作用,以及有哪些特点         1.1.1 Database,DB,是一个数据的仓库:         1.1.2 用于保存.管理数据         1.1.3 特点:             1.1.3.1 一致性.完整性             1.1.3.2 降低冗余(重复)             1.1.3.3 应用的共享,以及有组织         1.1.4 数据仓库: 偏向于数据分析,是数据挖掘的一种  

高性能Mysql(第一章MySQL架构与历史)

逻辑架构 mysql的逻辑架构分为3层, 连接线程处理. 服务器的核心功能,查询解析.分析.优化.缓存以及所有的内至函数. 存储引擎,负责MySQL中数据的存储和提取,每个存储引擎都有它的优势和劣势,服务器通过API与存储引擎进行通信,这些接口屏蔽了不同存储引擎之间的差异. 并发控制 读写锁通常也称为共享锁和排他锁, 读锁是共享的,多个客户在同一时间可以同时读取同一个资源,而互不干扰. 写锁则是排他的,也就是说一个写锁会阻塞其它的写锁和读锁. 锁粒度 表锁是MySQL中的最基本的策略,它会锁定整