南大通用 GBase 8s 锁 讲解 1.锁机制在多用户数据库系统中用户可以锁定一个对象可以防止其他用户修改锁定的对象多个并发用户访问数据库数据的情况下为了保证数据的完整性锁是必需的锁作为关联到数据项的对象程序可以显示对数据加锁数据库系统也可以隐式的对对象进行加锁2.锁的分类Shared locks: 共享锁多个用户可以同时读取相同的记录Exclusive locks: 排他锁同一时间仅仅有一个用户可以读取相同的记录Promotable (Update) lock: 提升锁可以升级 (从共享锁提升为排他锁) 或者降级Intent lock: 专一锁是一种表级锁标识在该表上有一个游标在读取数据3.锁的类型介绍1共享锁lock-S如果一个对象上没有排他锁则共享锁可以加在该对象上防止其他事务更新数据但同时其他事务可以读取该数据 (其他事务可以加共享锁)多个事务可以在同一个对象上加多个共享锁2排他锁 (lock-X)如果记录上没有任何锁排他锁才可以加在该对象上一旦在记录上加了排他锁则不能在该记录上增加任何锁了直至锁释放防止其他事务读取和更修数据3更新锁 (lock-U)在更新Cursor中使用更新锁由cursors 含有 ‘for update’ 选项执行时产生的 只能在没有排他锁或者更新锁的记录上加更新锁当锁定的记录真正执行的时候更新锁将提升为排他锁4专一锁 (lock-IX or IS)由IDS自动分配如果一条记录上的记录被更新一个排他锁将分配在该记录上同时将该记录的表上自动加上专一锁这能保证没有session可以在该表上增加排他锁只要该表中有记录被增加了排他锁4.锁的兼容矩阵SXSTRUEFALSEXFALSEFALSE5.锁的有效期程序控制数据库锁的有效期当数据库关闭后数据库锁将被释放根据数据库是否使用了事务的情况表锁的有效期不同【如果数据没有使用事务没有事务日志也不使用commit work语句显示对一个表lock当执行unload table时锁将被释放;】当数据库使用了事务事务结束时将释放事务所有的锁 table, row, page, and index locks6.锁的粒度及应用1锁的粒度介绍锁粒度 说明数据库锁 针对整个数据库的锁表锁 针对整个表的锁页锁 针对整页数据的锁行锁 针对一个数据行的锁字节锁 在包含varchar的行上的锁键锁 在索引中的一个键值上的锁2不同锁粒度的应用一般来讲锁的粒度越大并发性就越低程序控制将越简单。数据库锁应用数据库管理活动比如 imports 和 exports表锁应用当整个表或者表的大部分数据需要更新加表级锁效率高页级锁应用当按数据物理顺序进行访问和更新时页级锁效率高行级锁应用OLTP 事务采用行级锁效率高以下语句将隐式的对表加锁直到事务结束后释放:ALTER FRAGMENTALTER INDEXALTER TABLECREATE INDEX (if not using ONLINE keyword)DROP INDEX (if not using ONLINE keyword)RENAME COLUMNRENAME TABLE3哪种锁粒度是最优的取决于事务本身的特点当更新表中相对较小一部分数据的时候采用行级锁将获取最好的性能如果一个事务只访问表中一小部分数据那就采用行级锁如果一个事务频繁的访问整个表的数据设置更粗的粒度比如表级锁如果更新数据库中大部分表的大部分数据的情况下, 采用数据库级别的锁4关于查看锁及事务情况的指令查看表锁模式:oncheck –pt dbname:tablenamedbschema –d dbname –t tablename -ss查看用户进程锁等待情况使用: onstat –u查看锁使用和等待情况使用: onstat -k监控数据库事务及其状态使用: onstat -x

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/29 2:52:50
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/29 2:52:51
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/29 1:29:30
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/29 1:39:24
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/29 22:57:57
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/29 2:52:53

日新闻

周新闻