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

Việc đóng tập kết quả phát trực tuyến (sử dụng mysql jdbc) mất nhiều thời gian

Vì vậy, như đã đăng trong nhận xét của tôi cho câu hỏi, câu trả lời chính thức từ trình kết nối MySQL là bạn phải phát trực tuyến tất cả tập kết quả để nó đóng (http://dev.mysql.com/doc/refman/5.5/en/connector-j- tham chiếu-thực hiện-ghi chú.html ). Ngoài ra, bạn không thể thực hiện bất kỳ truy vấn nào nữa trong khi kết quả phát trực tuyến đang diễn ra.

Là một vụ hack hoàn toàn kinh tởm, tôi đã sử dụng phản chiếu để đi xuống RowDataDynamic (phiên bản 5.1.24) và giả mạo một ngoại lệ bị gián đoạn, như sau:

    final Class<?> rdClass = rd.getClass();
    final Field isInterruptedField = rdClass.getDeclaredField("isInterrupted");
    isInterruptedField.setAccessible(true);  // override 'protected' visibility
    isInterruptedField.set(rd, true);

Lưu ý, bạn sẽ phải đi xuống bất kỳ đối tượng nào mà bạn có tay cầm để đến được ResultSet. Đối với tôi, tôi đang sử dụng lớp ScrollableResults của Hibernate. Điều này có nghĩa là lấy tham chiếu ResultSet từ nó (thực tế là siêu lớp của nó), sau đó là RowData từ đó.

Điều này sẽ cho phép hoạt động đóng diễn ra mà không phát trực tuyến phần còn lại của kết quả TUY NHIÊN Tôi nhận được một ngoại lệ do kích thước gói không khớp khi tôi cố gắng khôi phục giao dịch (mà tôi chỉ bắt và bỏ qua). Sử dụng Atomikos làm nhóm kết nối, tôi sẽ thấy cảnh báo về một số kết nối tiếp theo khi mọi thứ được dọn dẹp, nhưng mọi thứ vẫn hoạt động bình thường.

Rõ ràng là cách tiếp cận này có thể không hiệu quả với tất cả mọi người, nhưng ít nhất đó là một giải pháp khi thực hiện xử lý thông qua truy vấn cơ sở dữ liệu hoặc viết logic phức tạp hơn để truy xuất kết quả theo lô sẽ không hoạt động.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. So sánh công cụ tìm kiếm toàn văn - Lucene, Sphinx, Postgresql, MySQL?

  2. mysql chèn vào bảng nếu tồn tại

  3. mysql quá nhiều chỉ mục?

  4. Trích xuất dữ liệu từ json bên trong trường mysql

  5. Công cụ chuyển đổi truy vấn mySQL sang truy vấn Zend FrameWork