Giả sử bạn đã kiểm tra các nội dung mạng cơ bản như giao diện, tường lửa, proxy, cũng như các yếu tố phần cứng của máy chủ DB.
Tùy chọn 1:
Thay vì:
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/orcl", "user", "pass");
thử sử dụng:
OracleDataSource ods = new OracleDataSource();
java.util.Properties prop = new java.util.Properties();
prop.setProperty("MinLimit", "2");
prop.setProperty("MaxLimit", "10");
String url = "jdbc:oracle:oci8:@//xxx.xxx.xxx.xxx:1521/orcl";
ods.setURL(url);
ods.setUser("USER");
ods.setPassword("PWD");
ods.setConnectionCachingEnabled(true);
ods.setConnectionCacheProperties (prop);
ods.setConnectionCacheName("ImplicitCache01");
Thông tin chi tiết khác tại đây
Tùy chọn 2:Kích thước tìm nạp
Như Stephen đã chỉ ra mạnh mẽ, kích thước tìm nạp có vẻ quá lớn.
Và, đối với kích thước tìm nạp 500.000, -Xms và -Xmx của bạn là bao nhiêu. Ngoài ra, trong hồ sơ, kích thước đống cao nhất là bao nhiêu?
Tùy chọn 3:DB
-
Kiểm tra chỉ mục và kế hoạch truy vấn cho
src_schema.big_table_view
-
Đây là một công cụ hay một hệ thống ứng dụng. Nếu chỉ là một công cụ, bạn có thể thêm các độ song song, gợi ý chỉ mục, phân vùng, v.v. dựa trên khả năng hệ thống DB
Tùy chọn 4:Chủ đề
Nói n
Bạn có thể bắt đầu n
Các chủ đề của người viết, mỗi chủ đề được định cấu hình để xử lý một nhóm nhất định, ví dụ:thread1 xử lý 0 đến 10000, ghi vào n
các tệp khác nhau và khi tất cả các tệp đã hoàn tất, hãy đăng nối, hợp nhất các tệp với nhau tốt hơn bằng cách sử dụng lệnh OS cấp thấp.
Điều đó nói rằng, tất cả điều này sẽ không bao giờ được xác định trước mã như bây giờ. 'n'
và các nhóm sẽ được tính toán trong thời gian chạy. Và tạo ra số luồng nhiều hơn những gì hệ thống của bạn chỉ hỗ trợ.
Tùy chọn 5:
Thay vì
select * from src_schema.big_table_view
Bạn có thể sử dụng
SELECT column1||CHR(9)||column2||CHR(9).....||columnN FROM src_schema.big_table_view
Điều này tránh tạo 500000 StringBuilders
và Strings
. (Giả sử không có định dạng phức tạp nào khác liên quan). CHR (9) là ký tự tab.
Tùy chọn 6:
Trong khi đó, bạn cũng có thể kiểm tra với DBA của mình xem có bất kỳ sự cố hệ thống DB nào không và nâng cấp SR với hỗ trợ của Oracle .