Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Thu thập số liệu thống kê tăng dần trong 11g

Cơ sở dữ liệu -11g đã giới thiệu tính năng mới thu thập số liệu thống kê tăng dần

-Số liệu thống kê tăng lên sẽ chỉ hoạt động đối với các bảng được phân vùng trong đó thống kê toàn cục được cập nhật tăng dần bằng cách chỉ quét các phân vùng đã thay đổi so với lần chạy trước. Nói chung các phân vùng mới nhất là những phân vùng được chèn dữ liệu và hầu hết các phân vùng cũ hơn vẫn không bị ảnh hưởng. Với việc bật thống kê Gia tăng trên một bảng, chỉ thống kê trên các phân vùng đó mới được thu thập khi có bất kỳ DML nào trên đó, các số liệu còn lại sẽ không được quét, điều này sẽ tiết kiệm rất nhiều thời gian.

-Bảng phân vùng là những bảng lớn và nếu chúng ta cần thường xuyên thu thập số liệu thống kê về điều này, sẽ rất tốn thời gian và việc thu thập số liệu thống kê tăng dần làm giảm thời gian cần thiết để thu thập số liệu thống kê

Ví dụ về tính năng Thu thập số liệu thống kê gia tăng 11g của Oracle trong Oracle E-Business Suite.

Hãy để chúng tôi lấy ví dụ về xla_ae_lines là một bảng phân vùng và nó có nhiều bản ghi trong phiên bản ERP được sử dụng nhiều

Trường hợp thử nghiệm mà không đặt tùy chọn gia tăng

-Tạo bảng xla_ae_lines_bkp làm bảng phân vùng để thực hiện trường hợp thử nghiệm này
- Chèn dữ liệu từ bảng xla_ae_lines

insert vào xla.xla_Ae_lines_bkp select * from xla.xla_ae_lines;

2119409 hàng đã được tạo.

-đặt thời gian về thời gian trên

execute fnd_stats.gather_table_stats ('XLA', 'XLA_AE_LINES_BKP');
Thủ tục PL / SQL đã hoàn tất thành công.
Đã qua:00:00:49.06
  • Lần đầu tiên sau khi chèn dữ liệu, mất 49,06 giây để thu thập số liệu thống kê.
  • Kiểm tra số liệu thống kê và cấp độ toàn cầu và phân vùng
select table_name, to_Char (last_analyzed, ’DD-MON-YY HH24:MI:SS’) “last_analyzed” từ dba_Tables nơi tên_bảng như ‘XLA_AE_LINES_BKP’;

TABLE_NAME last_analyzed

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

XLA_AE_LINES_BKP 09-SEP-16 10:04:34

select partition_analyzed, to_Char (last_analyzed, ’DD-MON-YY HH24:MI:SS’) “last_analyzed” từ dba_Tab_partitions trong đó table_name như ‘XLA_AE_LINES_BKP’;

PARTITION_NAME last_analyzed

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

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

VUI 09-SEP-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

  • Xóa dữ liệu khỏi một trong các phân vùng để kiểm tra cách tính số liệu thống kê
xóa khỏi xla.xla_ae_lines_bkp nơi application_id =222;
  • Thu thập thống kê sử dụng fnd_Stats
    execute fnd_stats.gather_table_stats ('XLA', 'XLA_AE_LINES_BKP');
    Thủ tục PL / SQL đã hoàn tất thành công.
    Đã qua:00:00:25.06
  • Sau khi xóa dữ liệu, số liệu thống kê đã chạy thu thập mà không cần thiết lập tùy chọn. Mất 25,06 giây
  • Kiểm tra thống kê toàn cục và thống kê phân vùng
select table_name, to_Char (last_analyzed, ’DD-MON-YY HH24:MI:SS’) “last_analyzed” từ dba_Tables nơi tên_bảng như ‘XLA_AE_LINES_BKP’;

TABLE_NAME last_analyzed

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

XLA_AE_LINES_BKP 09-SEP-16 10:20:26

select partition_analyzed, to_Char (last_analyzed, ’DD-MON-YY HH24:MI:SS’) “last_analyzed” từ dba_Tab_partitions trong đó table_name như ‘XLA_AE_LINES_BKP’;

PARTITION_NAME last_analyzed

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

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

VUI 09-SEP-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

LƯU Ý:thống kê được thu thập trên tất cả các phân vùng mặc dù chỉ dữ liệu phân vị AR bị xóa, last_analyzed được cập nhật cho tất cả các phân vùng

Trường hợp thử nghiệm với cài đặt tùy chọn gia tăng

  • Thả và tạo lại bảng xla_ae_lines_bkp dưới dạng bảng phân vùng để thực hiện trường hợp thử nghiệm này

  • Chèn dữ liệu từ bảng xla_ae_lines

insert vào xla.xla_Ae_lines_bkp select * from xla.xla_ae_lines;

2119409 hàng đã được tạo.

-đặt thời gian về thời gian trên

execute dbms_stats.set_table_prefs (‘XLA’, ’XLA_AE_LINES_BKP’, ’INCREMENTAL’, ’TRUE’);
  • Kiểm tra xem tùy chọn đã được đặt chưa
select dbms_stats.get_prefs (‘INCREMENTAL’, ’XLA’, ’XLA_AE_LINES_BKP’) từ kép;

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

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

ĐÚNG

  • Thu thập số liệu thống kê sau khi đặt tùy chọn.
execute fnd_stats.gather_table_stats (‘XLA’, ’XLA_AE_LINES_BKP’);

Thủ tục PL / SQL đã hoàn tất thành công.

Đã qua:00:00:25,91

  • Sau khi đặt tùy chọn, mất 25,91 giây để thu thập thống kê lần đầu tiên sau khi chèn dữ liệu
  • kiểm tra thông tin thời gian thống kê
select table_name, to_Char (last_analyzed, ’DD-MON-YY HH24:MI:SS’) “last_analyzed” từ dba_Tables nơi tên_bảng như ‘XLA_AE_LINES_BKP’;

TABLE_NAME last_analyzed

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

XLA_AE_LINES_BKP 09-SEP-16 10:35:32

select partition_analyzed, to_Char (last_analyzed, ’DD-MON-YY HH24:MI:SS’) “last_analyzed” từ dba_Tab_partitions trong đó table_name như ‘XLA_AE_LINES_BKP’;

18

PARTITION_NAME last_analyzed

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

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

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

OZF 09-SEP-16 10:35:30

PA 09-SEP-16 10:35:12

  • Xóa dữ liệu khỏi một phân vùng để xem việc thu thập số liệu thống kê gia tăng sẽ hữu ích như thế nào vào lần tiếp theo khi số liệu thống kê được thu thập.
xóa khỏi xla_ae_lines_bkp nơi application_id =222;

100233 hàng đã bị xóa

  • Thu thập số liệu thống kê sau khi xóa dữ liệu khỏi phân vùng application_id 222 AR
execute fnd_stats.gather_table_stats (‘XLA’, ’XLA_AE_LINES_BKP’);

Thủ tục PL / SQL đã hoàn tất thành công.

Đã qua:00:00:4.11

  • Sau khi xóa dữ liệu cho một phân vùng, thống kê thu thập gia tăng mất 4,11 giây
  • Kiểm tra thống kê toàn cầu và phân vùng
select table_name, to_Char (last_analyzed, ’DD-MON-YY HH24:MI:SS’) “last_analyzed” từ dba_Tables nơi tên_bảng như ‘XLA_AE_LINES_BKP’;

TABLE_NAME last_analyzed

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

XLA_AE_LINES_BKP 09-SEP-16 10:45:18

chọn partition_name, to_Char (last_analyzed, ’DD-MON-YY HH24:MI:SS’) “last_analyzed” từ dba_Tab_partitions nơi ta

ble_name như ‘XLA_AE_LINES_BKP’;

PARTITION_NAME last_analyzed

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

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

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

OZF 09-SEP-16 10:35:30

PA 09-SEP-16 10:35:12

Những điều quan trọng cần lưu ý, số liệu thống kê được thu thập, ngày last_analyzed chỉ được thay đổi cho phân vùng AR và thời gian cũng đã giảm.

Vì vậy, chúng tôi thấy rằng Thu thập số liệu thống kê tăng dần làm giảm thời gian thu thập số liệu thống kê và nó có thể khá có lợi cho các bảng phân vùng lớn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có khuyến nghị chính thức của Oracle về việc sử dụng ANSI JOIN rõ ràng so với các phép nối ngầm không?

  2. Lọc nhật ký cảnh báo trong EM13c

  3. Oracle:`(+)` làm gì trong mệnh đề WHERE?

  4. Ai đó có thể giải thích câu lệnh MERGE thực sự làm gì trong Oracle không?

  5. Phiên bản Oracle ODP.NET thay thế bất khả tri