2012-05-02 160 views
6

Tôi có một sql như thế này:về Oracle hiệu suất chèn song song

Insert into A 
Select * from B; 

Bây giờ tôi muốn nó chạy song song. Câu hỏi của tôi là để song song chèn hoặc chọn hoặc cả hai? Xem các sqls sau đây, bạn có thể cho tôi biết cái nào là đúng hay cái nào có hiệu suất tốt nhất. Tôi không có quyền dba, vì vậy tôi không thể kiểm tra kế hoạch thực hiện của nó.

1) Insert /*+ parallel(A 6) */ into A select * from B;

2) Insert into A select/*+ parallel(B 6) */ * from B;

3) Insert /*+ parallel(A 6) */ into A select /*+ parallel(B 6) */ * from B;

Cảm ơn bạn!

+0

Song song có lẽ sẽ không giúp bạn trong tình huống này. IO sẽ là nút cổ chai vì có ít xử lý cần thiết (trừ khi bạn đã đơn giản hóa). Nhìn vào 'INSERT/* + APPEND */....' nếu đó là một lựa chọn – Phil

+0

@Phil Thực thi song song có thể cải thiện đáng kể IO. –

Trả lời

12

Song song cả hai INSERTSELECT là nhanh nhất.

(Nếu bạn có một số lượng đủ lớn các dữ liệu, bạn có một máy chủ đàng hoàng, tất cả mọi thứ được cấu hình sanely, vv)

Bạn chắc chắn sẽ muốn kiểm tra nó cho mình, đặc biệt là để tìm ra mức độ tối ưu song song. Có rất nhiều huyền thoại xung quanh việc thực hiện song song Oracle, và thậm chí cả hướng dẫn sử dụng đôi khi là horribly wrong.

On 11gR2, tôi sẽ khuyên bạn nên chạy báo cáo của bạn như thế này:

alter session enable parallel dml; 
insert /*+ append parallel(6) */ into A select * from B; 
  1. Bạn luôn muốn kích hoạt DML song song đầu tiên.
  2. parallel(6) sử dụng statement-level parallelism, thay vì đối tượng song song cấp đối tượng. Đây là một tính năng 11gR2 cho phép bạn dễ dàng chạy tất cả mọi thứ trong witout song song phải lo lắng về bí danh đối tượng hoặc phương pháp truy cập. Đối với 10G bạn sẽ phải sử dụng nhiều gợi ý.
  3. Thông thường, gợi ý append là không cần thiết. Nếu DML của bạn chạy song song, nó sẽ tự động sử dụng chèn đường dẫn trực tiếp. Tuy nhiên, nếu tuyên bố của bạn bị hạ cấp xuống nối tiếp, ví dụ: nếu không có sẵn máy chủ song song, thì gợi ý append có thể tạo sự khác biệt lớn.
+2

Đáng chú ý rằng chèn song song, hoặc chèn nối tiếp đường dẫn trực tiếp (nối thêm), có một khóa độc quyền trên bàn (hoặc các phân vùng được đặt tên mà chèn vào diễn ra). –

1

Bạn không cần đặc quyền DBA để chạy gói giải thích. Tôi tin rằng SELECT_CATALOG là đặc quyền chính xác.