仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 770|回复: 9
打印 上一主题 下一主题

[学习教程] MYSQL教程之Oracle Database 10g:最好新特征(第二周...

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:39:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你碰到的问题可能已经在社区中被别的人已经问过,即使没有MySQL学习教程,你也可以提出问题或通过Google来搜索答案。社区的相关负责人士:“MySQL社区是活跃、友好和内容渊博的。”oracle
第2周:回滚监督
还要多长工夫?:回滚监督



为用户供应对回滚操纵工夫的正确评价

我们还在这中央吗?还要多长工夫?

听起来熟习吗?这些成绩多是您在前去孩子们最喜好的主题公园的路上,从汽车后座上提出来的,而且常常是不休地、愈来愈频仍地提出来。您不想告知他们还切实必要多长工夫吗―大概更复杂些,您本人晓得谜底吗?

一样,在回滚临时运转的事件时,常常会有些用户一直地扣问不异的成绩。这些成绩是公道的,由于该事件举行了锁定,一般的处置常常遭到回滚历程的影响。

在Oracle9iDatabase及更低的版本中,您能够实行查询
SELECTUSED_URECFROMV$TRANSACTION;
该语句前往由以后事件所利用的重做纪录的数目,而假如反复地实行该语句,将会显现一连削减的数值,由于回滚历程在其处置过程当中会开释重做纪录。随后您能够经由过程对一段距离举行快照来盘算其速度,然后揣度出评价停止工夫的了局。

固然在视图V$TRANSACTION中有一个名为START_TIME的列,但该列只显现全部事件的肇端工夫(也就是在回滚实行之前)。因而,除揣度,您没有举措晓得回滚实践上是在甚么工夫实行的。

事件回滚的扩大统计信息

在OracleDatabase10g中,这类操纵很复杂。当事件回滚时,事务被纪录在视图V$SESSION_LONGOPS中,该视图显现临时运转的事件。用于回滚,假如历程耗时凌驾六秒,则纪录呈现在该视图中。在回滚实行今后,您大概会埋没所检察的监督屏幕并实行以下的查询:
selecttime_remainingfromv$session_longopswheresid=<sidofthesessiondoingtherollback>;
既然您意想到这个视图V$SESSION_LONGOPS的主要性,就让我们来看它必需供应的其他信息。该视图在OracleDatabase10g的预览版中供应,但没有捕捉关于回滚事件的信息。为了以一种易读的体例显现一切的列,我们将利用由TomKyte在AskTom.com中所形貌的PRINT_TABLE函数。此历程复杂地以表格体例而不是经常使用的行体例来显现列。
SQL>setserveroutputonsize999999SQL>execprint_table(select*fromv$session_longopswheresid=9)SID:9SERIAL#:68OPNAME:TransactionRollbackTARGET:TARGET_DESC:xid:0x000e.01c.00000067SOFAR:20554TOTALWORK:10234UNITS:BlocksSTART_TIME:07-dec-200321:20:07LAST_UPDATE_TIME:07-dec-200321:21:24TIME_REMAINING:77ELAPSED_SECONDS:77CONTEXT:0MESSAGE:TransactionRollback:xid:0x000e.01c.00000067:10234outof20554BlocksdoneUSERNAME:SYSSQL_ADDRESS:00000003B719ED08SQL_HASH_VALUE:1430203031SQL_ID:306w9c5amyanrQCSID:0
注重,此处显现对行的一切变动,即便删除偏重新拔出行时也是云云。VERSION_OPERATION列显现对该行实行的操纵(Insert/Update/Delete)。完成这些操纵不必要汗青表或分外的列。

让我们细心反省这些列中的每列。在会话中大概会有凌驾多个临时运转操纵―出格是由于视图中包括之前的会话中一切临时运转操纵的汗青。列OPNAME显现该纪录用于“事件回滚”,这为我们指出了准确的偏向。列TIME_REMAINING显现所评价的残剩工夫秒数,这在后面已形貌过,而列ELAPSED_SECONDS显现到今朝为止所损耗的工夫。

那末该表怎样供应对残剩工夫的评价呢?能够在列TOTALWORK中找到线索,该列显现要完成的“事情”总量,另有SOFAR显现到今朝为止已完成了几事情。事情的单元显现在列UNITS中。在本例中以数据块为单元;因而,到今朝为止已回滚了20,554个数据块中合计10,234个数据块。此操纵到今朝为止已损耗了77秒。因而,残剩数据块将损耗:

77*(10234/(20554-10234))˜77秒

但您不用使用这类办法来取得该数值,它已分明地显现出来了。最初,列LAST_UPDATE_TIME显现有关以后视图内容的工夫,这将用于增强您对了局的注释。

SQL语句

另外一部分主要的新信息是正在被回滚的SQL语句的标识符。在新近,SQL_ADDRESS和SQL_HASH_VALUE用于猎取正在被回滚的SQL语句。新的列SQL_ID对应于视图V$SQL的SQL_ID,以下所示:
SELECTSQL_TEXTFROMV$SQLWHERESQL_ID=<valueofSQL_IDfromV$SESSION_LONGOPS>;
该查询前往所回滚的语句,因而供应了分外的校验和SQL语句的地点和散列值。

并行实例恢复

假如DML操纵是并行操纵,则列QCSID显现并行查询服务器会话的SID。在并行回滚事务中,照实例恢复和随后的妨碍事件恢复时代,常常用到该信息常常。

比方,假定在年夜型的更新时代,实例非常封闭。当实例启动时,产生妨碍的事件被回滚。假如启用了用于并行恢复的初始化参数值,则回滚并行地而不是串行地产生,好像它产生在惯例事件回滚中一样。下一步的义务是评价回滚历程的完成工夫。

视图V$FAST_START_TRANSACTIONS显现为回滚妨碍事件所发生的事件。相似的视图V$FAST_START_SERVERS显现对回滚举行处置的并行查询服务器的数目。这两个视图都在之前的版本中供应,但显现事件标识符的新列XID使得连接更便利了。在Oracle9iDatabase和更低的版本中,您必需经由过程三列(USN―重做段号,SLT―重做段中的存储区号,SEQ―序列号)来连接视图。其父集显现在PARENTUSN、PARENTSLT和PARENTSEQ中。在OracleDatabase10g中,您只需将其连接到XID列,其父XID由直不雅的称号暗示:PXID。

最有效的信息部分来自于V$FAST_START_TRANSACTIONS视图中的列RCVSERVERS。假如产生并行回滚,则该列中显现并行查询服务器的数目。您能够检察该列,懂得启动了几并行查询历程:
selectrcvserversfromv$fast_start_transactions;
假如输入是1,则事件正在由SMON历程举行串行回滚―明显这是完成事情的一种不充实的办法。您能够将初始化参数RECOVERY_PARALLELISM的值改成除0或1之外的值,从头启动实例举行并行回滚。随后您能够实行ALTERSYSTEMSETFAST_START_PARALLEL_ROLLBACK=HIGH,按CPU数目的4倍创立并行服务器。

假如上述查询的输入显现不是1,则正在举行并行回滚。您能够查询统一视图(V$FAST_START_TRANSACTIONS)来取得父事件和子事件(父事件id―PXID,而子事件id―XID)。XID还可用于连接此视图与V$FAST_START_SERVERS,以取得其他具体信息。

结论

总之,当在OracleDatabase10g中回滚临时运转的事件时―不管是并行实例恢复会话仍是用户实行的回滚语句―您所需做的统统就是检察视图V$SESSION_LONGOPS并评价还必要几工夫。

如今,假如能展望抵达主题公园的工夫就行了!如IBM公司最近宣布让渠道合作伙伴分销其SaaS应用程序的新计划。微软认为MySQL学习教程是销售其云计算服务的重要组成部分。然而即使有这种趋势,DBaaS仍然不同于内部数据库,解决方案提供商必须认识到这一点;否则,他们不仅仅是丢失几个客户,而是要失去的更多。
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-24 05:06:00 | 只看该作者
在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
谁可相欹 该用户已被删除
9#
发表于 2015-3-17 09:09:23 | 只看该作者
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
老尸 该用户已被删除
8#
发表于 2015-3-10 17:08:03 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
莫相离 该用户已被删除
7#
发表于 2015-3-1 13:00:51 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
变相怪杰 该用户已被删除
6#
发表于 2015-2-10 14:57:27 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
再见西城 该用户已被删除
5#
发表于 2015-2-4 21:33:57 | 只看该作者
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
小妖女 该用户已被删除
地板
发表于 2015-1-26 22:51:37 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-19 20:40:59 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
分手快乐 该用户已被删除
沙发
发表于 2015-1-19 20:40:56 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 11:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表