查看: 5899|回复: 12

【大话IT】sql_id 什么情况下会变化

[复制链接]
论坛徽章:
19
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04喜羊羊
日期:2015-04-24 15:34:45青年奥林匹克运动会-帆船
日期:2015-04-24 15:34:452015年新春福章
日期:2015-03-06 11:58:182015年新春福章
日期:2015-03-06 13:15:04懒羊羊
日期:2015-03-04 14:52:11沸羊羊
日期:2015-03-06 13:15:04马上有对象
日期:2014-02-21 09:47:59马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
发表于 2015-2-25 13:49 | 显示全部楼层 |阅读模式
问题背景:

1、IBM595 数据库11.1.0.7.0迁移到 一体机X4-2 oracle11.2.0.4
2、性能对比分析。中的top事件中,SQL_ID

疑惑,SQL_id是记录在v$sql等动态视图中的数据,那么数据库重启,或者数据库迁移后应该发生改变。

请问,这种情况怎么记录SQL的性能呢,因为sql的id是会改变的。


论坛徽章:
19
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04喜羊羊
日期:2015-04-24 15:34:45青年奥林匹克运动会-帆船
日期:2015-04-24 15:34:452015年新春福章
日期:2015-03-06 11:58:182015年新春福章
日期:2015-03-06 13:15:04懒羊羊
日期:2015-03-04 14:52:11沸羊羊
日期:2015-03-06 13:15:04马上有对象
日期:2014-02-21 09:47:59马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
 楼主| 发表于 2015-2-25 14:23 | 显示全部楼层
rerererere

使用道具 举报

回复
论坛徽章:
10
2013年新春福章
日期:2013-02-25 14:51:242015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11沸羊羊
日期:2015-02-26 14:39:08优秀写手
日期:2014-04-17 06:00:16马上有对象
日期:2014-03-08 12:29:16红旗
日期:2013-12-09 20:02:28问答徽章
日期:2013-12-04 22:17:38紫蛋头
日期:2013-04-03 16:14:01天蝎座
日期:2015-07-27 15:42:40
发表于 2015-2-25 15:09 | 显示全部楼层
SQL_ID 不会变,只要SQL语句没变

使用道具 举报

回复
论坛徽章:
8
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:512012新春纪念徽章
日期:2012-01-04 11:56:19现代
日期:2013-11-28 11:01:14马上加薪
日期:2014-03-31 10:53:18马上有钱
日期:2014-03-31 15:05:51优秀写手
日期:2014-04-26 05:59:55暖羊羊
日期:2015-03-04 14:53:002015年新春福章
日期:2015-03-06 11:58:18
发表于 2015-2-25 16:11 | 显示全部楼层
perufeifei 发表于 2015-2-25 15:09
SQL_ID 不会变,只要SQL语句没变

取决于sql id 的生成方法,sql text 生成 sql hash, 有sql hash 转换成sql id.

使用道具 举报

回复
论坛徽章:
19
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04喜羊羊
日期:2015-04-24 15:34:45青年奥林匹克运动会-帆船
日期:2015-04-24 15:34:452015年新春福章
日期:2015-03-06 11:58:182015年新春福章
日期:2015-03-06 13:15:04懒羊羊
日期:2015-03-04 14:52:11沸羊羊
日期:2015-03-06 13:15:04马上有对象
日期:2014-02-21 09:47:59马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
 楼主| 发表于 2015-2-25 16:39 | 显示全部楼层
zhangweizhao 发表于 2015-2-25 16:11
取决于sql id 的生成方法,sql text 生成 sql hash, 有sql hash 转换成sql id.

就是说不会变吧?

sql_text不变,那么生成的SQL_hash就不变,hash_value 不变生成的SQL_ID也是一样的

使用道具 举报

回复
认证徽章
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:43:09喜羊羊
日期:2015-05-18 16:24:25慢羊羊
日期:2015-06-12 13:08:22暖羊羊
日期:2015-07-02 16:06:20暖羊羊
日期:2015-07-06 16:28:55狮子座
日期:2015-07-29 17:14:43摩羯座
日期:2015-09-02 13:58:47白羊座
日期:2015-09-08 10:39:06天枰座
日期:2015-09-17 21:41:53摩羯座
日期:2015-10-29 21:07:02
发表于 2015-2-25 17:10 | 显示全部楼层
huziaa 发表于 2015-2-25 16:39
就是说不会变吧?

sql_text不变,那么生成的SQL_hash就不变,hash_value 不变生成的SQL_ID也是一样的

经过初步验证,可知对于相同的SQL文本,对于相同版本的数据库,会产生相同的SQL_ID.即使是两个库,或者重新启动过,也是相同的。
但是,因条件所限,尚没有验证对于不同版本的数据库,对于同样的SQL文件,是否会有不同的SQL_ID产生。欢迎其它网友给出实验结果。

对于11.2.0.3的数据库而言,SQL“select * from dual"对应的SQL_ID为”a5ks9fhw2v9s1“
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE        11.2.0.3.0        Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

SQL> select sql_id from v$sql where sql_text like 'select * from dual%';

SQL_ID
-------------
a5ks9fhw2v9s1

使用道具 举报

回复
论坛徽章:
19
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04喜羊羊
日期:2015-04-24 15:34:45青年奥林匹克运动会-帆船
日期:2015-04-24 15:34:452015年新春福章
日期:2015-03-06 11:58:182015年新春福章
日期:2015-03-06 13:15:04懒羊羊
日期:2015-03-04 14:52:11沸羊羊
日期:2015-03-06 13:15:04马上有对象
日期:2014-02-21 09:47:59马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
 楼主| 发表于 2015-2-25 17:17 | 显示全部楼层
bfc99 发表于 2015-2-25 17:10
经过初步验证,可知对于相同的SQL文本,对于相同版本的数据库,会产生相同的SQL_ID.即使是两个库,或者重 ...

我去试验一下子。

使用道具 举报

回复
论坛徽章:
19
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04喜羊羊
日期:2015-04-24 15:34:45青年奥林匹克运动会-帆船
日期:2015-04-24 15:34:452015年新春福章
日期:2015-03-06 11:58:182015年新春福章
日期:2015-03-06 13:15:04懒羊羊
日期:2015-03-04 14:52:11沸羊羊
日期:2015-03-06 13:15:04马上有对象
日期:2014-02-21 09:47:59马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
 楼主| 发表于 2015-2-25 17:18 | 显示全部楼层
本帖最后由 huziaa 于 2015-2-25 17:39 编辑
bfc99 发表于 2015-2-25 17:10
经过初步验证,可知对于相同的SQL文本,对于相同版本的数据库,会产生相同的SQL_ID.即使是两个库,或者重 ...


[oracle@dm01db01 ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 11.2.0.4.0 Production on Wed Feb 25 17:18:08 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SYS@PROD1>select * from dual;

D
-
X

SYS@PROD1>select sql_id from v$sql where sql_text like 'select * from dual%';

SQL_ID
-------------
a5ks9fhw2v9s1

SYS@PROD1>
以上是 exadata一体机(X4-2 11.2.0.4.13)上的


以下是IBM P595 oracle 11.1.0.7.0的sql_ID,看起来都一样。

SQL> select * from dual;
D
-
X
SQL> select sql_id from v$sql where sql_text like 'select * from dual%';
SQL_ID
-------------
a5ks9fhw2v9s1
SQL>


使用道具 举报

回复
认证徽章
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:43:09喜羊羊
日期:2015-05-18 16:24:25慢羊羊
日期:2015-06-12 13:08:22暖羊羊
日期:2015-07-02 16:06:20暖羊羊
日期:2015-07-06 16:28:55狮子座
日期:2015-07-29 17:14:43摩羯座
日期:2015-09-02 13:58:47白羊座
日期:2015-09-08 10:39:06天枰座
日期:2015-09-17 21:41:53摩羯座
日期:2015-10-29 21:07:02
发表于 2015-2-25 17:27 | 显示全部楼层
huziaa 发表于 2015-2-25 17:18
[oracle@dm01db01 ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 11.2.0.4.0 Production on Wed Feb  ...

看看有没有网友有10g的库,验证一下在大版本不同的情况下,是否也相同?
理论上来说,这个SQL_ID的产生取决于相应的HASH算法。若算法不变,结果应该是相同的。

使用道具 举报

回复
认证徽章
论坛徽章:
2
暖羊羊
日期:2015-03-04 14:54:572015年新春福章
日期:2015-03-06 11:59:47
发表于 2015-2-25 17:45 | 显示全部楼层
[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Feb 25 17:44:21 2015

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from dual;

D
-
X

SQL> select sql_id from v$sql where sql_text like 'select * from dual%';

SQL_ID
-------------
a5ks9fhw2v9s1

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表