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

Mysql jconnector dành 50% thời gian trong com.myql.jdbc.utils.ReadAheadInputStream.fill ()

VisualVM đếm một luồng khi sử dụng thời gian CPU bất cứ khi nào JVM cho rằng nó có thể chạy được. Điều này có nghĩa là bất kỳ luồng nào không đợi trên khóa đều được coi là có thể chạy được, dù ít hay nhiều, bao gồm cả các luồng đang chờ I / O trong nhân! Đây là nơi có lượng CPU sử dụng lớn trong com.myql.jdbc.utils.ReadAheadInputStream.fill() là đến từ. Vì vậy, thay vì sự cố CPU, bạn có sự cố I / O.

Có một số điều bạn có thể làm ở phía JVM, nhưng không có nhiều cách tối ưu hóa đơn giản:

  1. Điều chỉnh kích thước nhóm kết nối. 1.000 truy vấn đồng thời là một . Trừ khi phiên bản MySQL của bạn thực sự lớn, nó sẽ gặp khó khăn khi xử lý mức tải đó và ngốn rất nhiều thời gian chỉ để chuyển đổi giữa các truy vấn. Hãy thử giảm kích thước hồ bơi xuống 250 hoặc thậm chí 50 và lấy điểm chuẩn ở đó.
  2. Thực hiện ít hơn hoặc các truy vấn nhỏ hơn. Nếu ứng dụng của bạn nhỏ, điều hiển nhiên là mọi hàng từ mọi truy vấn đều cần thiết, nhưng có thể ứng dụng của bạn lớn hơn thế. Các địa điểm khác nhau có truy vấn cùng một dữ liệu hay hai truy vấn khác nhau có thể được kết hợp thành một để đáp ứng cả hai khô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. Truy vấn chậm với mệnh đề HAVING - tôi có thể tăng tốc không?

  2. mysql concat_ws không có bản sao

  3. Tạo sơ đồ cơ sở dữ liệu trong MySQL Workbench

  4. Chuyển đổi bảng từ MyISAM sang INNODB

  5. Làm thế nào để tách chuỗi bản ghi được phân tách bằng dấu phẩy và sắp xếp sau đó tuần tự trong MySQL?