爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      openGauss代码结构

      首页 知识中心 软件开发 文章详情页

      openGauss代码结构

      2024-10-25 07:12:30 阅读次数:23

      SQL

      一、通信管理

      openGauss查询响应是使用简单的“单一用户对应一个服务器线程”的客户端/服务器模型实现的。由于我们无法提前知道需要建立多少个连接,因此必
      须使用主进程(GaussMaster)主进程在指定的TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)
      端口上侦听传入的连接,只要检测到连接请求,主进程就会生成一个新的服务器线程。服务器线程之间使用信号量和共享内存相互通信,以确保整个并
      发数据访问期间的数据完整性。

      客户端进程可以被理解为满足openGauss协议的任何程序。许多客户端都基于C语言库libpq进行通信,但是该协议有几种独立的实现,例如Java JDBC
      驱动程序。

      建立连接后,客户端进程可以将查询发送到后端服务器。查询是使用纯文本传输的,即在前端(客户端)中没有进行解析。服务器解析查询语句、创建
      执行计划、执行并通过在已建立的连接上传输检索到的结果集,将其返回给客户端。

      openGauss数据库中处理客户端连接请求的模块叫做postmaster。前端程序发送启动信息给postmaster,postmaster根据信息内容建立后端响应线
      程。postmaster也管理系统级的操作比如调用启动和关闭程序。postmaster在启动时创建共享内存和信号量池,但它自身不管理内存、信号量和锁操
      作。

      当客户端发来一个请求信息,postmaster立刻启动一个新会话,新会话对请求进行验证,验证成功后为它匹配后端工作线程。这种模式架构上处理简单,
      但是高并发下由于线程过多,切换和轻量级锁区域的冲突过大导致性能急剧下降。因此openGauss通过线程资源池化复用的技术来解决该问题。线程池
      技术的整体设计思想是线程资源池化,并且在不同连接直接复用。

      1、postmaster源码组织

      postmaster源码目录为:/src/gausskernel/process/postmaster。postmaster源码文件如表2所示。
      表2 postmaster源码文件
      postmaster.cpp 用户响应主程序
      aiocompleter.cpp 完成预取(Prefetch)和后端写(BackWrite)I/O操作
      alarmchecker.cpp 闹钟检查线程
      lwlockmonitor.cpp 轻量锁的死锁检测
      pagewriter.cpp 写页面
      pgarch.cpp 日志存档
      pgaudit.cpp 审计线程
      pgstat.cpp 统计信息收集
      startup.cpp 服务初始化和恢复
      syslogger.cpp 捕捉并写所有错误日志
      autovacuum.cpp 垃圾清理线程
      bgworker.cpp 后台工作线程(服务共享内存)
      bgwriter.cpp 后台写线程(写共享缓存)
      cbmwriter.cpp remoteservice.cpp postmaster信号处理
      checkpointer.cpp 检查点处理
      fencedudf.cpp 保护模式下运行用户定义函数
      gaussdb_version.cpp 版本特性控制
      twophasecleaner.cpp 清理两阶段事务线程
      walwriter.cpp 预写式日志写入

      二、SQL引擎

      数据库的SQL引擎是数据库重要的子系统之一,它对上负责承接应用程序发送过来的SQL语句,对下则负责指挥执行器运行执行计划。其中优化器作为SQL
      引擎中最重要、最复杂的模块,被称为数据库的“大脑”,优化器产生的执行计划的优劣直接决定数据库的性能。
      本篇从SQL语句发送到数据库服务器开始,对SQL引擎的各个模块进行全面的介绍与源码解析,以实现对SQL语句执行的逻辑与源码更深入的理解。其响
      应流程如图1所示。

      三、openGauss代码结构

      1、查询解析——parser

      SQL解析对输入的SQL语句进行词法分析、语法分析、语义分析,获得查询解析树或者逻辑计划。SQL查询语句解析的解析器(parser)阶段包括如下:

      词法分析:从查询语句中识别出系统支持的关键字、标识符、操作符、终结符等,每个词确定自己固有的词性。
      语法分析:根据SQL语言的标准定义语法规则,使用词法分析中产生的词去匹配语法规则,如果一个SQL语句能够匹配一个语法规则,则生成对应的语法
      树(Abstract Synatax Tree,AST)。
      语义分析:对语法树(AST)进行检查与分析,检查AST中对应的表、列、函数、表达式是否有对应的元数据(指数据库中定义有关数据特征的数据,用
      来检索数据库信息)描述,基于分析结果对语法树进行扩充,输出查询树。主要检查的内容包括:
      ①检查关系的使用:FROM子句中出现的关系必须是该查询对应模式中的关系或视图。
      ②检查与解析属性的使用:在SELECT句中或者WHERE子句中出现的各个属性必须是FROM子句中某个关系或视图的属性。
      ③检查数据类型:所有属性的数据类型必须是匹配的。

      词法和语法分析代码基于gram.y和scan.l中定义的规则,使用Unix工具bison和flex构建产生。其中,词法分析器在文件scan.l中定义,它负责识别
      标识符、SQL关键字等。对于找到的每个关键字或标识符,都会生成一个标记并将其传递给解析器。语法解析器在文件gram.y中定义,由一组语法规则
      和每当触发规则时执行的动作组成,基于这些动作代码构架并输出语法树。在解析过程中,如果语法正确,则进入语义分析阶段并建立查询树返回,否
      则将返回错误,终止解析过程。

      解析器在词法和语法分析阶段仅使用有关SQL语法结构的固定规则来创建语法树。它不会在系统目录中进行任何查找,因此无法理解所请求操作的详细语
      义。

      语法解析完成后,语义分析过程将解析器返回的语法树作为输入,并进行语义分析以了解查询所引用的表、函数和运算符。用来表示此信息的数据结构
      称为查询树。解析器解析过程分为原始解析与语义分析,分开的原因是,系统目录查找只能在事务内完成,并且我们不希望在收到查询字符串后立即启
      动事务。原始解析阶段足以识别事务控制命令(BEGIN,ROLLBACK等),然后可以正确执行这些命令而无需任何进一步分析。一旦知道我们正在处理
      实际查询(例如SELECT或UPDATE),就可以开始事务,这时才调用语义分析过程。

      1) parser源码组织
      parser源码目录为:/src/common/backend/parser。parser源码文件如表3所示。
      表3 parser源码文件
      parser.cpp 解析主程序
      scan.l 词法分析,分解查询成token
      scansup.cpp 处理查询语句转义符
      kwlookup.cpp 将关键词转化为具体的token
      keywords.cpp 标准关键词列表
      analyze.cpp 语义分析
      gram.y 语法分析,解析查询tokens并产生原始解析树
      parse_agg.cpp 处理聚集操作,比如SUM(col1),AVG(col2)
      parse_clause.cpp 处理子句,比如WHERE,ORDER BY
      parse_compatibility.cpp 处理数据库兼容语法和特性支持
      parse_coerce.cpp 处理表达式数据类型强制转换
      parse_collate.cpp 对完成表达式添加校对信息
      parse_cte.cpp 处理公共表格表达式(WITH 子句)
      parse_expr.cpp 处理表达式,比如col, col+3, x = 3
      parse_func.cpp 处理函数,table.column和列标识符
      parse_node.cpp 对各种结构创建解析节点
      parse_oper.cpp 处理表达式中的操作符
      parse_param.cpp 处理参数
      parse_relation.cpp 支持表和列的关系处理程序
      parse_target.cpp 处理查询解析的结果列表
      parse_type.cpp 处理数据类型
      parse_utilcmd.cpp 处理实用命令的解析分析

      2、SQL查询分流——traffic cop

      traffic cop模块负责查询的分流,它负责区分简单和复杂的查询指令。事务控制命令(例如BEGIN和ROLLBACK)非常简单,因此不需要其它处理,
      而其它命令(例如SELECT和JOIN)则传递给重写器(参考第6章)。这种区分通过对简单命令执行最少的优化,并将更多的时间投入到复杂的命令上,
      从而减少了处理时间。简单和复杂查询指令也对应如下2类解析:

      软解析(简单,旧查询):当openGauss共享缓冲区中存在已提交SQL语句的已解析表示形式时,可以重复利用缓存内容执行语法和语义检查,避免查
      询优化的相对昂贵的操作。
      硬解析(复杂,新查询):如果无缓存语句可重用,或者第一次将SQL语句加载到openGauss共享缓冲区中,则会导致硬解析。同样,当一条语句在共
      享缓冲区中老化时,再次重新加载该语句时,还会导致另一次硬解析。因此,共享Buffer的大小也会影响解析调用的数量。
      我们可以查询gs_prepared_statements来查看缓存了什么,以区分软/硬解析(它仅对当前会话可见)。此外,gs_buffercache模块提供了一种实
      时检查共享缓冲区高速缓存内容的方法,它甚至可以分辨出有多少数据块来自磁盘,有多少数据来自共享缓冲区。

      1) traffic cop(tcop)源码组织
      traffic cop(tcop)源码目录为:/src/common/backend/tcop。traffic cop(tcop)源码文件如表4所示。
      表4 traffic cop(tcop)源码文件
      auditfuncs.cpp 记录数据库操作审计信息
      autonomous.cpp 创建可被用来执行SQL查询的自动会话
      dest.cpp 与查询结果被发往的终点通信
      utility.cpp 数据库通用指令控制函数
      fastpath.cpp 在事务期间缓存操作函数和类型等信息
      postgres.cpp 后端服务器主程序
      pquery.cpp 查询处理指令
      stmt_retry.cpp SQL语句错误错误码并重试

      3、查询重写——rewriter

      查询重写利用已有语句特征和关系代数运算来生成更高效的等价语句,在数据库优化器中扮演关键角色;尤其在复杂查询中,能够在性能上带来数量级的
      提升,可谓是“立竿见影”的“黑科技”。SQL语言是丰富多样的,非常的灵活,不同的开发人员依据经验的不同,手写的SQL语句也是各式各样,另外还可
      以通过工具自动生成。同时SQL语言是一种描述性语言,数据库的使用者只是描述了想要的结果,而不关心数据的具体获取方式,输入数据库的SQL语言
      很难做到是以最优形式表示的,往往隐含了一些冗余信息,这些信息可以被挖掘用来生成更加高效的SQL语句。查询重写就是把用户输入的SQL语句转换
      为更高效的等价SQL,查询重写遵循2个基本原则:

      等价性:原语句和重写后的语句,输出结果相同。
      高效性:重写后的语句,比原语句在执行时间和资源使用上更高效。

      介绍openGauss如下几个关键的查询重写技术:
      常量表达式化简:常量表达式即用户输入SQL语句中包含运算结果为常量的表达式,分为算数表达式、逻辑运算表达式、函数表达式。查询重写可以对常
      量表达式预先计算以提升效率。例如“SELECT * FROM table WHERE a=1+1; ”语句被重写为“SELECT * FROM table WHERE a=2”语句。
      子查询提升:由于子查询表示的结构更清晰,符合人的阅读理解习惯,用户输入的SQL语句往往包含了大量的子查询,但是相关子查询往往需要使用嵌套
      循环的方法来实现,执行效率较低,因此将子查询优化为“Semi Join”的形式可以在优化规划时选择其它的执行方法,或能提高执行效率。例如“SELECT
      * FROM t1 WHERE t1.a in (SELECT t2.a FROM t2); ”语句可重写为“SELECT * FROM t1 LEFT SEMI JOIN t2 ON t1.a=t2.a”语句。
      谓词下推:谓词(Predicate),通常为SQL语句中的条件,例如“SELECT * FROM t1 WHERE t1.a=1; ”语句中的“t1.a=1”即为谓词。等价类
      (Equivalent-Class)是指等价的属性、实体等对象的集合,例如“WHERE t1.a=t2.a”语句中,t1.a和t2.a互相等价,组成一个等价类{t1.a,
      t2.a}。利用等价类推理(又称作传递闭包),我们可以生成新的谓词条件,从而达到减小数据量和最大化利用索引的目的。如图2所示,我们举一个形
      象的例子来说明谓词下推的威力。假设有两个表t1、t2;它们分别包含[1,2,3,…100]共100行数据,那么查询语句“SELECT * FROM t1 JOIN t2
      ON t1.a=t2.a WHERE t1.a=1”的逻辑计划在经过查询重写前后的对比。

      三、openGauss代码结构

      查询重写的主要工作在优化器中实现,除此之外,openGauss还提供了基于规则的rewrite接口,用户可以通过创建替换规则的方法对逻辑执行计划进
      行改写。例如视图展开功能即通过rewrite模块中的规则进行替换,而视图展开的规则是在创建视图的过程中默认创建的。

      1) rewriter源码组织
      rewriter源码目录为:/src/gausskernel/optimizer/rewrite。rewriter源码文件如表5所示。
      表5 rewriter源码文件
      rewriteDefine.cpp 定义重写规则
      rewriteHandler.cpp 重写主模块
      rewriteManip.cpp 重写操作函数
      rewriteRemove.cpp 重写规则移除函数
      rewriteRlsPolicy.cpp 重写行粒度安全策略
      rewriteSupport.cpp 重写辅助函数

      4、查询优化——optimizer

      优化器(optimizer)的任务是创建最佳执行计划。一个给定的SQL查询(以及一个查询树)实际上可以以多种不同的方式执行,每种方式都会产生相同
      的结果集。如果在计算上可行,则查询优化器将检查这些可能的执行计划中的每一个,最终选择预期运行速度最快的执行计划。

      在某些情况下,检查执行查询的每种可能方式都会占用大量时间和内存空间,特别是在执行涉及大量连接操作(Join)的查询时。为了在合理的时间内
      确定合理的(不一定是最佳的)查询计划,当查询连接数超过阈值时,openGauss使用遗传查询优化器(genetic query optimizer),通过遗传算法
      来做执行计划的枚举。

      优化器的查询计划(plan)搜索过程实际上与称为路径(path)的数据结构一起使用,该路径只是计划的简化表示,其中仅包含确定计划所需的关键信
      息。确定代价最低的路径后,将构建完整的计划树以传递给执行器。这足够详细地表示了所需的执行计划,供执行者运行。在下文中,我们将忽略路径
      和计划之间的区别。

      5、查询执行——executor

      执行器(executor)采用优化器创建的计划,并对其进行递归处理以提取所需的行的集合。这本质上是一种需求驱动的流水线执行机制。即每次调用一个计划节点时,它都必须再传送一行,或者报告已完成传送所有行。

      三、openGauss代码结构

      如图4所示的执行计划树示例,顶部节点是Merge Join节点。在进行任何合并操作之前,必须获取2个元组(MergeJoin节点的2个子计划各返回1个元
      组)。因此,执行器以递归方式调用自身以处理其子计划(如从左子树的子计划开始)。Merge Join由于要做归并操作,因此它要子计划按序返回元组
      ,从图4可以看出,它的子计划是一个Sort节点。Sort的子节点可能是Seq Scan节点,代表对表的实际读取。执行SeqScan节点会使执行程序从表中获
      取一行并将其返回到调用节点。Sort节点将反复调用其子节点以获得所有要排序的行。当输入完毕时(如子节点返回NULL而不是新行),Sort算子对获
      取的元组进行排序,它每次返回1个元组,即已排序的第1行。然后不断排序并向父节点传递剩余的排好序的元组。

      Merge Join节点类似地需要获得其右侧子计划中的第1个元组,看是否可以合并。如果是,它将向其调用方返回1个连接行。在下1次调用时,或者如果
      它不能连接当前输入对,则立即前进到1个表或另1个表的下1行(取决于比较的结果),然后再次检查是否匹配。最终,1个或另1个子计划用尽,并且
      Merge Join节点返回NULL,以指示无法再形成更多的连接行。

      复杂的查询可能涉及多个级别的计划节点,但是一般方法是相同的:每个节点都会在每次调用时计算并返回其下1个输出行。每个节点还负责执行优化器
      分配给它的任何选择或投影表达式。

      执行器机制用于执行所有4种基本SQL查询类型:SELECT、INSERT、UPDATE和DELETE。
      对于SELECT,顶级执行程序代码仅需要将查询计划树返回的每一行发送给客户端。
      对于INSERT,每个返回的行都插入到为INSERT指定的目标表中。这是在称为ModifyTable的特殊顶层计划节点中完成的。(1个简单的“INSERT …
      VALUES”命令创建了1个简单的计划树,该树由单个Result节点组成,该节点仅计算一个结果行,并传递给ModifyTable树节点实现插入)。
      对于UPDATE,优化器对每个计算的更新行附着所更新的列值,以及原始目标行的TID(元组ID或行ID);此数据被馈送到ModifyTable节点,并使用
      该信息来创建新的更新行并标记旧行已删除。
      对于DELETE,计划实际返回的唯一列是TID,而ModifyTable节点仅使用TID访问每个目标行并将其标记为已删除。
      执行器的主要处理控制流程如下:
      创建查询描述。
      查询初始化:创建执行器状态(查询执行上下文)、执行节点初始化(创建表达式与每个元组上下文、执行表达式初始化)。
      查询执行:执行处理节点(递归调用查询上下文、执行表达式,然后释放内存,重复操作)。
      查询完成;执行未完成的表格修改节点。
      查询结束:递归释放资源、释放查询及其子节点上下文。
      释放查询描述。

      1) executor源码组织
      executor源码目录为:/src/gausskernel/runtime/executor。executor源码文件如表7所示。
      表7 executor源码文件
      execAmi.cpp 各种执行器访问方法
      execClusterResize.cpp 集群大小调整
      execCurrent.cpp 支持WHERE CURRENT OF
      execGrouping.cpp 支持分组、哈希和聚集操作
      execJunk.cpp 伪列的支持
      execMain.cpp 顶层执行器接口
      execMerge.cpp 处理MERGE指令
      execParallel.cpp 支持并行执行
      execProcnode.cpp 分发函数按节点调用相关初始化等函数
      execQual.cpp 评估资质和目标列表表达式
      execScan.cpp 通用的关系扫描
      execTuples.cpp 元组相关的资源管理
      execUtils.cpp 多种执行相关工具函数
      functions.cpp 执行SQL语言函数
      instrument.cpp 计划执行工具
      lightProxy.cpp 轻量级执行代理
      node*.cpp 处理*相关节点操作的函数
      opfusion.cpp、opfusion_util.cpp、opfusion_scan.cpp 旁路执行器:处理简单查询
      spi.cpp 服务器编程接口
      tqueue.cpp 并行后端之间的元组信息传输
      tstoreReceiver.cpp 存储结果元组
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/u_13236892/6110125,作者:哭泣的馒头,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:从零开始:在VSCode中打造完美的C++开发环境

      下一篇:Java服务端数据库索引优化:提升查询性能

      相关文章

      2025-05-14 10:03:13

      【Mybatis】-防止SQL注入

      【Mybatis】-防止SQL注入

      2025-05-14 10:03:13
      SQL , 执行 , 日志 , 注入 , 缓存 , 编译 , 语句
      2025-05-14 10:03:13

      【Mybatis】-动态SQL

      【Mybatis】-动态SQL

      2025-05-14 10:03:13
      include , set , sql , SQL , 条件 , 标签
      2025-05-14 10:02:48

      SQL Server 账号管理1

      SQL Server 账号管理主要包含登录名、用户、架构、角色等管理。通过对账号的管理可以有效的提高数据库系统的安全性,规范运维及使用。

      2025-05-14 10:02:48
      Server , SQL , 对象 , 数据库 , 权限 , 用户
      2025-05-14 10:02:48

      SQL Server 事务日志体系结构1--基本术语

      事务包括对数据库的一次更改或一系列更改。它有一个明确开始和明确结束。开始时使用BEGIN TRANSACTION语句,或者SQL Server会自动为您开始一个事务。

      2025-05-14 10:02:48
      Server , SQL , 事务 , 数据库 , 日志 , 磁盘
      2025-05-14 09:51:21

      mysql数据库中decimal数据类型比较大小

      在MySQL中,DECIMAL数据类型用于存储精确的数值,它非常适合用于需要高精度计算的场景,如金融应用。当我们需要在MySQL数据库中比较DECIMAL类型数据的大小时,可以使用标准的比较运算符,如>, <, >=, <=, = 和 <>(或!=)。

      2025-05-14 09:51:21
      MySQL , SQL , 数据类型 , 查询 , 比较 , 示例
      2025-05-13 09:50:48

      查找正在执行的select以及dml语句的相关信息

      查找正在执行的select以及dml语句的相关信息

      2025-05-13 09:50:48
      select , session , sql , SQL , 语句
      2025-05-13 09:50:48

      函数索引测试

      函数索引测试

      2025-05-13 09:50:48
      emp , gt , SQL
      2025-05-13 09:50:38

      磁盘组扩容测试01

      磁盘组扩容测试01

      2025-05-13 09:50:38
      gt , ORCL , SQL
      2025-05-13 09:50:38

      ORA-00823异常处理

      ORA-00823异常处理

      2025-05-13 09:50:38
      gt , max , size , SQL
      2025-05-13 09:50:28

      添加控制文件—场景(DG备库)—采用Switchover方式

      添加控制文件—场景(DG备库)—采用Switchover方式

      2025-05-13 09:50:28
      database , gt , mode , SQL
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5243712

      查看更多

      最新文章

      函数索引测试

      2025-05-13 09:50:48

      磁盘组扩容测试01

      2025-05-13 09:50:38

      基础—SQL—DCL(数据控制语言)小结

      2025-05-07 09:09:52

      Java的几种常用包

      2025-04-11 07:15:54

      深入探讨Java的最新技术:文本块和反射的现代应用

      2025-03-18 09:59:07

      【Mybatis】动态 SQL:代码与数据的灵动共舞,奏响数据库查询的华丽乐章

      2025-03-10 09:50:08

      查看更多

      热门文章

      MyBatis SQL 批量更新(代码案例)

      2023-06-15 06:09:01

      Python 实现文件关键字扫描

      2023-06-21 06:40:06

      软件开发入门教程网 Search之​​DELETE 语句

      2023-05-17 06:47:57

      MyBatis的`

      2024-09-24 06:31:02

      183. Spring Boot MyBatis分页插件原理

      2024-05-10 06:56:45

      史上最全的SpringBoot | JPA基本查询SQL

      2024-04-19 07:39:25

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      183. Spring Boot MyBatis分页插件原理

      深入探讨Java的最新技术:文本块和反射的现代应用

      200 Spark DataFrame常用操作- SQL风格语法

      MyBatis SQL 批量更新(代码案例)

      磁盘组扩容测试01

      Oracle 10g/11g下如何将物理Standby库临时激活用于灾备测试

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号