码迷,mamicode.com
首页 > 数据库 > 详细

mysql 开发进阶篇系列 6 锁问题

时间:2018-07-23 18:01:00      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:sele   引擎   时间   处理   ati   ble   .com   快照   存储   

一.概述

  在数据库中,数据是属于共享资源,为了保证并发访问的一致性,有效性,产生了锁。接下来重点讨论mysql锁机制的特点,常见的锁问题,以及解决mysql锁问题的一些方法或建议。 相比其他数据库,mysql 锁机制比较简单,显著的特点是 不同的存储引擎支持不同的锁机制。在innodb中支持行锁和表锁,默认行锁。

  mysql 的三种锁归纳如下:
  表级锁:开销小,加锁快,不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低。
  行级锁:开销大,加锁慢;会出现死锁,锁定粒度最小,发生锁冲突的概率最低,并发度最高。
  页面锁:开销和加锁时间界于表锁和行锁之间,会出现死锁,并发度一般。
  在不同sql语句执行,会采用不同的锁,由mysql 内部自动加锁,解锁,以及对应的锁类型。重点介绍mysql表锁和innodb行锁。由于MyisAm将被innodb取代了,后面重点讲innodb。

1. 事务介绍

  innodb的二个特点是一是支持事务,二是采用行级锁,但事务的引入也带来了一些新问题,先介绍一下背景知识。

  1.1 事务及其属性ACID
    事务是同一组sql语句组成的逻辑处理单元,具有原子性,一致性,隔离性,持久性。

  1.2 并发事务处理带来的问题
    更新丢失,脏读,不可重复读,幻读。

  1.3 事务隔离级别
    由于并发事务处理带来的问题,那么解决方法就是对应不同的事务隔离级别。 数据库实现事务隔离的方式,基本上分为以下两种:
    (1)一种是在读取数据前,对其加锁,阻止其他事务对数据进行修改。
    (2)另一种是不用加任何锁,通过快照 Snapshot 形式的 “数据版本并发控制” (MultiVersion Concurrency Control)简称MVCC。
    数据库的事务隔离级别越严格,并发副作用越小,付出的代价也就越大,因为实质上就是使事务在一定程度上"串行化"进行,这与"并发"是矛盾的。

    下面是四种隔离级别:

技术分享图片

 

 

 

 

  

 

 

 

 

 

 

2. 隔离级别查看

-- 查看事务隔离级别,默认是REPEATABLE-READ,在sql server里默认是Read Committed
SELECT @@tx_isolation

技术分享图片

  关于事务,事务并发问题,事务隔离级别,它们的原理这里有详细介绍“sql server 锁与事务拨云见日”。(未完)

 

mysql 开发进阶篇系列 6 锁问题

标签:sele   引擎   时间   处理   ati   ble   .com   快照   存储   

原文地址:https://www.cnblogs.com/MrHSR/p/9355678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!