2008-12-16 26 views

Trả lời

5

Perl DBI thực thi luồng đơn thông qua nội thất của nó, vì vậy các trình điều khiển sẽ chỉ hoạt động trên một phiên ($dbh) tại một thời điểm. Bất kể bạn có bao nhiêu CPU. Vì vậy, đa luồng không được hỗ trợ (bởi vì tất cả mọi thứ bên trong DBI là đơn luồng), nhưng nó là an toàn để sử dụng DBI (và do đó DBD :: Oracle) trong một ứng dụng đa luồng.

0

Có, sử dụng chủ đề trong Perl là một ý tưởng cực kỳ tồi tệ, bất kể bạn có sử dụng Oracle hay không.

Mặc dù theo lý thuyết, mỗi kết nối đều sử dụng kết nối riêng, nó sẽ hoạt động, perl 5.8 threads are fundamentally flawed.

Nếu bạn hiểu bài viết đó và vẫn muốn sử dụng chủ đề Perl, chúc may mắn.

2

Vâng, tài liệu DBI cho biết không sử dụng Perl luồng và trỏ đến Perlmonks post that explains that. Các tài liệu nói với bạn không làm điều đó là một lý do khá tốt.

Tuy nhiên, tôi đã thấy nó hoạt động tốt trên một số nền tảng nhưng thất bại thảm hại đối với các nền tảng khác. Nó chắc chắn không di động ngay cả khi bạn làm cho nó hoạt động.

1

Tôi đã sử dụng đa luồng trong Perl để đo điểm chuẩn một db Oracle và tôi phải tạo trình xử lý cơ sở dữ liệu cho mỗi chuỗi.

0

Một khi quay lại Tôi đã quản lý kết nối w/dbi dưới dạng tài nguyên giới hạn và chia sẻ nó giữa các chủ đề khác nhau trong Perl bằng cơ chế khóa tệp. Ứng dụng đa luồng của tôi chỉ được kết nối với dbi thông qua một tập lệnh perl-script riêng biệt chạy như một daemon.

Trên Linux, kết thúc đa luồng được thực hiện thông qua ngã ba, trên cửa sổ tôi đã sử dụng bất cứ điều gì đi kèm với việc thực hiện ActivePerl mặc định (tôi quên)

tôi đã cố gắng có họ giao tiếp thông qua bộ nhớ chia sẻ, nhưng cuối cùng lại chỉ sử dụng một chia sẻ thay vào đó. Linux có chế độ gắn thêm đáng tin cậy, vì vậy nó là một miếng bánh. Trên các cửa sổ, khó khăn hơn để đồng bộ hóa chúng.

Gần đây, Tôi đã xem xét các giao dịch cơ sở dữ liệu, với mỗi thể hiện của luồng có kết nối riêng với cơ sở dữ liệu và cho phép cơ sở dữ liệu xử lý các chi tiết kết nối.

Đây là với mysql, nhưng tôi chắc chắn oracle hỗ trợ giao dịch.

apache :: dbi hoạt động/chơi tốt với mod_perl trong việc giữ các kết nối này tồn tại giữa mỗi lần chạy của tập lệnh (trước khi tôi sử dụng điều này, mỗi kết nối được thực hiện khá tốn thời gian).

Kết quả của bạn sẽ thay đổi.

Các vấn đề liên quan