Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pengumpulan Statistik Inkremental dalam 11g

-11g database telah memperkenalkan statistik Inkremental yang mengumpulkan fitur baru

-Statistik tambahan akan bekerja hanya untuk tabel yang dipartisi di mana statistik global diperbarui secara bertahap dengan memindai hanya partisi yang telah berubah dari proses terakhir. Umumnya partisi terbaru adalah partisi tempat data dimasukkan dan sebagian besar partisi lama tetap tidak tersentuh. Dengan mengaktifkan statistik Inkremental pada tabel, hanya statistik partisi yang dikumpulkan di mana ada DML di atasnya, sisanya tidak dipindai yang akan menghemat banyak waktu.

-Tabel yang dipartisi adalah tabel yang besar dan jika kita perlu mengumpulkan statistik secara teratur, ini akan sangat memakan waktu  dan  Pengumpulan statistik tambahan mengurangi waktu yang diperlukan untuk mengumpulkan statistik

Contoh fitur Pengumpulan Statistik inkremental Oracle 11g di Oracle E-Business Suite.

Mari kita ambil contoh xla_ae_lines yang merupakan tabel partisi dan memiliki banyak catatan dalam contoh ERP yang sering digunakan

Uji kasus tanpa menyetel preferensi tambahan

-Buat tabel xla_ae_lines_bkp sebagai tabel partisi untuk melakukan uji kasus ini
– Sisipkan data dari tabel xla_ae_lines

masukkan ke xla.xla_Ae_lines_bkp pilih * dari xla.xla_ae_lines;

2119409 baris dibuat.

-atur waktu tepat waktu pada

exec fnd_stats.gather_table_stats('XLA','XLA_AE_LINES_BKP');
Prosedur PL/SQL berhasil diselesaikan.
Berlalu:00:00:49.06
  • Butuh 49,06 detik untuk mengumpulkan statistik untuk pertama kalinya setelah penyisipan data.
  • Periksa statistik dan tingkat global dan partisi
pilih table_name,to_Char(last_analyzed,'DD-MON-YY HH24:MI:SS') "last_analyzed" dari dba_Tables di mana table_name seperti 'XLA_AE_LINES_BKP';

NAMA_TABEL          dianalisis_terakhir

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

XLA_AE_LINES_BKP 09-SEP-16 10:04:34

pilih partition_name,to_Char(last_analyzed,'DD-MON-YY HH24:MI:SS') "last_analyzed" dari dba_Tab_partitions di mana table_name seperti 'XLA_AE_LINES_BKP';

PARTITION_NAME       dianalisis_terakhir

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

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

MENYENANGKAN 16-09-SEP 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

  • Hapus data dari salah satu partisi untuk memeriksa bagaimana statistik dihitung
hapus dari xla.xla_ae_lines_bkp di mana application_id=222;
  • Mengumpulkan statistik menggunakan fnd_Stats
    exec fnd_stats.gather_table_stats('XLA','XLA_AE_LINES_BKP');
    Prosedur PL/SQL berhasil diselesaikan.
    Berlalu:00:00:25.06
  • Setelah menghapus data yang dijalankan, kumpulkan statistik tanpa menyetel preferensi. Butuh waktu 25,06 detik
  • Memeriksa statistik global dan statistik partisi
pilih table_name,to_Char(last_analyzed,'DD-MON-YY HH24:MI:SS') "last_analyzed" dari dba_Tables di mana table_name seperti 'XLA_AE_LINES_BKP';

TABLE_NAME terakhir_dianalisis

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

XLA_AE_LINES_BKP 09-SEP-16 10:20:26

pilih partition_name,to_Char(last_analyzed,'DD-MON-YY HH24:MI:SS') "last_analyzed" dari dba_Tab_partitions di mana table_name seperti 'XLA_AE_LINES_BKP';

PARTITION_NAME terakhir_dianalisis

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

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 16-09-SEP-16  10:20:15

MENYENANGKAN 16-09-SEP  10:20:15

FV 09-SEP-16  10:20:15

GMF 09-SEP-16  10:20:15

IGC 16-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

CATATAN :statistik dikumpulkan di semua partisi meskipun hanya data partisi AR yang dihapus, last_analyzed diperbarui untuk semua partisi

Kasus uji dengan menyetel preferensi inkremental

  • Lepas dan Buat ulang tabel xla_ae_lines_bkp sebagai tabel partisi untuk melakukan uji kasus ini

  • Memasukkan data dari tabel xla_ae_lines

masukkan ke xla.xla_Ae_lines_bkp pilih * dari xla.xla_ae_lines;

2119409 baris dibuat.

-atur waktu tepat waktu pada

exec dbms_stats.set_table_prefs('XLA','XLA_AE_LINES_BKP','INCREMENTAL','TRUE');
  • Periksa apakah preferensi sudah disetel
pilih dbms_stats.get_prefs('INCREMENTAL','XLA','XLA_AE_LINES_BKP') dari dual;

DBMS_STATS.GET_PREFS('INCREMENTAL','XLA','XLA_AE_LINES_BKP')

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

BENAR

  • Kumpulkan statistik setelah menyetel preferensi.
exec fnd_stats.gather_table_stats('XLA','XLA_AE_LINES_BKP');

Prosedur PL/SQL berhasil diselesaikan.

Berlalu:00:00:25.91

  • Setelah menyetel preferensi, diperlukan waktu 25,91 detik untuk mengumpulkan statistik untuk pertama kalinya setelah penyisipan data
  • memeriksa informasi waktu statistik
pilih table_name,to_Char(last_analyzed,'DD-MON-YY HH24:MI:SS') "last_analyzed" dari dba_Tables di mana table_name seperti 'XLA_AE_LINES_BKP';

TABLE_NAME terakhir_dianalisis

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

XLA_AE_LINES_BKP             09-SEP-16  10:35:32

pilih partition_name,to_Char(last_analyzed,'DD-MON-YY HH24:MI:SS') "last_analyzed" dari dba_Tab_partitions di mana table_name seperti 'XLA_AE_LINES_BKP';

18

PARTITION_NAME terakhir_dianalisis

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

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 16-09-SEP-16  10:35:21

MENYENANGKAN 16-09-SEP  10:35:12

FV 09-SEP-16  10:35:10

GMF 09-SEP-16  10:35:10

IGC 16-09-SEP-16  10:35:10

IGI 09-SEP-16  10:35:12

LNS 16-09-SEP-16  10:35:10

OFA 09-SEP-16  10:35:10

OKL 16-09-SEP-16  10:35:12

OZF 09-SEP-16  10:35:30

PA 09-SEP-16  10:35:12

  • Menghapus data dari satu partisi untuk melihat bagaimana pengumpulan statistik tambahan akan membantu waktu berikutnya ketika statistik dikumpulkan.
hapus dari xla_ae_lines_bkp di mana application_id=222;

100233 baris dihapus

  • Kumpulkan statistik setelah menghapus data dari application_id 222 partisi AR
exec fnd_stats.gather_table_stats('XLA','XLA_AE_LINES_BKP');

Prosedur PL/SQL berhasil diselesaikan.

Berlalu:00:00:4.11

  • Setelah menghapus data untuk satu partisi, statistik pengumpulan inkremental membutuhkan waktu 4,11 detik
  • Periksa statistik global dan partisi
pilih table_name,to_Char(last_analyzed,'DD-MON-YY HH24:MI:SS') "last_analyzed" dari dba_Tables di mana table_name seperti 'XLA_AE_LINES_BKP';

TABLE_NAME terakhir_dianalisis

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

XLA_AE_LINES_BKP 09-SEP-16  10:45:18

pilih partition_name,to_Char(last_analyzed,'DD-MON-YY HH24:MI:SS') "last_analyzed" dari dba_Tab_partitions di mana

ble_name seperti ‘XLA_AE_LINES_BKP’;

PARTITION_NAME terakhir_dianalisis

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

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 16-09-SEP-16  10:35 :21

MENYENANGKAN 16-09-SEP-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 16-09-SEP-16  10:35:12

OZF 09-SEP-16  10:35 :30

PA 09-SEP-16  10:35:12

Hal penting yang perlu diperhatikan, statistik dikumpulkan, tanggal analisis_akhir diubah hanya untuk partisi AR dan waktu juga telah dikurangi.

Jadi, kami melihat bahwa Pengumpulan Statistik Inkremental mengurangi waktu pengumpulan statistik dan ini bisa sangat bermanfaat untuk tabel partisi besar.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghitung ukuran tabel di Oracle

  2. Mengapa PL/SQL tidak menghormati hak istimewa yang diberikan oleh Peran?

  3. Apa operator rangkaian string di Oracle?

  4. Apa yang harus saya hindari saat mengirim kueri?

  5. Mencegah Drop Table Pada Skema Target Di Oracle Streams