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

事务:一组原子性的SQL查询。如果数据库能够成功的对数据库应用该组查询的全部语句,那么就执行改组查询;否则所有的语句都不会执行。

ACID:原子性(atomocity),一致性(consistency),隔离性(isolation),持久性(durability)。

原子性:一个事务必须被视为不可分割的最小执行单元。整个事物的操作要么全部提交成功,要么全部失败回滚,不可能存在只执行了一部分的操作。

一致性:数据库总是从一个一致性的状态转移到另一个一致性的状态。即使中间出现问题,因为事务没有提交,事务造成的修改也不会保存到数据库中。

隔离性:一个事务所做的修改在最终提交以前,对其他事务是不可见的。例如从一个账户向另一个账户转账,从其他事务角度来看是一瞬间的操作,不会出现短暂的金额总数不匹配的问题。

持久性:一旦事务提交,其所做的修改就会被永久的保存在数据库中。

四种隔离级别:

READ UNCOMMITTED:未提交读

事务中的修改,即使未被提交,对其他事务也是可见的。

脏读:事务可以读取未提交的数据。

READ COMMITTED: 提交读

大部分数据库系统的默认隔离级别(MySQL不是),一个事务开始时,只能“看见”已经提交的事务所作的修改。也可叫做不可重复读(nonrepeatable read) ,因为执行同样的查询,两次得到的数据可能不同。

REPEATABLE READ:可重复读

MySQL默认隔离级别。解决了脏读的问题,同时保证了在同一事务中多次读取同样的记录结果相同。然而可能会导致幻读(Phantom Read),某一个事务在读取某一个范围的记录时,另一个事务又在该范围内插入新的记录,当之前的事务再次读取该范围的记录时,就会产生幻行。

SERIALIZABLE: 可串行化

最高的隔离级别。强制事务串行执行,避免了幻读情况的发生。相当于在每一行数据上都加锁,会导致大量的超时和锁争用的问题,现实开发中很少使用该隔离级别。

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

举例:

事务1:

start transaction;

update StockPrice set ... where id = 3;

update StockPrice set ... where id = 4;

commit;

事务2:

start transaction;

update StockPrice set ... where id = 4;

update StockPrice set ... where id = 3;

commit;

解决死锁:死锁检测,死锁超时机制。

时间: 2024-10-05 20:42:30

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

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

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

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

并发控制 锁粒度 MySQL 中提供了两种锁粒度:表级锁.行级锁. 表锁:写锁的优先级高于读锁:写锁的请求可以插入到读锁的前面,但读锁的请求却不能插入到写锁的前面: 行级锁:行级锁只在存储引擎层实现,在服务器层没有实现: 尽量只锁定需要修改的那部分数据,而不是所有的资源.锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高. 但是加锁需要消耗资源,锁的各种操作(包括获取锁.释放锁.以及检查锁状态)都会增加系统开销.因此锁粒度越小,系统开销就越大. 锁类型 1.读写锁 互斥锁(Exclu

高性能mysql 第1章 mysql架构与历史(1)

mysql逻辑架构图: 第一层 客户端 第二层(服务层):针对所有类型的存储引擎可以公共提取的部分.将存储引擎抽离之后的其他部分都在这里.如:查询解析,分析优化,内置函数,存储过程,触发器,视图. 第三层(存储引擎层):存储引擎负责mysql数据的存储和提取.服务器通过API与存储引擎进行通信.这些API屏蔽了不同存储引擎的具体实现差异.存储引擎API包含"开始一个事务","根据主键获取一行数据"等操作.存储引擎本身不会去解析sql. 注:mongdb也有存储引擎.

第01章 MySQL架构与历史

MySQL最重要的特性是它的存储引擎架构,它将查询处理与其他的系统任务和数据存储,提取相分离. 1 MySQL逻辑架构 最上层的是客户端:主要负责链接处理,授权认证,安全等 中间一层是MySQL的核心,服务器:主要负责查询解析,分析优化,缓存以及所有的内置函数,所有跨存储引擎的功能都在这一层实现,例如:存储过程,触发器,视图等 最下一层是存储引擎:存储引擎负责MySQL中数据的存储和提取,可以使用不同的存储引擎,不同的存储引擎有各自的优势和劣势,不同的存储引擎之间不能通信,只相应上层服务器的请求

第一章 关于linux的历史

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

一周学会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

第一章 MYSQL的架构和历史

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

高性能MySQL笔记:第1章 MySQL架构

MySQL 最重要.最与众不同的特性是他的存储引擎架构,这种架构的设计将查询处理(Query Precessing)及其系统任务(Server Task)和数据的存储/提取相分离. 1.1 MySQL 逻辑架构 基础服务层 第一层构架 :包含连接处理.授权认证.安全等基础服务功能: 核心服务层 第二层构架 :包含查询解析.分析.优化(包括重写查询.决定表的读取顺序.选择合适的索引等).缓存以及内置函数,所有跨存储引擎的功能也在这一层实现:存储过程.触发器.视图等: 存储引擎层 第三层构架 :响应