Анатолий Эрнст Asked:2020-09-18 17:27:22 +0000 UTC2020-09-18 17:27:22 +0000 UTC 2020-09-18 17:27:22 +0000 UTC 同时插入和收集统计数据 772 假设在一个会话中将记录插入到表中(在提交之前),同时在另一个会话中收集有关该表的统计信息。 是否会收集统计信息,还是会等待提交对表的更改? oracle 2 个回答 Voted hinotf 2020-09-18T17:43:08Z2020-09-18T17:43:08Z 在正常情况下,统计收集器看不到尚未提交的数据。它提交当前事务,收集统计信息,然后再次提交。但是在 12.1+ 中,可以CREATE TABLE ... AS SELECT, INSERT INTO ... SELECT在某些条件下“即时”收集批量操作 ( ) 的统计信息。请参阅文章:https ://oracle-base.com/articles/12c/online-statistics-gathering-for-bulk-loads-12cr1 。 Best Answer 0xdb 2020-09-18T19:03:03Z2020-09-18T19:03:03Z 不,统计信息收集不会等待另一个会话中未提交的更改: create table tab1 (id number); insert into tab1 select rownum from dual connect by level <= 1e6; 1,000,000 rows inserted. 在另一个会话中: exec dbms_stats.gather_table_stats (user, 'TAB1'); select num_rows from user_tables where table_name = 'TAB1'; NUM_ROWS ---------- 0
在正常情况下,统计收集器看不到尚未提交的数据。它提交当前事务,收集统计信息,然后再次提交。但是在 12.1+ 中,可以
CREATE TABLE ... AS SELECT, INSERT INTO ... SELECT在某些条件下“即时”收集批量操作 ( ) 的统计信息。请参阅文章:https ://oracle-base.com/articles/12c/online-statistics-gathering-for-bulk-loads-12cr1 。不,统计信息收集不会等待另一个会话中未提交的更改:
在另一个会话中: