Oracle
 sql >> база данни >  >> RDS >> Oracle

Инкрементално събиране на статистически данни в 11g

Базата данни -11g въведе новата функция за събиране на допълнителни статистики

- Инкременталните статистики ще работят само за разделени таблици, където глобалната статистика се актуализира постепенно чрез сканиране само на дяловете, които са се променили от последното изпълнение. Обикновено най-новите дялове са тези, в които се вмъкват данни и най-вече по-старите дялове остават недокоснати. С активиране на инкрементални статистически данни за таблица, само за онези дялове се събират статистически данни, където има някакви DML-ове, останалите не се сканират, което би спестило много време.

-Разделените таблици са големи и ако трябва редовно да събираме статистически данни за това, това би отнело много време  а  Постепенното събиране на статистически данни намалява времето, необходимо за събиране на статистически данни

Пример за функцията за поетапно събиране на статистически данни на Oracle 11g в Oracle E-Business Suite.

Нека вземем примера с xla_ae_lines, която е таблица на дялове и има много записи в силно използван ERP екземпляр

Тестов случай без задаване на постепенни предпочитания

-Създайте таблица xla_ae_lines_bkp като таблица на дялове, за да изпълните този тестов случай
– Вмъкнете данни от таблицата xla_ae_lines

вмъкнете в xla.xla_Ae_lines_bkp изберете * от xla.xla_ae_lines;

Създадени са 2119409 реда.

-задайте време за включване на времето

exec fnd_stats.gather_table_stats('XLA','XLA_AE_LINES_BKP');
Процедурата PL/SQL е завършена успешно.
Изтекло:00:00:49.06
  • Отне 49,06 секунди, за да се съберат статистически данни за първи път след вмъкване на данни.
  • Проверете статистиката и глобалното ниво и ниво на дял
изберете table_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed“ от dba_Tables, където table_name като „XLA_AE_LINES_BKP“;

TABLE_NAME           последно_анализирано

———————————————————

XLA_AE_LINES_BKP 09.09.16 10:04:34

изберете partition_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed“ от dba_Tab_partitions, където table_name като „XLA_AE_LINES_BKP“;

PARTITION_NAME       последно_анализиран

———————————————————

AP 09-SEP-16 10:04:15

AR 09-SEP-16 10:04:16

CE 09-SEP-16 10:04:16

CST 09-SEP-16 10:04:23

DPP 09-SEP-16 10:04:23

ЗАБАВЛЕНИЕ 09.09.16 10:04:23

FV 09-SEP-16 10:04:23

GMF 09-SEP-16 10:04:23

IGC 09-SEP-16 10:04:23

IGI 09-SEP-16 10:04:23

LNS 09-SEP-16 10:04:23

OFA 09-SEP-16 10:04:23

OKL 09-SEP-16 10:04:23

OZF 09-SEP-16 10:04:23

PA 09-SEP-16 10:04:24

  • Изтрийте данните от един от дяловете, за да проверите как се изчисляват статистическите данни
изтрийте от xla.xla_ae_lines_bkp, където application_id=222;
  • Събиране на статистически данни usign fnd_Stats
    exec fnd_stats.gather_table_stats('XLA','XLA_AE_LINES_BKP');
    Процедурата за PL/SQL е завършена успешно.
    Изтекло:00:00:25.06
  • След изтриване на данните се проведе събиране на статистически данни, без да се задава предпочитанието. Отне 25,06 сек
  • Проверка на глобални статистики и статистика на дялове
изберете table_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed“ от dba_Tables, където table_name като „XLA_AE_LINES_BKP“;

TABLE_NAME последно_анализирана

———————————————————

XLA_AE_LINES_BKP 09.09.16 10:20:26

изберете partition_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed“ от dba_Tab_partitions, където table_name като „XLA_AE_LINES_BKP“;

PARTITION_NAME последно_анализиран

———————————————————

AP 09-SEP-16  10:20:14

AR 09-SEP-16  10:20:14

CE 09-SEP-16  10:20:14

CST 09-SEP-16  10:20:15

DPP 09-SEP-16  10:20:15

ЗАБАВЛЕНИЕ 09.09.16  10:20:15

FV 09-SEP-16  10:20:15

GMF 09-SEP-16  10:20:15

IGC 09-SEP-16  10:20:15

IGI 09-SEP-16  10:20:15

LNS 09-SEP-16  10:20:16

OFA 09-SEP-16  10:20:16

OKL 09-SEP-16  10:20:16

OZF 09-SEP-16  10:20:16

PA 09-SEP-16  10:20:17

ЗАБЕЛЕЖКА:статистическите данни се събират за всички дялове, въпреки че са изтрити само данни за AR дялове, last_analyzed се актуализира за всички дялове

Тестов случай със задаване на постепенни предпочитания

  • Отпуснете и създайте отново таблицата xla_ae_lines_bkp като таблица на дялове, за да изпълните този тестов случай

  • Вмъкнете данни от таблицата xla_ae_lines

вмъкнете в xla.xla_Ae_lines_bkp изберете * от xla.xla_ae_lines;

Създадени са 2119409 реда.

-задайте време за включване на времето

exec dbms_stats.set_table_prefs(‘XLA’,’XLA_AE_LINES_BKP’,’INCREMENTAL’,’TRUE’);
  • Проверете дали предпочитанието е зададено
изберете dbms_stats.get_prefs(‘INCREMENTAL’,’XLA’,’XLA_AE_LINES_BKP’) от двойно;

DBMS_STATS.GET_PREFS(‘INCREMENTAL’,’XLA’,’XLA_AE_LINES_BKP’)

—————————————————————

ВЯРНО

  • Съберете статистически данни, след като зададете предпочитанието.
exec fnd_stats.gather_table_stats(‘XLA’,’XLA_AE_LINES_BKP’);

PL/SQL процедурата е завършена успешно.

Изтекло:00:00:25.91

  • След задаване на предпочитанието отне 25,91 секунди, за да се съберат статистически данни за първи път след вмъкване на данни
  • проверка на статистическата информация за времето
изберете table_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed“ от dba_Tables, където table_name като „XLA_AE_LINES_BKP“;

TABLE_NAME последно_анализирана

——————————   —————————

XLA_AE_LINES_BKP              09-SEP-16  10:35:32

изберете partition_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed“ от dba_Tab_partitions, където table_name като „XLA_AE_LINES_BKP“;

18

PARTITION_NAME последно_анализиран

———————————————————

AP 09-SEP-16  10:35:30

AR 09-SEP-16  10:35:12

CE 09-SEP-16  10:35:10

CST 09-SEP-16  10:35:21

DPP 09-SEP-16  10:35:21

ЗАБАВЛЕНИЕ 09.09.16  10:35:12

FV 09-SEP-16  10:35:10

GMF 09-SEP-16  10:35:10

IGC 09-SEP-16  10:35:10

IGI 09-SEP-16  10:35:12

LNS 09-SEP-16  10:35:10

OFA 09-SEP-16  10:35:10

OKL 09-SEP-16  10:35:12

OZF 09-SEP-16  10:35:30

PA 09-SEP-16  10:35:12

  • Изтриване на данните от един дял, за да видите как постепенното събиране на статистически данни ще помогне следващия път, когато се събират статистически данни.
изтриване от xla_ae_lines_bkp, където application_id=222;

100233 реда са изтрити

  • Съберете статистически данни след изтриване на данни от application_id 222 дял AR
exec fnd_stats.gather_table_stats(‘XLA’,’XLA_AE_LINES_BKP’);

PL/SQL процедурата е завършена успешно.

Изтекло:00:00:4.11

  • След изтриването на данните за един дял, постепенното събиране на статистиката отне 4,11 сек.
  • Проверете глобалната статистика и статистиката на дяловете
изберете table_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed“ от dba_Tables, където table_name като „XLA_AE_LINES_BKP“;

TABLE_NAME последно_анализирана

———————————————————

XLA_AE_LINES_BKP 09-16-СЕП-16  10:45:18

изберете partition_name,to_Char(last_analyzed,’DD-MON-YY HH24:MI:SS’) „last_analyzed“ от dba_Tab_partitions, където ta

ble_name като „XLA_AE_LINES_BKP“;

PARTITION_NAME последно_анализиран

———————————————————

AP 09-SEP-16  10:35 :30

AR 09-SEP-16  10:45:18

CE 09-SEP-16  10:35 :10

CST 09-SEP-16  10:35 :21

DPP 09-SEP-16  10:35 :21

ЗАБАВЛЕНИЕ 09.09.16  10:35:12

FV 09-SEP-16  10:35 :10

GMF 09-SEP-16  10:35 :10

IGC 09-SEP-16  10:35 :10

IGI 09-SEP-16  10:35 :12

LNS 09-SEP-16  10:35 :10

OFA 09-SEP-16  10:35 :10

OKL 09-SEP-16  10:35 :12

OZF 09-SEP-16  10:35:30

PA 09-SEP-16  10:35 :12

Важни неща, които трябва да се отбележат, статистическите данни се събират, датата на last_analyzed се променя само за AR дял и времето също е намалено.

Така че виждаме, че Incremental Statistics Gathering намалява времето за събиране на статистически данни и може да бъде много полезно за големи таблици на дялове.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Процедурата на Oracle не връща резултати при изпълнение от задача на скрипт на SSIS

  2. Как да инсталирате SQLcl на Mac

  3. Как да напиша скрипт за вмъкване на оракул с едно поле като CLOB?

  4. Доставчикът на ADO.NET „Oracle.ManagedDataAccess.Client“ или не е регистриран в конфигурационния файл на машината или приложението, или не може да бъде зареден

  5. Стартирайте Oracle Forms като самостоятелен без браузър