Parallel Execution (Xử lý song song)

Thỉnh thoảng cũng cần phải viết.

Hôm nay rỗi rãi ngồi đọc về phần Parallel Execution (PE) chợt nhớ cậu chuyện ngày xưa có lần sếp cũ hỏi mình nhân lúc quá cảnh ở sân bay Đà Nẵng: giả sử có một dev ngon và 4 devs tầm tầm (ở mức làm việc được) thì em chọn thế nào để đảm bảo tiến độ 1 dự án? Mình trả lời sếp: Cũng tuỳ theo công việc, nếu công việc đòi hỏi sự liền mạch và có độ khó cao thì em chọn chú superstar kia. Còn nếu công việc bình thường, có thể phân chia được thì em chọn 4 bạn kia.

Tư tưởng của PE  này cũng vậy thôi. Đối với những công việc khó phân chia, các subtask phụ thuộc nhiều vào nhau thì PE có khi còn chậm hơn Serial. PE thường dùng cho các task lớn, có thể phân chia thành các task nhỏ, các task này tương đối độc lập với nhau. Đây chính khái niệm One Page Summary and Ten Chapter Report. Mình sẽ giải thích để các bạn rõ hơn: Nếu được giao viết phần tổng kết trong vòng 1 trang, bạn lại chia nó ra làm nhiều phần nhỏ, mỗi phần bạn giao cho 1 bạn khác thực hiện, sau đó ngồi tổng kết lại, chắc chắn sẽ chậm hơn nhiều nếu bạn làm việc đó một mình. Còn nếu bạn được giao viết một cuốn sách tầm 10 chương, các chương cũng tương đối độc lâp với nhau thì việc phân chia như trên sẽ cải thiện tiến độ đáng kể. Công việc của bạn lúc đó chỉ là coordinated các subtasks với nhau.

Nói thế để các bạn thấy được không phải lúc nào PE cũng làm tăng tốc độ công việc.

Trong database, PE thường được dùng trong trường hợp các task rất lớn đồng thời tài nguyên hệ thống dành cho nó (available resources) cũng phải lớn. Thông thường, nó thường được sử dụng trong các hệ thống Data Warehouse hơn là các hệ thống OLTP. Vì hệ thống OLTP thì có rất nhiều user sử dụng cùng 1 lúc nên cũng khó dành nhiều tài nguyên cho một user cụ thể nào được. PE có thể sử dụng trong: Query, DDL, DML, Recovery và Procedural. PDDL thì do các DBA take, Procedural là cách thức lập trình, còn lại thì phần lớn sẽ được automatic. Tuy nhiên khi dùng PDML các bạn cần phải chú ý một số vấn đề:

–       Trigger không được support

–       Sẽ có các constraints không được support vì các slide được tiến hành riêng biệt

–       Không access table bạn vừa sửa bằng PDML cho đến khi commit hoặc rollback

–       Advanced Replication không được support

–       Distributed transactions không được support

–       Clustered table không được support

Nếu bạn phạm vào các điều trên, sẽ có 1 trong 2 khả năng xảy ra: hoặc câu lệnh sẽ chuyển về dạng serial hoặc sẽ báo lỗi.

HN

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: