1.1  mysql逻辑结构

  

    第一层: 负责连接处理,授权认证,安全等事情

    第二层:负责mysql的大部分核心功能 ,查询解析,分析,优化,缓存和所有的内置函数,所有跨存储引擎的功能都在这一层实现,,存储过程,视图,触发器等

    第三层:存储引擎,负责mysql中数据的提取和存储;

1.2 并发控制——

   共享锁:也叫读锁,读锁是共享的,多个连接可以同时获取数据并互不干扰!

   排他锁:也叫写锁,排他性,阻塞其他的写锁和读锁;在同一时间内,只能有一个用户执行写入操作,并且防止其他用户进行读取正在写入的同一资源,

   锁粒度

    表锁:表锁是mysql中最基本的锁策略,并且是开销最小的策略,它锁定整张表,当有用户对它进行(insert,delete,update)操作时,首先获取写锁,阻塞其他的用户进行读写操作!

          read local 表锁在特定的情况下可以支持某些类型的并发写操作,,此外写锁拥有更高的优先级,因此一个写锁的请求可能会被插入到读锁队列的前面

    行级锁:行级锁可以最大程度的支持并发处理,同时也会对性能开销更大!

1.3 事物管理

   原子性:一个事务必须被认为是一个不可以分割的最小工作单元,事务内的操作要么全部提交成功,要么失败回滚,对于事务来说不能只执行其中的一部分!这就是事务的原子性

  一致性:数据库总是从一个一致性状态转移到另一个一致性状态

  隔离性:一个事务中所做的操作在未最终提交前,对其他事务是不可见的

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

  并发情况下带来的问题

    1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

    2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。

    3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像产生了幻觉一样,这就叫幻读。

      mysql在的innoDB和XtraDB通过多版本并发控制(MVCC,Multiversion Concurrency  Control)解决了幻读的问题

    小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

  事务隔离级别

   

最新文章

  1. UI自动化,你值得拥有
  2. winsock error 相关
  3. Java Gradle入门指南之内建与定制任务类(buildSrc、Groovy等)
  4. Ant 执行 YUICompressor
  5. [转]C++设计模式:Builder模式
  6. angular2自学笔记---官网项目(一)
  7. c语言编程之sglib库的简单使用
  8. WordPress数据备份
  9. start running 开始跑步减肥
  10. iOS钉钉远程打卡助手(支持越狱和非越狱)
  11. flex布局常见用法小结
  12. 【linux】安装python依赖库confluent_kafka
  13. react组件通信那些事儿
  14. Java httpClient 发送http请求
  15. 禁用触发器的N种方法
  16. 漏洞利用查询工具sandi
  17. mysql my.cnf 配置建议
  18. Jquery获取元素的位置
  19. Spring安全权限管理(Spring Security)
  20. 一款基于的jQuery仿苹果样式焦点图插件

热门文章

  1. Seagate-保修验证(za25shrx)
  2. 5.8 pprint--美观地打印数据
  3. 获取WebConfig 配置项的值
  4. HDU 4870 Rating 高斯消元法
  5. 小米再迎两位重量级人才,原亦庄国投CEO王晓波入职产投部(产业嗅觉)
  6. 文件控制 fcntl函数具体解释
  7. java-synchronized原理
  8. 【poj2406】next数组求循环节
  9. 【BZOJ 1032】 [JSOI2007]祖码Zuma
  10. 到底有多少种智能指针(smart pointer)