返回顶部
首页 > 资讯 > 数据库 >ORACLE CheckpointQueue和增量检查点
  • 159
分享到

ORACLE CheckpointQueue和增量检查点

2024-04-02 19:04:59 159人浏览 泡泡鱼
摘要

<p style="margin:0in;font-size:20.0pt;"> oracle CheckpointQueue和增量检查点 </p> <p

<p style="margin:0in;font-size:20.0pt;"> oracle CheckpointQueue和增量检查点 </p> <p style="margin:0in;font-size:10.0pt;color:gray;"> <br /> </p> <p style="margin:0in;line-height:15pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;检查点的主要目的是以对数据库的日常操作影响最小的方式刷新脏块。脏块不断的产生,如何将脏块刷新到磁盘中去呢?在8i之前,Oracle定期的住所有的修改操作,将Buffer&nbsp;cache中的所有脏块刷到磁盘,这种刷新脏块的方式被称为完全检查点,这极大的影响了效率,从9i之后只有当关闭数据库时才会发生完全检查点。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:&quot;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从8i开始,Oracle增加了增量检查点的概念,增量检查点的主要作用就是定期的刷新一部分脏块。将脏块一次刷新完是不合理的,因为脏块不断产生,没有穷尽。像完全检查点那样停止用户所有的修改操作,将脏块刷新完再继续,这绝对会极大的影响性能。所有增量检查点的一次刷新部分块是脏块问题的最好解决办法。那么,每次刷新时,都刷新那些块呢?根据统计研究,根据块变脏的顺序,每次刷新那些最早脏的块,这种方式最为合理。为了实现这一点,Oracle在Buffer&nbsp;cache中又建立了一个链表,就是检查点队列。每个块在它变脏时,会被链接到检查点队列的末尾。就好像排队一样,9:00来的人站在第一位,9:05来的人排第二位,以后每来一个人都站在队伍的末尾,这个队伍就是按来到的时间顺序排列的一个队列。检查点队列就是这样,块在变脏时会被链到末尾。因此检查点队列是按块变脏的时间顺序,将块排成了一个队列。<br /> <img src="/attachment/201510/16/30208428_1444975767vwC5.png" width="492" height="419" alt="" /> </p> <p style="margin:0in;"> <br /> </p> <p style="margin:0in;font-family:Calibri;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;如上图,检查点队列中的每一节点,都指向一个脏块。检查点队列每个节点中的信息其实非常少,就是记录对应块在Buffer&nbsp;cache中的地址,脏块对应的重做记录在日志文件中的位置,另外还有前一个节点、后一个节点的地址。检查点队列还有LRU、脏LRU,这些都是双向链表。双向链表就是在节点中记录前、后两个节点的地址。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;检查点队列头部的块是最早变脏的,因此,Oracle会定期唤醒DBWn从检查点队列头开始,沿着检查点队列的顺序,刷新脏块。在刷新脏块的同时,仍可以不断的有新的脏块被链接到检查点队列的尾部。这个定期唤醒DBWn刷新脏块的操作,Oracle就称为增量检查点。 </p> <p style="margin:0in;"> <img src="/attachment/201510/16/30208428_1444975767MQJO.png" width="566" height="482" alt="" style="font-family:微软雅黑;font-size:14px;line-height:21px;white-space:nORMal;" /> </p> <p style="margin:0in;font-family:Calibri;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin:0in;font-family:Calibri;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;如上图,1、2、3号节点所指向的脏块已经被刷新为干净块。同时,又有两个块变脏,它们被链接到了检查点队列的末尾,它们是9号、10号节点。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;检查点队列的头,又被称为检查点位置,Checkpoint&nbsp;postion,这些名称我们不必从字面上去理解。总之,检查点位置就是检查点队列头。检查点队列头节点(也就是检查点位置)的信息,Oracle会频繁的将它记录到控制文件中,而且会很频繁的记录。一般是每隔三秒,有一个专门的进程CKPT,会将检查点位置记录进控制文件。<br /> </p> <p style="margin:0in;"> <img src="/attachment/201510/16/30208428_1444975767KgK4.png" width="589" height="537" alt="" style="font-family:微软雅黑;font-size:14px;line-height:21px;white-space:normal;" /> </p> <p style="margin:0in;font-family:Calibri;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;如上图,当前的检查点位置是检查点队列的1号节点。又一个三秒到了,CKPT进程启动,将新的检查点位置记入控制文件: </p> <p style="margin:0in;"> <img src="/attachment/201510/16/30208428_1444975768lqo9.png" width="582" height="510" alt="" style="font-family:微软雅黑;font-size:14px;line-height:21px;white-space:normal;" /> </p> <p style="margin:0in;font-family:Calibri;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:&quot;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;新的检查点位置是4号节点,它对应当前变脏时间最早的脏块。1、2、3号节点已经从检查点队列中摘除了。因为它们对应的脏块已经不脏了。一般来说,控制文件中的检查点位置之后的块都是脏块。但是有时也例外,因检查点位置每三秒才会更新一次,就像上图,1、2、3号节点对应的脏块已经被刷新过了,但是由于三秒间隔没到,检查点位置还是指向1号节点。只有当三秒到后,检查点位置才会被更新到4号节点上。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;关于检查点队列、检查点位置我们先说到这里,在全面的介绍什么是增量检查点之前,我们先说一下检查点队列的一个重要作用。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;让我们先来总结一下用户修改块时,Oracle内部都发生了什么: </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;1.如果块不在Buffer&nbsp;cache,将块读入Buffer&nbsp;cache </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;2.先生成重做记录,并记入日志缓存,在用户提交时写到日志文件中 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;3.在Buffer&nbsp;cache中修改块 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;4.在Buffer&nbsp;cache中设置块的脏标志位,标志块变成脏块,同时在检查点队列末尾增加一个新节点,记录这个新脏块的信息,信息包括:脏块在Buffer&nbsp;cache中的位置,在步骤2时生成的与此脏块对应的重做记录位置。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;5.用户提交后,将相应的重做记录从重做缓存写入日志文件。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:&quot;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;我现在将日志补充到上面的图中: </p> <p style="margin:0in;"> <img src="/attachment/201510/16/30208428_1444975772w6Jb.png" width="585" height="400" alt="" style="font-family:微软雅黑;font-size:14px;line-height:21px;white-space:normal;" /> </p> <p style="margin:0in;font-family:Calibri;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;就像上图,检查点队列的每个节点,都保存有脏块的地址和脏块对应的重做记录的编号。脏块在Buffer&nbsp;cache中的位置是随机的,用户不一定修改那个块。但重做记录是顺序生成的,就和检查点队列的排列顺序一样。因为,它们都是当块被修改而变脏时产生的。块A先被修改,块A的重做记录就排在前面,块B后被修改,块B对应的重做记录会被排在块A对应的重做记录的后面。和它们在检查点中的顺序是一样。每当数据库因异外而当机,比如异常死机、断电等等,Buffer&nbsp;cache中有许多脏块没来的及写到磁盘上。以图为例,比如说现在断电了,现在磁盘上还有7个脏块,它们里面有用户修改过的数据,Oracle已经将反馈信息“你的修改完成”发送给用户,用户也以为他们的修改完成了,将为一直保存到数据库中。但是,断然的断电,令这几个脏块中的数据丢失了,它们没来得及写到磁盘上。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp;&nbsp; &nbsp;&nbsp;Oracle如何解决这个问题呢?很简单,当数据库重新启动时,Oracle只需从控制文件中读出检查点位置,检查点位置中记录有重做记录编号,根据此编号,Oracle可以很快的定位到日志文件中的重做记录n,它读出重做记录n中的重做数据,将用户的修改操作重现到数据库。接着,Oracle读取重做记录n+1中的重做数据,重现用户修改,这个过程将沿着日志流的顺序,一直进行下去,直挡最后一条重做记录,在上图的例子中,最后一条重做记录是第n+6条。这个过程完成后,用户所有的修改又都被重现了,一点都不会丢失。只要你的日志文件是完整,日志流是完整的,就一点信息都不会丢失。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;有人可能会有一个问题,重做记录在生成后,也是先被送进重做缓存,再由重做缓存写往日志文件。这样的机制下,一定会有某些重做记录在没来的及写到日志文件中时,数据库突然当机,而造成这些重做记录丢失。这样,这些重做记录所对应的脏块,将得不到恢复。用户还是会丢失一些数据。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;这种情况的确会发生,但丢失的都是没用的信息。为什么这么说的。Oracle会在用户每次发出提交命令时,将事务所修改脏块对应的重做记录写进日志文件,只有当这个操作完成时,用户才会收到“提交完成”,这样的信息,对于一个完整的事务,当用户看到提交完成后,也就意味着所对应的重做记录一定被写到了日志文件中,即使发生异常死机,它也是绝对可以恢复。而当用户没有提交,或没来得及提交,数据库就崩溃了,那么事务就是不完整的,这个事务必须被回滚,它根本用不着恢复。对于这样不完整的事务,它对应的重做记录有可能丢失,但这无所谓了,因为不完整的事务根本不需要恢复。也就是说,只有用户的事务提交了,用户的修改一定不会丢失。不过这还有一个前提,就是日志文件千万不能损坏,DBA所要做的就是要保证日志文件不能损坏。DBA可以使用RaiD1这样的磁盘镜像技术,或者多元备份日志文件,等等,这个我们在前面章节中已经讲过了的。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;我们上面所讲到的这种恢复,是自动进行的,并且不需要DBA参与,它被称之为实例恢复。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;检查点队列与增量检查点的作用我们已经说的差不多了,它们的主要目的就是让DBWn沿检查点队列的顺序刷新脏块。还有,就是实例恢复。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:&quot;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;下面我们来讨论一下增量检查点的设置。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:&quot;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;这里所说的检查点设置,主要指增量检查点频繁的设置。注意增量检查点只是一个名词,不必按字面的意义去理解它。增量检查点发生时,Oracle会唤醒DBWn沿着检查点队列写脏块,这就是增量检查点。那么到底多长时间一次发生一次增量检查点呢?这个增量检查点的频率是非常重要的,它基本上控制着DBWn多长时间去刷新一次脏块。DBWn活动的太频繁,会影响数据库的整体性能,如果DBWn活动太不频繁,又会使脏块挤压太多,这同样也会影响性能。而且,如果出现异常崩溃,需要实例恢复,脏块越多,实例恢复越慢。。在9i之前DBA主要靠间隔时间等方式来设置增量检查点的频率,比如可以让Oracle每10分钟发生一次增量检查点。如果这个数字设置不合适,对数据库性能的影响是很大的。而且有可能造成实例恢复时间过长。在9i之后,特别是到了10g中,检查点已经相当的智能化了,很少会成为I/O问题的原凶。9i中设置fast_start_mttr_target参数为你所期望的实例恢复时间,系统将自动控制增量检查点的频率。比如,你希望实例恢复可以在5分钟内完成,你可以将此参数设置为300,也就是300称。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;如果此参数设置的值超出了硬件实际的限制,比如你将它设置为60,你期望无论在任何情况下,数据库都可以在1分钟内完成实例恢复,但根据数据库的脏块生成速度、存储设备的写性能,1分钟内根本无法完成实例恢复。这时候Oracle会自动设置合适的fast_start_mttr_target参数值,我们可以在参数文件中看到修正后的参数值,也可以在V$instance_recovery视图中的Target_mttr列中看到实际的值。例如: </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;(举个例子) </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;我们不能将这个值设置的太小,因为实例恢复必竞只是偶然现象。如果为了让实例恢复尽快完成,而设置fast_start_mttr_target为很小的值,那么DBWn将活动的很频繁,这会造成性能问题的。为了避免用户设置不合理的增量检查点频率,在10G中,如果将fast_start_mttr_target设置为0,Oracle将根据产生脏块的速度、存贮硬件的性能自动调节检查点的频率,尽量使检查点频率不成为I/O问题的原凶。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;检查点的主要任务就是催促DBWn刷新脏块,如果DBWn刷新脏块时的等待事件太多,就说明脏块太多、存储设备的写速度太慢,或者就是增量检查点的频率太高了,或太低了。DBWn写脏块的等待事件是Db&nbsp;file&nbsp;parallel&nbsp;write。如果你的增量检查点频率很低,你发现了此事件,在排除了存储设备写性能的问题后,你应该将增量检查点频率设置的高一些。反之,如果你的增量检查点频率本身很高,出现了Db&nbsp;file&nbsp;parallel&nbsp;write事件,这说明检查点频率太高了。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;除它之外,还有一个和DBWn、增量检查眯有关的等待事件,它是Write&nbsp;complete&nbsp;waits事件,当前台进程要修改DBWn正要成批写的块中的若干个块时,就会有此等待事件,这个事件是前台进程再等待DBWn写完成。这个等待事太多,说明了存储设备写性能有问题,或者增量检查点太频率了。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:&quot;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;我们可以V$instance_recovery中看到有关检查点的很多信息: </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:&quot;font-size:11.0pt;" lang="x-none"> &nbsp; </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;Estimated_mttr列如果太大,说明检查点不够频繁,同时也说明脏块产生的太多。同时在V$sysstat资料视图中,还有两个资料background&nbsp;checkpoints&nbsp;started、background&nbsp;checkpoints&nbsp;completed,前面的一个是后台进程检查点开始次数,后一个是后台进程检查点完成次数。后台进程检查点的意义,其实就是增量检查点。只有增量检查点是由后台进程触发的。如果你用Alter&nbsp;system&nbsp;checkpoing命令让系统完成完全检查点,这叫做前台检查点与增量检查点无关,是不会被记入这两个资料了。如果这两个值经常相差一些,比如检查点的开始次数比完成次数大的不至1,这说明有太多次检查点开始,但没有及时完成。这说明检查点太频繁或检查点完成的太慢。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;(举例,大量的产生脏块、日志文件比较小5MB,日志文件频率的切换而触发检查点,同时查看一下等待事件) </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;检查点的问题大多数情况下其实都是DBWn写I/O的问题,&nbsp;DBWn写脏块的等待事件是Db&nbsp;file&nbsp;parallel&nbsp;write,还有Write&nbsp;complete&nbsp;waits等待事件,是当前台进程要修改DBWn正要成批写的块中的若干个块时,就会有此等待事件,这个事件是前台进程再等待DBWn写完成。这个等待事太多,也说明了DBWn有问题。 </p> <p style="margin-top:3pt;margin-bottom:3pt;font-family:微软雅黑;font-size:10.5pt;"> &nbsp; &nbsp; &nbsp;注意,对于数据文件的I/O问题,除了等待事件外,我们还可以用上几节讲过了V$filestat视图帮助确定问题。) </p>
您可能感兴趣的文档:

--结束END--

本文标题: ORACLE CheckpointQueue和增量检查点

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

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

猜你喜欢
  • ORACLE CheckpointQueue和增量检查点
    <p style="margin:0in;font-size:20.0pt;"> ORACLE CheckpointQueue和增量检查点 </p> <p...
    99+
    2024-04-02
  • Oracle的增量检查点指的是什么
    这期内容当中小编将会给大家带来有关Oracle的增量检查点指的是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、为什么要有检查点   被修改过的块,在oracle中都被...
    99+
    2023-06-06
  • oracle之检查点(Checkpoint)
    检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件。检查点分为三类:1)局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。触发命...
    99+
    2024-04-02
  • Oracle检查点是什么
    本篇内容主要讲解“Oracle检查点是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle检查点是什么”吧!1.检查点概念--chkpoint&nbs...
    99+
    2024-04-02
  • 物理写的判断 & 介质恢复 & 实例恢复 & 增量检查点
    物理写的检测:select  * from v$sysstat where lower(name) like&nbs...
    99+
    2024-04-02
  • SQLServer的检查点、redo和undo
    SQLServer的检查点、redo和undo 检查点与恢复效率的关系 检查点将脏数据页从当前数据库的缓冲区高速缓存刷新到磁盘上。 这最大限度地减少了恢复时必须重做(Redo)的修改量。 为什么在...
    99+
    2024-04-02
  • Oracle如何检查点涉及的SCN
    这篇文章主要介绍Oracle如何检查点涉及的SCN,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 检查点涉及的SCN(1). 数据文件中的文件头启动检查点的scn存储在每个数据文...
    99+
    2024-04-02
  • Innodb检查点和redo写盘时机
    小编给大家分享一下Innodb检查点和redo写盘时机,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 一、LSN ...
    99+
    2024-04-02
  • Oracle中SCN与检查点的示例分析
    这篇文章主要介绍Oracle中SCN与检查点的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.SCN 的定义SCN(System Change Number ),也就是通常...
    99+
    2024-04-02
  • MySQL:slave 延迟一列 外键检查和自增加锁
    本文没有太多可读性,完全是自己的笔记 一、现象 延迟大,大事物。 表结构 image.png 无IO image.png SQL TH...
    99+
    2024-04-02
  • MySQL slave 延迟一列 外键检查和自增加锁
    目录MySQL slave 延迟 外键检查和自增加锁一、现象二、pscak 采样三、自增锁获取逻辑四、方案MySQL slave 延迟 外键检查和自增加锁 一、现象 延迟大,大事...
    99+
    2024-04-02
  • mybatis批量新增、删除、查询和修改方式
    目录前期说明:主要有一下3种情况:(1)mybatis批量新增(2)mybatis批量删除(3)mybatis批量查询(4)mybatis批量修改mySql Case函数动态批量修改...
    99+
    2024-04-02
  • Android中检查、监听电量和充电状态的方法
    当你在更改后台更新频率来减少这些更新对电池寿命的影响时,检查当前电量和充电状态是一个好的开始。 电池寿命通过剩余电量和充电状态来影响应用更新的执行。当用交流电充电时,执行更新操...
    99+
    2022-06-06
    监听 方法 Android
  • oracle怎么查询所有表名和数据量
    可以使用以下SQL语句查询所有表名和数据量: SELECT table_name, to_char(num_row...
    99+
    2024-04-09
    oracle
  • 如何编写Oracle查询表空间的每日增长量和历史情况统计的脚本
    如何编写Oracle查询表空间的每日增长量和历史情况统计的脚本,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。今天主要总结一下O...
    99+
    2024-04-02
  • springboot 2.x整合mybatis实现增删查和批量处理方式
    目录springboot 2.x整合mybatis实现增删查和批量处理1.添加依赖2.添加配置文件3.Application.class添加扫描4.创建Mapper5.创建provi...
    99+
    2024-04-02
  • Oracle通过视图和告警日志检查主库,物理和快照备库
    主库动作主库信息备库信息是否启用redo线程alert logv$threadalert log展示数据库角色,保护模式,保护级别,切换状态,快速启用,失效转换信息v$databasev$database增...
    99+
    2024-04-02
  • ORACLE数据库递归查询当前节点的父节点和子节点(tree)
    ORACLE 数据库递归查询当前数据的所有孩子数据(不包含自己)SELECT id   AS id,   parent_id&n...
    99+
    2024-04-02
  • SAP ABAP和Linux系统里怎么检查网络传输的数据量
    本篇内容主要讲解“SAP ABAP和Linux系统里怎么检查网络传输的数据量”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SAP ABAP和Linux系统里怎么检查网络传输的数据量”吧!# AB...
    99+
    2023-06-04
  • shell脚本实现MySQL定时批量检查表repair和优化表optimize table
    本篇内容主要讲解“shell脚本实现MySQL定时批量检查表repair和优化表optimize table”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“shell脚本实现MySQL定时批量检查...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作