MySQL笔记之MySQL基本概念

1.MySQL的逻辑架构

mysql的逻辑架构如图所示:
在这里插入图片描述

  • 第一层的服务不是MySQL独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构.比如连接处理,授权认证,安全等等.
  • 第二层,大多数的MySQL的核心服务都集中在这一层,包括查询解析,分析,优化,缓存以及所有的内置函数.所有的跨存储引擎的功能都在这一层实现:存储过程,触发器,视图等.
  • 第三层,包含了存储引擎.存储引擎负责MySQL中数据的存储和提前.

MySQL最终要,最与众不同的特性就是它的存储引擎架构,这种架构设计将查询处理(query processing)一级其他系统任务(system task)和数据的存储/提取相分离.

2.并发控制

在处理并发读或者写时,可以通过两种类型的锁组成的锁系统来解决问题.这两种类型的锁通常被称为共享锁(share lock) 和排他锁(exclusive lock) 或者叫读锁(read lock)和写锁(write lock);

  • 读锁:读锁是共享的,或者说是相互不阻塞的.多个客户端在同一时刻可以同时读取同一资源,而互不干扰.
  • 写锁:写锁是排他的,也就是说一个写锁会阻塞其他的写锁和读锁.

加锁是需要消耗资源的,锁的各种操作,包括获得锁,检查锁是否已经解除,释放锁等都会增加系统开销.如果系统花费大量的时间来管理锁而不是存取数据,那么系统的性能可能会受到影响.所以必须采取适当的锁策略,在锁的开销和数据的安全之间寻求平衡.

下面介绍两种重要的锁策略:

  • 表锁(table lock):MySQL中最基本的锁策略,也是开销最小的策略.它会锁定整张表.一个用户在对表进行写操作(新增,修改,删除等)前,需要获取锁,同时会阻塞其他用户对该表的所有读写操作.

  • 行锁(row lock):行锁可以最大程度地支持并发处理.它会锁定具体是数据行.行锁只在存储引擎层实现,而MySQL的服务处没有实现.

3.事务

事务就是:一组操作要么全部执行,要么全部失败.

事务的四大特性(ACID):

  • 原子性atomicty:一个事务必须视为一个不可分割的最小工作单元,整个事务中的操作,要么全部成功,要么全部失败回滚.
  • 一致性consistency:数据库总是从一个一致性的状态转换到另一个一致性状态.可以理解为从一个正确的状态转换到另一个正确的状态.
  • 隔离性isolation:通常来说,一个事务所做的修改在没有提交的时候,对其他事务是不可见的.为什么要说"通常来说",这涉及到后面说的隔离级别.
  • 持久性durability:一旦事务提交,则其所做的修改就会永久保存到数据库中.

隔离级别:
在SQL中定义了四种隔离级别,每一种隔离级别都规定了一个事务中所做的修改,哪些在事务内和事务见识可见,哪些是不可见的.

  • 读未提交 read uncommit :事务中的修改,即使没有提交,对其他事务也都是可见的.事务读取到其他事务未提交的数据,这也被称为脏读(dirty read).
  • 读已提交 read committed:大多数的数据库的默认隔离级别都是read committed(但MySQL不是).一个事务开始时,只能"看见"已经提交事务所做的修改.换句话说,一个事务从开始到提交之前,所做的任何修改对其他事务都是不可见的.这个级别有时候也叫不可重复读nonrepeatable read:两次执行同样的查询,可能会得到不同的结果.
  • 可重复读 repeatable read:该级别保证了在同一个事务中多次读取同样的记录的的结果是一致的.但是该级别还存在着另一个问题:幻读phantom read.所谓幻读是指:当某个事务读取某个范围内的记录时,另一个事务又在该范围内插入了新的记录.可重复读是mysql的默认隔离级别.
  • 可串行化serializable:强制事务串行执行.

注释:不可重复读强调是同样的查询结果内容的不一样,幻读强调的是范围内的数量的不一样.

在这里插入图片描述

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

4.选择合适的存储引擎

选择合适存储引擎,请先考虑以下因素:

  • 事务.如果需要事务支持,选择InnoDB.如果不需要事务,并且主要都是insert和select操作,可以选择MyISAM.InnoDB是MySQL默认的存储引擎.
  • 备份.如果需要在线热备份,选择InnoDB.
  • 崩溃恢复.MyISAM崩溃后发生损坏的概率比InnoDB更高,而且恢复速度更慢.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值