Timesten与Oracle SQL执行时间对比

刚做了个简单的测试。

在两台硬件环境相同的实体机上分别装了Timesten 11g和Oracle 11.2.0.4

在两边数据库中都建立一个表

create table test(a number,b varchar2(20));

commit;

然后插入数据

declare

z number;

x varchar2(20):=‘abc‘;

begin

for z in 1..1000000 loop

insert into test values(z,x);

end loop;

end;

/

然后在oracle打开执行计划

set autot on;

SQL> select count(*) from test;

COUNT(*)

----------

1000000

Execution Plan

----------------------------------------------------------

Plan hash value: 1950795681

-------------------------------------------------------------------

| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |

-------------------------------------------------------------------

|   0 | SELECT STATEMENT    |     |     1 |   581   (7)| 00:00:07 |

|   1 |  SORT AGGREGATE     |     |     1 |            |          |

|   2 |   TABLE ACCESS FULL | TEST|  8725K|   581   (7)| 00:00:07 |

然后update一下,查看时间。

SQL> update test set a=123 where b=‘abc‘;

1000000 rows updated.

Execution Plan

----------------------------------------------------------

Plan hash value: 839355234

---------------------------------------------------------------------------

| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |

---------------------------------------------------------------------------

|   0 | UPDATE STATEMENT   |      |  1128K|    26M|   552   (2)| 00:00:07 |

|   1 |  UPDATE            | TEST |       |       |            |          |

|*  2 |   TABLE ACCESS FULL| TEST |  1128K|    26M|   552   (2)| 00:00:07 |

---------------------------------------------------------------------------

在Timesten 11g上执行同样操作。

create table test1(a number,b varchar2(20));

commit;

然后插入数据

declare

z number;

x varchar2(20):=‘abc‘;

begin

for z in 1..1000000 loop

insert into test1 values(z,x);

end loop;

end;

/

执行select并查询执行时间

SQLCMDID:                        33556034320

PRIVATE_COMMAND_CONNECTION_ID:   2048

EXECUTIONS:                      5

PREPARES:                        5

REPREPARES:                      0

FREEABLE:                        1

SIZE:                            3912

OWNER:                           Shawn

QUERYTEXT:                       select count(*) from test1

FETCHCOUNT:                      5

STARTTIME:                       2014-11-18 13:22:53.263000

MAXEXECUTETIME:                  .1

LASTEXECUTETIME:                 .1

MINEXECUTETIME:                  0

只有0.1s比oracle的7s快很多。

执行update并查询时间

SQLCMDID:                        33556105440

PRIVATE_COMMAND_CONNECTION_ID:   2048

EXECUTIONS:                      2

PREPARES:                        2

REPREPARES:                      0

FREEABLE:                        1

SIZE:                            2576

OWNER:                           Shawn

QUERYTEXT:                       update test1 set a=123 where b=‘abc‘

FETCHCOUNT:                      0

STARTTIME:                       2014-11-18 13:51:18.141000

MAXEXECUTETIME:                  14.044

LASTEXECUTETIME:                 13.944

MINEXECUTETIME:                  0

这时候问题来了!

Timesten update最快居然用了13.944秒,比oracle要慢了快一倍?

希望有大神能帮忙解答下~谢谢。刚接触Timesten。

时间: 2024-11-08 15:54:58

Timesten与Oracle SQL执行时间对比的相关文章

【重磅干货】看了此文,Oracle SQL优化文章不必再看!

听“俊”一席话,胜读十年书.看了这篇由DBA+社群联合发起人丁俊大师(网名:dingjun123)分享的SQL优化大作,其他Oracle SQL优化文章都不必再看了! 专家简介 丁俊 网名:dingjun123 DBA+社群联合发起人 性能优化专家,Oracle ACEA,ITPUB开发版资深版主.8年电信行业从业经验,在某大型电信系统提供商工作7年,任资深工程师,从事过系统开发与维护.业务架构和数据分析.系统优化等工作.擅长基于ORACLE的系统优化,精通SQL.PL/SQL.JAVA等.电子

Oracle SQL性能优化

转载自:http://www.cnblogs.com/rootq/archive/2008/11/17/1334727.html (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection ta

<转>Oracle SQL性能优化

原文链接:http://www.cnblogs.com/rootq/archive/2008/11/17/1334727.html (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection t

oracle sql资源消耗相关视图

一.常用视图说明 Oracle sql语句资源消耗监控,最常用的系统视图有: v$sql v$sqlarea v$sqltext v$session v$sql和v$sqlarea基本相同,记录了共享SQL区(share pool)中SQL统计信息,如内存消耗.IO(物理磁盘读和逻辑内存读).排序操作.哈希ID等数据.不同之处在于v$sql为每一条SQL保留一个条目,而v$sqlarea中根据sql_text(需要注意,该处存储的为当前SQL指针的前1000个字符,也就是说这里记录的SQL可能是

JAMon监控SQL执行时间

JAMon监控web工程方法的调用性能 http://www.cnblogs.com/zfc2201/p/3786365.html 这往往篇文章主要告诉大家如何监控web方法调用时间,在这个基础这上,如果我们想要监控sql的执行时间,需要增加如下的配置: 1.增加一个类,假设是com.allen.bookshop.common.MonitorDataSource import java.io.PrintWriter; import java.sql.Connection; import java

oracle SQL优化之高效的函数调用

原文地址:https://oracle-base.com/articles/misc/efficient-function-calls-from-sql http://www.oracle.com/technetwork/issue-archive/2011/11-sep/o51asktom-453438.html 1. 问题描述 我们说一个function是确定性的(deterministic),当对于相同的输入总是返回相同的输出,oracle中的内置函数如abs,不管多少次调用,abs(-1

设置TimesTen与Oracle数据库的连通性

设置与Oracle数据库的连通性比较简单,但也是非常重要的工作.毕竟TimesTen与Oracle的集成,相较于独立的TimesTen,是使用更为广泛的场景. 无论是后续建立Cache Group,还是简单的从Oracle加载数据到TimesTen,都需要预先设置TimesTen与Oracle数据库的连通性. 首先看一张概念图: 在TimesTen DSN的设置中,OracleNetServiceName指定了后端Oracle数据库的服务名,而实际的服务定义在tnsnames.ora中,这完全符

oracle sql语句跟踪及性能分析工具实现

在网上找了一大圈,没找着合适的工具来跟踪oracle一段时间的sql. 我们的场景是打算自动化跑遍所有场景(rft)+fiddler跟踪请求+后端跟踪sql,根据结果去分析慢的请求和sql,本来awr报告也能实现,但是每次都用awr比较麻烦,想的是能够简单点,直接定位到执行慢的sql或者耗cpu的sql. 这个工具抓取的sql不是实时的,是某段时间的sql,原理也很简单,比awr的sql要简单的多,试了一把,跟awr给出的数据是一致的. 最终效果:准备操作时开启跟踪,结束操作后关闭跟踪,然后工具

Oracle SQL(四)

5. SQL高级--表优化相关(序列.视图等) 5.1 INDEX(索引) 可以在表中创建索引,以便更加快速高效地查询数据. 用户无法看到索引,它们只能被用来加速搜索/查询. PS:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新.因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引. 5.2 索引新增 --在表上创建一个简单的索引.允许使用重复的值 CREATE INDEX 索引名 ON 表 (列) --在表上创建一个唯一的索引.不允许使用重复的