MySQL基础--触发器,锁

news2024/11/14 15:25:49

触发器

        触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的 SQL 语句集合,触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。

        使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。

行级触发器:例如执行 update 语句,他影响了五行,这个时候这个触发器出发了五次,就称为行级触发器。

语句级触发器:执行了 update ,不管影响了多少行,支触发一次,就叫语句级触发器。

语法:

        锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU,RAM,I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。

分类:

按照锁的粒度分为:

1.全局锁:锁定数据库中的所有表。

2.表级锁:每次操作锁住整张表。

3.行级锁:每次操作锁住对应的行数据。

全局锁

        全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的 DML 写语句,DDL 语句,已经更新操作的事务提交语句都将被阻塞。

        典型的应用场景:做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性。

特点:

数据库中加全局锁是一个很重要的操作,存在以下问题:

1.如果在住库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆。

2.如果在从库上备份,那么在备份期间从库不能执行主库同步过来的二进制日志,会导致主从延迟。

在 InnoDB 引擎中,可以在备份时加上参数 --single-transaction 参数来完成不加锁的一致性数据备份。

表级锁

        表级锁,每次操作锁住整张表。锁定力度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM,InnoDB,DBD等存储引擎中。

对于表级锁分为以下三类:

1.表锁

2.元数据锁

3.意向锁

表锁

1.表共享读锁(read lock)

2.表独占写锁(write lock)

语法:

1.加锁:lock tables 表名... read / write  。

2.释放锁:unlock tables / 客户端断开连接。

读锁不会阻塞其他客户端的读,但是会阻塞写。

写锁既会阻塞其他客户端的读,也会阻塞其他客户端的写。

元数据锁

加锁过程是系统自动控制,无须显示使用,在访问一张表的时候会自动加上,MDL 锁的主要作用是维护表元数据的数据一致性,在表上有活动事务的时候,不可以对元数据进行写入操作。(为了避免 DDL 与 DML 冲突,保证读写的正确性)

        在 MySQL 5.5 中引入了MDL,当对一张表进行增删改查的时候,加 MDL 读锁(共享);当对表结构进行变更操作的时候,加入 MDL 写锁(排他)

意向锁

1.意向共享锁(IS):由语句 select...lock in share mode 添加。与表锁共享锁(read)兼容,与表锁排它锁(write)互斥。

2.意向排它锁(IX):由 update,delete,insert,select...for update添加。与表锁共享锁(read)和表锁排它锁(write)都互斥,意向锁之间不会互斥。

行级锁

InnoDB 中实现了以下两种类型的行锁:

1.共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排它锁。

2.排它锁(X):允许获取排它锁的事务更新数据,阻止其他事物获得相同数据集的共享锁和排他锁。

Ending: 

        OK,本篇文章就到此结束了,非常感谢你能看到这里,所以如果你觉得这篇文章对你有帮助的话,请点一个大大的赞,支持一下博主,若你觉得有什么问题或疑问,欢迎私信博主或在评论区指出~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2047509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KNN 图像识别

KNN(K-Nearest Neighbors,K最近邻)算法是一种简单而有效的分类算法,也可以用于图像识别。它的基本思想是通过计算样本之间的距离,将待分类的样本归为其在训练集中最相近的K个样本所属的类别中最常见的类别 1. 准备工作…

阿里巴巴25校招内推

内推投递链接: http://aidc-jobs.alibaba.com/campus/qrcode/home?codeMx8ppk_s4MjkOFnb6XS3Vw%3D%3D 流程安排 简历投递(网申、内推) 8.16开启笔试:集中笔试为8月-10月面试:启动后持续推进offer发放:启动后持续推进 内推二维…

FPGA 综合笔记

仿真时阻塞赋值和非阻塞赋值 Use of Non-Blocking Assignment in Testbench : Verilog Use of Non-Blocking Assignment in Testbench : Verilog - Stack Overflow non-blocking assignment does not work as expected in Verilog non-blocking assignment does not work a…

华为APP审核,权限说明弹窗

工具类 import android.app.Activity; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.PopupWindow; import android.widget.TextV…

OD C卷 - 建立Huffman树

生成Huffman树 (100) 给定一个数值数组weights&#xff0c;每个值代表二叉树叶子节点的权值&#xff08;>1&#xff09;;根据权值数组&#xff0c;生成哈夫曼树&#xff0c;并中序遍历输出&#xff1b;左节点权值< 右节点权值&#xff0c;根节点权值为左右节点权值之和&…

git提交规范检查husky

一、Eslint 尤雨溪推荐的 prettierrc 配置&#xff0c;句尾不带分号 单引号。 尤雨溪推荐配置&#xff1a;vue-next/.prettierrc lint lint 是最著名的 C 语言工具之一&#xff0c;是由贝尔实验室 SteveJohnson 于 1979 在 PCC(PortableC Compiler) 基础上开发的静态代码分…

自己搭建远程桌面服务器-RustDesk 极简版

linux搭建RustDesk保姆间教程_rustdesk linux-CSDN博客https://blog.csdn.net/yzs2022/article/details/135136491 背景 在某公司工作&#xff0c;向日葵等远程办公软件均已屏蔽&#xff0c;无法使用&#xff08;也没有明文规定不允许使用远程控制软件&#xff09;&#xff0c…

2024批量下载知乎回答/文章/想法/专栏/视频/收藏夹,导出excel和pdf

之前分享过文章2024 批量下载知乎回答/文章/想法/专栏导出excel和pdf&#xff0c;再次更新&#xff0c;2024 批量下载知乎回答/文章/想法/专栏/视频导出 excel 和 pdf&#xff0c;今天再加上知乎收藏夹批量下载。 下载所有知乎回答以渤海小吏的号为例 https://www.zhihu.com/p…

关于SQLModel库的一些封装思路和实战,fastzdp_sqlmodel库封装过程中的一些笔记,20240817

概述 最近在对SQLModel做一些封装&#xff0c;本篇文章主要记录封装过程中的一些思路和实战代码。 实现or查询 原本的代码 from typing import Optional from sqlmodel import Field, SQLModel, create_engine, Session, select, or_class Hero(SQLModel, tableTrue):id: O…

【笔记】PUML语法使用

Sequence 时序图 类型&#xff1a;participant 1、排序 order participant NAME order NUMBER 默认是按出现定义的先后顺序排列&#xff0c;如下图。 【Sequence】未定义order的效果图 可以通过自定义改变&#xff0c;使用order关键字&#xff0c;将按ABC进行排序。 partici…

20 以太网帧格式及命名方法

以太网帧格式及命名方法 一、以太网帧格式及命名方法 &#xff08;一&#xff09;帧格式及命名标准 1.以太网帧格式 ​ 802.3 以太网帧格式 ​ 以太网帧数据的长度46-1500 ​ 以太网帧的长度64-1518 ​ 帧校验序列&#xff08;FCS&#xff09;&#xff1a;从目的地址开始…

Binance 如何使用 Quickwit 构建 100PB 日志服务(Quickwit 博客)

三年前&#xff0c;我们开源了 Quickwit&#xff0c;一个面向大规模数据集的分布式搜索引擎。我们的目标很宏大&#xff1a;创建一种全新的全文搜索引擎&#xff0c;其成本效率比 Elasticsearch 高十倍&#xff0c;配置和管理显著更简单&#xff0c;并且能够扩展到 PB 级别的数…

【无标题】乐天HIQ壁挂炉使用

这里写自定义目录标题 1.按键①&#xff1a; 按一下&#xff0c;小液晶显示的温度是所设定的供暖温度&#xff1b; 按二下&#xff0c;小液晶显示的温度是所设定的生活热水温度&#xff1b; 按三下&#xff0c;小液晶显示的温度是所设定的室内温度&#xff1b; 如果忘记按几下的…

HCIE冲刺-----------论述解析

X园区 1.防火墙放行OSPF 2.trunk口阻塞vlan1 3.关闭VPN防环 4.ospf不通检查NSSA区域配置 5.重定向可以在三层口或二层口配置 6.vlan60在ospf的相关配置 Z园区 1.mpls不通检查lo0口配置 2.isis不通检查接口IP与lldp连接 3.确认同级RR还是备份RR 4.确认策略矩阵的访问 python 1…

测试架构师要正直诚实而非率真

目录 正直诚实的重要性 为何需要正直诚实而非仅是率真 如何实践 正直不得罪人的方式 这里是一些关键的问题&#xff0c;在你感觉要“绝对诚实”地表达时考虑 率真这里有若干问题要考虑&#xff1a; 测试架构师作为软件开发团队中的关键角色之一&#xff0c;需要具备多种专…

Python编码系列—Python SQL与NoSQL数据库交互:深入探索与实战应用

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

极狐GitLab 多行命令的 CI 日志管理体验的改进

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…

Python中15个递归函数经典案例解析

文末赠免费精品编程资料~~ 递归是Python编程中一个强大的工具&#xff0c;它允许函数调用自身以解决复杂问题。在本文中&#xff0c;我们将探索15个递归函数的经典案例&#xff0c;从基础到进阶&#xff0c;帮助你理解和掌握递归编程。 1. 阶乘计算 阶乘是一个常见的递归应用…

CSP-CCF 202109-1 数组推导

一、问题描述 二、解答 初版&#xff1a; 只得了60分 #include<iostream> using namespace std; int main() {int n;cin >> n;int B[101] { 0 };int sum_max 0;int sum_min0;//以防错误“使用未初始化的局部变量”&#xff0c;建议所有变量都要初始化&#xf…