统计信息收集无论是在Oracle还是在TimesTen中,都是属于例行的工作,为SQL执行能够采用最新的统计信息,采用最优的执行计划,生产系统我们一般都会采用定时统计收集的作业,Oracle比较强大,一般不会出现统计收集获取不到锁而引发问题,顶多就是使用不到最新的执行计划,但是对于TimesTen来说就没那么强大了,很容易由于获取不到锁而引发故障。
术语解释:
SQL command: 每个SQL在编译后,都会被重复使用,如果在一个transaction中执行了这个SQL,那么就会在这个SQL编译好的command上面加一个S(共享锁)。
Invalidate: 统计信息收集之后,所有的SQL都会被标记为invalid,下一次这个SQL被执行的时候就会被重新编译,来使用最新的统计信息。
为了重新编译,必须加一个X(排他)锁,获取不到X锁,将会不断的尝试,阻塞后面的业务。
===》测试:
Command> set autocommit off;
The command succeeded.
Command> Prepare select * from t;
Assigning new prepared command id = 0.
The command succeeded.
Command>
Command> Execute;
Executing prepared command id = 0.
The command succeeded.
===》打开一个新的窗口,查看锁信息。
[timesten@
术语解释:
SQL command: 每个SQL在编译后,都会被重复使用,如果在一个transaction中执行了这个SQL,那么就会在这个SQL编译好的command上面加一个S(共享锁)。
Invalidate: 统计信息收集之后,所有的SQL都会被标记为invalid,下一次这个SQL被执行的时候就会被重新编译,来使用最新的统计信息。
为了重新编译,必须加一个X(排他)锁,获取不到X锁,将会不断的尝试,阻塞后面的业务。
===》测试:
Command> set autocommit off;
The command succeeded.
Command> Prepare select * from t;
Assigning new prepared command id = 0.
The command succeeded.
Command>
Command> Execute;
Executing prepared command id = 0.
The command succeeded.
===》打开一个新的窗口,查看锁信息。
[timesten@