`

Mysql锁机制和事务控制

阅读更多
如何加锁

锁定表的语法:
    LOCK TABLES
    tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
    [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ...
解锁语法
    UNLOCK TABLES

innodb的存储引擎提供行级锁,支持共享锁和排他锁两种锁定模式,以及四种不同的隔离级别。
死锁

InnoDB自动检测事务的死锁,并回滚一个或几个事务来防止死锁。InnoDB不能在MySQL LOCK TABLES设定表锁定的地方或者涉及InnoDB之外的存储引擎设置锁定的地方检测死锁。你必须通过设定innodb_lock_wait_timeout系统变量的值来解决这些情况。如果要依靠锁等待超时来解决死锁问题,对于更新事务密集的应用,将有可能导致大量事务的锁等待,导致系统异常,所以不推荐在一个事务中混合更新不同存储类型的表,也不推荐相同类型的表采用不同的锁定方式加锁。
事务控制

MySQL通过SET AUTOCOMMIT, START TRANSACTION, COMMIT和ROLLBACK等语句支持本地事务。语法:
    START TRANSACTION | BEGIN [WORK]
    COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
    ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
    SET AUTOCOMMIT = {0 | 1}
默认情况下,mysql是autocommit的,如果需要通过明确的commit和rollback来提交和回滚事务,那么需要通过明确的事务控制命令来开始事务,这是和oracle的事务管理明显不同的地方,如果应用是从oracle数据库迁移到mysql数据库,则需要确保应用中是否对事务进行了明确的管理。
START TRANSACTION或BEGIN语句可以开始一项新的事务。
COMMIT和ROLLBACK用来提交或者回滚事务。
CHAIN和RELEASE子句分别用来定义在事务提交或者回滚之后的操作,chain会立即启动一个新事物,并且和刚才的事务具有相同的隔离级别,release则会断开和客户端的连接。
SET AUTOCOMMIT可以修改当前连接的提交方式,如果设置了SET AUTOCOMMIT=0,则设置之后的所有事务都需要通过明确的命令进行提交或者回滚。

如果我们只是对某些语句需要进行事务控制,则使用START TRANSACTION开始一个事务比较方便,这样事务结束之后可以自动回到自动提交的方式,如果我们希望我们所有的事务都不是自动提交的,那么通过修改AUTOCOMMIT来控制事务比较方便,这样不用在每个事务开始的时候再执行START TRANSACTION。
分享到:
评论

相关推荐

    MySQL事务控制和锁机制

    锁机制 根据加锁的范围,MySQL里面的锁可以分成全局锁、表级锁和行锁三类。 全局锁 全局锁能够对整个库实例进行加锁。 加锁的语法: FLUSH TABLES WITH READ LOCK; 解锁的语法: UNLOCK TABLES; 全局锁的典型使用...

    MySQL之锁和事务

    Mysql为了解决并发、数据安全的问题,使用了锁机制。可以按照锁的粒度把数据库锁分为表级锁和行级锁。 表级锁 对当前操作的整张表加锁,实现简单 ,资源消耗也比较少,加锁快,不会出现死锁 。其锁定粒度最大,触发...

    SQL server锁的机制

    SQL server锁的机制 SQL server锁的机制 SQL server锁的机制

    (mysql面试题)MySQL中的事务和锁的概念及其作用及代码展示.txt

    锁是数据库中用于控制并发访问的资源的一种机制。在执行一系列操作时,为了保证数据的一致性和完整性,需要对某些资源进行加锁,防止其他事务对这些资源进行并发访问。MySQL中主要有以下几种锁: - 共享锁(Shared...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 第十课MySQL锁机制和事务.pdf │ 第四课SQL基础语法.pdf │ ├─新版MySQL DBA综合实战班 第01天 │ 0_MySQL高级DBA公开课视频.avi │ 1_数据库通用知识介绍.avi │ 2_MySQL8常规安装.avi │ 3_MySQL8非常规安装...

    MySQL运行机制原理&架构1

    3.并发控制和锁的概念: 4.事务: 5.MySQL存储引擎及应案:

    MySQL数据库锁机制原理解析

    在并发访问情况下,很有可能...乐观并发控制和悲观并发控制是并发控制采用的主要方法。乐观锁和悲观锁不仅在关系数据库里应用,在Hibernate、Memcache等等也有相关概念。 悲观锁:也即悲观并发控制,Pessimistic Concur

    解析数据库锁协议和InnoDB的锁机制(全面解析行级锁、表级锁、排他锁、共享锁、悲观锁、乐观锁等常用锁)

    数据库通过锁以及锁协议来进行并发控制,解决并发事务带来的问题,本篇博文主要是解析数据库的锁协议和Mysql的默认存储引擎InnoDB的锁机制。 如果对事务隔离级别以及并发事务带来的问题不熟悉可以翻阅我的另外一篇...

    ORACLE锁机制深入理解

    加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当...

    Mysql高级性能优化思维导图

    并发控制和锁优化:合理使用事务和锁机制,避免长时间占用资源和死锁情况,优化并发控制策略以提高性能。 数据库分离和读写分离:对于高负载的系统,可以考虑将数据库分离为主从架构,实现读写分离,以提高性能和可...

    MSSQL与Oracle数据库事务隔离级别与锁机制对比

    事务隔离级别是并发控制的整体解决方案,其实际上是综合利用各种类型的锁和行版本控制,来解决并发问题。锁是数据库并发控制的内部机制,是基础。对用户来说,只有当事务隔离级别无法解决一些并发问题和需求时,才有...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    5.3 采用合适的锁机制 161 5.3.1 表锁的演示 161 5.3.2 行锁的演示 164 5.3.3 innodb引擎与myisam引擎的性能对比 166 5.4 选择合适的事务隔离级别 168 5.4.1 事务的概念 168 5.4.2 事务的实现 169 5.4.3 ...

    27道高级开发数据库面试题目以及答案.pdf

    描述一下mysql的乐观锁和悲观锁,以及mysql锁的种类; mysql如何做分库分表的; mysql描述一下mysql主从复制的机制的原理;mysql主从复制主要有几种模式 在mysql开启Binlog(为了其他非事务引擎复制所以引入binlog,...

    【分布式事务----LCN】LCN原理及使用方式.docx

    LCN事务控制原理是由事务模块TxClient下的代理连接池与TxManager的协调配合完成的事务协调控制。 TxClient的代理连接池实现了javax.sql.DataSource接口,并重写了close方法,事务模块在提交关闭以后TxClient连接池...

    SQLite教程(十二):锁和并发控制详解

     在SQLite中,锁和并发控制机制都是由pager_module模块负责处理的,如ACID(Atomic, Consistent, Isolated, and Durable)。在含有数据修改的事务中,该模块将确保或者所有的数据修改全部提交,或者全部回滚。...

    Oracle数据完整性和锁机制简析

    事务控制语句称为TCL,一般包括Commit和Rollback。 事务不是程序,事务和程序分属两个概念。在RDBMS中,一个事务可以有一条SQL语句、一组SQL语句或者整个程序;一个应用程序又通常包含多个事务。 事务是恢复和并发...

    【《数据库与信息系统》复习题及答案】第5章数据库管理与保护.pdf

    MySQL 提供了用户访问控制机制,对用户访问数 据库及其包含的对象进⾏限制,在服务器、数据库和数据对象三个层次上进⾏安全管理,但 与微软的 SQL Server 不同,MySQL 不在操作系统层次对用户进⾏安全管理。...

    php和mysql开发的报刊订阅管理系统

    php和mysql开发的报刊订阅管理系统 毕业设计整套列表:(80)ASP+ACCESS企业公司网站 ASP.NET+SQL2000销售管理系统 ASP+ACCESS网上考试系统 ASP.NET+ACCESS校友录毕业设计 ASP+ACCESS在线考试系统 ASP.NET+SQL2000...

    一篇文章掌握MySQL的索引查询优化技巧

    前言 本文的内容是总结一些MySQL的常见使用技巧,以供没有DBA的团队参考。如无特殊说明,存储引擎以InnoDB为准。 MySQL的特点 了解MySQL的特点有助于更好的使用MySQL,MySQL和其它... 采用MVVC(多版本并发控制)机制实

Global site tag (gtag.js) - Google Analytics