- vừa được xem lúc

Cải thiện Peformance Query với Parallel trong Oracle

0 0 6

Người đăng: sang lam

Theo Viblo Asia

I. Khái niệm

1. Parallel

Bằng cách thực thi nhiều các process, nó sử dụng nhiều CPU resource hoặc I/O resource để thực hiện 1 câu lệnh SQL

  • Trường hợp nào nên sử dụng Parallel thay vì single:
    • Câu query truy vấn tới bảng data lớn
    • Tính đồng thời thấp
    • Quan trong về thời gian thực hiện
  • Vậy các điều kiện để tối ưu được việc thực hiện Parallel:
    • System có nhiều bộ xử lý đối xứng, clusters hoặc hệ thống xử lý song song lớn
    • Đủ băng thông cho các luồng I/O
    • Có các CPU ko hoạt động hoặc ko sử dụng thường xuyên ( thường là các hệ thống có mức độ sử dụng CPU < 30%)
    • Đủ memory để support các quá trình nhơ sort, hash, hoặc băng thông I/O. Khi mà ko đử resources để thực hiện parallel có khi nó còn kéo chậm lại luôn performance.

NOTE: Nếu mà thiếu trong trong 4 cái ở trên thì Parallel nó ko thể làm tốt được việc cải thiện performance. Thực tế ở các hệ thống mà có mức độ sự dụng memory cao hoặc ko đủ băng thông đáp ứng việc I/O thì lại làm giảm performance khi thực hiện Parallel. Điển hình như cha Step23 đang làm, phải bỏ đi Parallel và câu SQL nó giảm được 1 nữa thời gian so với việc thực thi Parallel.

2. No-Parallel

  • Thì nó đơn giản là ngược lai với parallel là thực hiện hết toàn bộ 1 câu SQL trong 1 sử lý, ko chiếm thêm CPU hoặc cluster.
  • Được dùng trong
    • Truy vấn dữ liệu data nhỏ
    • Tính đồng thời cao
    • Coi trọng hiệu xuất
  • KO nên sử dụng Parallel trong trường hợp:
    • Trong các câu Query hoặc Transaction rất ngắn
    • Trong các môi trường sử dụng nhiều CPU, memory hoặc băng thông I/O

II. NOTE

  • Tuy là Parallelism có thể giúp cải thiện performance trong việc xử lý data và giảm thời gian thực thi câu SQL. Tuy nhiên chỉ nên sử dụng khi cần thiết.

  • Setting Parallelism ở table hoặc system level có thể dẫn tới vài vấn đề về performance hoặc bảo trì sau này. Các issue có thể gặp như là:

    • Tăng chi phí: việc setting parallelism ở table hoặc system level làm tăng đáng kể chi phí cho hệ thống, đặt biệt nếu bạn có nhiều tables hoặc số lượng lớn người dùng đồng thời. Nó có thể dẫn tới làm hiệu suất chậm hơn và tăng mức tiêu thụ các tài nguyên.
    • Khó bảo trì: việc setting parallelism ở table hoặc system level làm cho việc quản lý database phúc tạp hơn và bảo trì các tác vụ trong việc khắc phụ sự cố vì chúng thực hiện trên nhieeuf processor, threads, nodes,...
    • Tranh giành resource: Nguyên nhân cũng vì khi thực thi parallel thì yêu cầu khá nhiều về mặt cấu hình như memory, CPU, băng thông cho I/O. Khi mà có quá nhiều thao tác parallel --> resource ko đủ --> câu Query ko thể hoàn thiện việc thực thi --> tăng thời gian response --> giảm performance
    • Khả năng mở rộng: parallelism không phải lúc nào cũng cung cấp hiệu suất tuyến tính nếu được add thêm nodes hoạc processors (là ko phải lúc nào tăng processors thêm bao nhiêu lần là performance được cải thiện chừng đấy). Nó có thể hạn chế việc mở rộng đặc biệt nếu hệ thống có số lượng người dùng lớn hoặc là có tính biến động cao (có những thời điểm tăng đột biến số lượng người truy cập).
  • Vì thế trong lúc tunning câu Query, nếu như thử mọi cách rồi mà vẫn ko thể cải thiện performance, hãy kiểm tra hệ thông đang chạy parallel ko.

select plan_table_output from v$sql s , table ( dbms_xplan.display_cursor(s.sql_id, s.child_number, 'typical') ) t where s.sql_text like '%<Câu SQL>%'; 

Trong trường hợp Parallel đang được đặt default:

Trường hợp chưa được setting Parallel:

Tùy theo trường hợp, có thể setting parallel hoặc bỏ parallel đi để cải thiện performance.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Disable và Enable trigger trong Oracle

Origin post: https://www.tranthanhdeveloper.com/2020/12/disable-va-enable-trigger-trong-oracle.html.

0 0 29

- vừa được xem lúc

BPM Tutorial: Cách tích hợp Database trên nền tảng IBM BPM

Bài viết này hướng dẫn các bạn các thiết lập connection từ Database sẵn có với IBM BPM. Hiện nay IBM BPM hỗ trợ 3 loại DB là IBM Db2, Oracle, và Microsoft SQL Server DB.

0 0 42

- vừa được xem lúc

HOW TO FIND DUPLICATE VALUES IN SQL

Bài viết này xuất phát từ bài toán mà mình gặp rất nhiều trong quá trình test data. Bạn cần visualize lên các dashboard hay đơn giản cần export raw data để lấy dữ liệu chính xác.

0 0 35

- vừa được xem lúc

DATES FUNCTIONS IN SQL

Trong quá trình làm việc với data bạn sẽ cần dùng rất nhiều đến Date Functions. Bạn muốn tính con số Today, This weeks, This Month, Last month, MTD, YTD,.

0 0 42

- vừa được xem lúc

1 triệu bản ghi VARCHAR2(400) và VARCHAR2(2) có hiệu năng khác biệt ra sao - Thay đổi thứ tự các bảng khi JOIN có ảnh hưởng hiệu năng không?

Tại bài này, tôi sẽ giúp các bạn giải quyết "một lần và mãi mãi" những hiểu lầm kinh điển sau. .

0 0 32

- vừa được xem lúc

Thiết kế sai lầm trong Cơ sở dữ liệu và giải pháp cải thiện hơn 700% hiệu năng

Đây là những bài viết về các dự án & kinh nghiệm tối ưu cơ sở dữ liệu của tôi tại Wecommit. Những giá trị mà bạn sẽ nhận được.

0 0 13