iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL的锁机制以及表的生命周期
  • 524
分享到

MySQL的锁机制以及表的生命周期

2024-04-02 19:04:59 524人浏览 薄情痞子
摘要

这篇文章主要讲解了“Mysql的锁机制以及表的生命周期”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的锁机制以及表的生命周期”吧!  1.MySQ

这篇文章主要讲解了“Mysql机制以及表的生命周期”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql的锁机制以及表的生命周期”吧!

  1.MySQL中并发和隔离控制机制

  Meta-data元数据锁:在table cache缓存里实现的,为DDL(Data Definition Language)提供隔离操作。一种特别的meta-data元数据类型,叫Name Lock。(sql层)

  表级table-level数据锁(SQL层)

  存储引擎特有机制 -- row locks行锁,page locks页锁,table locks表级,versioning版本(在引擎中实现)

  全局读锁 -- FLUSH TABLES WITH READ LOCK(SQL层)

  2.在语句执行中表的生命周期

  DML(Data Manipulation Language)例子:

  计算语句使用到的所有表

  在每个表:打开open表 -- 从table cache缓存里得到TABLE对象,并在此表加上meta-data元数据锁

  等待全局读锁后改变数据

  在每个表:锁lock表 -- 在表加上table-level数据锁

  执行语句:调用:handler::write_row()/read_rnd()/read_index(),等;隐式地调用引擎级engine-level锁机制

  在每个表:释放表的数据锁

  在每个表:释放表的DDL锁并把表放回table cache缓存里

  DDL语句也是一样,没有典型的执行计划。

  3.获取meta-data元数据锁

  meta-data元数据锁的实现作为TABLE对象的一个属性,TABLE对象代表了table cache缓存。

  meta-data元数据锁为如下任何一种:shared共享锁 -- 隐式地加锁,只通过标记TABLE对象“被使用”;semi-exclusive半独享锁,也叫Name Lock,RENAME操作会在源表和目标加上此锁;exclusive独享,也叫exclusive name lock,CREATE TABLE ... SELECT操作会在目标表上加上此锁,如果没有的话。

  4.表高速缓存(table cache)

  是一个HASH变量,叫open_cache

  TABLE对象是HASH元素

  以HASH的操作被LOCK_open mutex互斥量保护

  内部结构(The table cache: internal structure)

  在缓存里,每个物理表可能被多个TABLE实例表示

  相同表的所有TABLE实例,通过相连的列(a linked list)连接着

  每个TABLE实例有一个table cache缓存版本的复制 -- TABLE实例保存的版本不会和当前table cache缓存版本一致,而是保存旧的和从缓存删除的

  被某些语句使用的TABLE实例被会标记为对其它的语句来说是无效的 -- 这就是meta-data元数据锁的本质

  在缓存中的TABLE实例通常地有一个有效的句柄实例连接着它

  内部运算(The table cache: operations)

  主要的代码在:sql/sql_base.cc,sql/lock.cc,sql/table.h,sql/sql_table.cc

  主要的方法:open_table(),close_thread_tables(),close_cached_table(),lock_table_names()

  事实上,一个概念/对象组合不仅用于缓存或锁定:LOCK_open mutex互斥量也用到其它的操作,如:使磁盘上和处理中的表创建的原子性

  典型的操作,来自隔离等级Pov的重要(注:isolation PoV没研究出是什么意思):语句查询时,打开和关闭表 -- shared共享锁;强制和等待直到表的所有实例被关闭 -- exclusive独享(但不完全);Name Lock -- 特殊地情况,当手上没有TABLE实例,只能使用一个特殊的占位符(甚至表可能不存在)。

感谢各位的阅读,以上就是“MySQL的锁机制以及表的生命周期”的内容了,经过本文的学习后,相信大家对MySQL的锁机制以及表的生命周期这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL的锁机制以及表的生命周期

本文链接: https://www.lsjlt.com/news/59458.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL的锁机制以及表的生命周期
    这篇文章主要讲解了“MySQL的锁机制以及表的生命周期”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL的锁机制以及表的生命周期”吧!  1.MySQ...
    99+
    2024-04-02
  • JVM类加载机制及生命周期的详细介绍
    这篇文章主要讲解了“JVM类加载机制及生命周期的详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JVM类加载机制及生命周期的详细介绍”吧!一.目标:什么是类的加载?类的生命周期?类加载...
    99+
    2023-06-02
  • Golang函数的生命周期控制
    go 语言函数的生命周期包括:声明阶段、调用阶段和返回阶段。实战案例:简单函数:在声明阶段定义,在调用阶段通过函数名调用,在返回阶段返回结果。defer 函数:在返回阶段执行指定代码,用...
    99+
    2024-04-18
    golang 生命周期 作用域
  • Spring的生命周期
    Spring的生命周期 Spring框架是一个非常流行的Java企业级开发框架,它提供了很多强大的功能,包括依赖注入、AOP、事务管理等。在使用Spring框架时,了解Spring的生命周期非常重要,可以帮助我们更好地理解Spring框架...
    99+
    2023-09-06
    面试 java Powered by 金山文档
  • Rust指南之生命周期机制详解
    目录前言1、所有权中的垂悬引用解析2、结构体中使用String 而不用&str 的原因3、生命周期注释4、结构体中使用字符串切片引用5、静态生命周期6、泛型、特性与生命周期综...
    99+
    2022-11-13
    Rust生命周期 Rust生命周期机制
  • maven的生命周期及常用命令介绍
    maven简介及优势     maven是一个项目构建和管理的工具,提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。maven的...
    99+
    2023-05-30
    maven 生命周期 命令
  • mysql中sql的生命周期是什么
    这篇文章主要介绍mysql中sql的生命周期是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MYSQL Query Processingsql的执行过程和mysql体系架构基本一...
    99+
    2024-04-02
  • vue中的生命周期及钩子函数
    目录1.什么是生命周期2.vue 的生命周期3.生命周期钩子函数1.什么是生命周期 Vue 实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载 Dom、渲染 &r...
    99+
    2024-04-02
  • MySQL的死锁机制以及避免死锁的方法
    本篇内容主要讲解“MySQL的死锁机制以及避免死锁的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL的死锁机制以及避免死锁的方法”吧! ...
    99+
    2024-04-02
  • MySQL的innoDB锁机制以及死锁的处理方法
    本篇内容主要讲解“MySQL的innoDB锁机制以及死锁的处理方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL的innoDB锁机制以及死锁的处理方法...
    99+
    2024-04-02
  • vue的混入可以使用生命周期吗
    本教程操作环境:windows7系统、vue3版,DELL G3电脑。mixins(混入)基本介绍我们在开发过程中,会遇到一些相同逻辑和功能的组件,我们不会在每一个组件中都写一套代码,这样会导致代码冗余。mixins的作用就是将相同的逻辑和...
    99+
    2023-05-14
    mixin Vue
  • vue的生命周期钩子与父子组件的生命周期详解
    目录vue的生命周期钩子的介绍父子组件的生命周期加载渲染过程父组件更新过程子组件更新过程父子组件更新过程销毁过程代码示例created和mounted的区别vue的生命周期钩子的介绍...
    99+
    2022-11-13
    vue 生命周期 vue 父子组件生命周期
  • 详解uniapp的生命周期
    Uniapp作为一款跨平台应用开发框架,具有丰富的生命周期,以下是Uniapp的生命周期: 1.应用生命周期 应用生命周期是指应用程序从启动到关闭的整个过程,包括应用程序的启动、前后...
    99+
    2023-05-17
    vue uniapp uniapp生命周期
  • React的生命周期详解
    一、React生命周期 React 生命周期分为三种状态 1. 初始化2.更新3.销毁 初始化 1、getDefaultProps() 设置默认的props,也可以用dufault...
    99+
    2024-04-02
  • Bean 的生命周期总结
      目录 一、Bean生命周期的五个阶段 Bean的初始化 二、@PostConstruct 和 @PreDestroy 各自的效果 三、 实例化和初始化的区别 四、为什么要先设置属性在进⾏初始化呢? 一、Bea...
    99+
    2023-09-10
    java 开发语言 spring
  • 浅谈vue的生命周期
    目录1.什么是生命周期有什么作用2.第一次加载页面会触发哪几个钩子3.简述每个周期应用于哪个场景4.created和mounted的区别5.vue在哪个生命周期获取数据总结1.什么是...
    99+
    2024-04-02
  • 详解WPF中的APP生命周期以及全局异常捕获
    目录APP生命周期窗体生命周期事件全局异常捕获APP生命周期 wpf项目目录中有一个App.xaml.cs文件,该文件中App是一个partical类,与之对应的另一partical...
    99+
    2023-03-02
    WPF生命周期 WPF 全局异常捕获 WPF 异常捕获
  • Java中Servlet的生命周期
    目录init()service()doGet()doPost()destroy() 方法架构Servlet从创建直到毁灭的整个过程: Servlet 初始化后调用 init () 方...
    99+
    2024-04-02
  • 老生常谈vue的生命周期
    目录一、什么是生命周期二、生命周期函数三、生命周期的流程四、简单的生命周期代码总结一、什么是生命周期 每一个组件都可能经历从创建,挂载,更新,卸载的过程。 在这个过程中的某一个阶段,...
    99+
    2024-04-02
  • 【Spring】Spring的Bean的生命周期
    作者简介:大家好,我是五度鱼,一个普通的Java领域博主,不停输出Java技术博客和干货。座右铭:锲而不舍,金石可镂。个人主页:五度鱼学Java的主页 文章目录 前言1. 什么是Bean的生命周期?2. 为什么要知道Bean...
    99+
    2023-08-17
    java Bean生命周期 spring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作