侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

关于oracle锁的分析-驴妈妈旅游网DBA

数据库  /  管理员 发布于 2年前   208

1.什么是ORACLE锁
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁就是实现数据库并发控制的一个非常重要的技术。


2.ORACLE锁的类型
在 数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它修改。加了共享锁的数据对象可以被其他事务读取,但不能被删除和修改。数据库利用这 两种基本的锁类型来对数据库的事务进行并发控制。

?
根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁 (data locks,数据锁),用于保护数据的完整性;DDL锁(dictionary locks,字典锁),用于保护数据库对象的结构,如表、索引等的结构定义;内部锁和闩(internal locks and latches),保护 数据库的内部结构。

在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。?
当 Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志 位进行置位。这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、 SX、S、X 等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。

TM锁的类型0 none?1 NULL 空 Select?2 SS(Row-S) 行级共享锁,其他对象?只能查询这些数据行 Select for update、Lock for?update、
Lock row share?3 SX(Row-X) 行级排它锁,?在提交前不允许做DML操作 Insert、Update、?Delete、Lock row share?4 S(Share) 共享锁 Create index、Lock share?5 SSX(S/Row-X) 共享行级排它锁 Lock share row exclusive?6 X(Exclusive) 排它锁 Alter table、Drop able、Drop index、Truncate table 、Lock exclusive

Oracle举例

 

 

推荐交流博客
程序员百味    百味创富社区 

 

 


  • 上一条:
    Oracle显示根据高考分数模拟录取
    下一条:
    Oracle更新操作笔记以及语句
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • mysql8错误:SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client(0个评论)
    • mysql性能优化之8种常见SQL错误用法(0个评论)
    • ubuntu系统中mysql8设置用户远程连接流程步骤(0个评论)
    • 2022年最新mysql面试题附答案,建议收藏(0个评论)
    • 2022最新收集的MySQL索引面试题(0个评论)
    • 近期文章
    • 2022 年 Laravel 状况调查(0个评论)
    • go语言中将CSV文件数据转换为JSON格式并保存到文件(0个评论)
    • go语言中将json格式数据文件保存到csv文件(0个评论)
    • go语言中实现堆排序算法代码示例(0个评论)
    • 在laravel框架中使用中间件 + 队列的方式记录请求日志(0个评论)
    • laravel框架常用速查表收集(0个评论)
    • go语言中查找最长不含有重复字符的字符串算法示例代码(0个评论)
    • laravel中where IN多列特殊查询类型代码示例(0个评论)
    • 使用Laravel Airdrop加速您的CI构建(0个评论)
    • go语言中日期时间戳比较功能示例代码(0个评论)
    • 近期评论
    • 博主 在

      centos7中Meili Search搜索引擎安装流程步骤中评论 @鹿   执行以下命令看看你的2.27版本是否存在strin..
    • 鹿 在

      centos7中Meili Search搜索引擎安装流程步骤中评论 这是我的错误提示,下载了对应的glibc-2.25.tar.gz后续按照教程操作..
    • 阿凡达123 在

      golang 怎么做热更新中评论 也可以看看这个:https://github.com/edwingeng/hot..
    • 博主 在

      hyperf框架常用命令-在centos7中退出命令及在docker容器中退出命令中评论 @路过的靓仔:cdn静态资源被墙,已修复..
    • GGGGGGGGG 在

      layui框架常用输入框介绍中评论 写的很好解决问题..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客