Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tìm nạp các hàng ở tốc độ cực cao

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 StringBuildersStrings . (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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng Tên dịch vụ Oracle với SQLAlchemy

  2. oracle sql if condition then select statement1 else select statement2

  3. Làm cách nào để xóa các bản sao khỏi danh sách được phân tách bằng dấu phẩy bằng regexp_replace trong Oracle?

  4. Oracle SEQUENCE - 'tăng dần theo' và 'bộ nhớ đệm'

  5. Hàm JSON_ARRAYAGG () trong Oracle