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

MySQL Insert giảm hiệu suất trên một bảng lớn

Bạn không nói đây là hệ thống thử nghiệm hay sản xuất; Tôi giả định đó là sản xuất.

Có khả năng là bạn đã đặt bảng có kích thước mà các chỉ mục của nó (hoặc toàn bộ lô) không còn phù hợp với bộ nhớ.

Điều này có nghĩa là InnoDB phải đọc các trang trong khi chèn (tùy thuộc vào việc phân phối các giá trị chỉ mục của hàng mới của bạn). Việc đọc các trang (đọc ngẫu nhiên) thực sự rất chậm và cần phải tránh nếu có thể.

Phân vùng có vẻ như là giải pháp rõ ràng nhất, nhưng phân vùng của MySQL có thể không phù hợp với trường hợp sử dụng của bạn.

Bạn chắc chắn nên xem xét tất cả các tùy chọn có thể - đưa bảng vào máy chủ thử nghiệm trong phòng thí nghiệm của bạn để xem nó hoạt động như thế nào.

Với tôi, khóa chính của bạn có thể không cần thiết (bạn có một chỉ mục duy nhất khác), vì vậy việc loại bỏ khóa đó là một trong những tùy chọn.

Ngoài ra, hãy xem xét plugin và nén innodb, điều này sẽ làm cho innodb_buffer_pool của bạn tiến xa hơn.

Bạn thực sự cần phải phân tích các trường hợp sử dụng của mình để quyết định xem bạn có thực sự cần giữ lại tất cả dữ liệu này hay không và phân vùng có phải là một giải pháp hợp lý hay không.

Thực hiện bất kỳ thay đổi nào trên ứng dụng này có thể gây ra các vấn đề hiệu suất mới cho người dùng của bạn, vì vậy bạn cần phải thực sự cẩn thận ở đây. Nếu bạn tìm ra cách để cải thiện hiệu suất chèn, có thể nó sẽ làm giảm hiệu suất tìm kiếm hoặc hiệu suất của các hoạt động khác. Bạn sẽ cần thực hiện kiểm tra hiệu suất kỹ lưỡng trên phần cứng cấp sản xuất trước khi phát hành một thay đổi như vậy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. groupby và count hoạt động như thế nào trong sql

  2. MySql Thêm chỉ mục:0 hàng bị ảnh hưởng

  3. làm thế nào để kiểm tra xem một chuỗi trông ngẫu nhiên, hay do con người tạo ra và có thể phát âm?

  4. Xóa các hàng khỏi nhiều bảng trong MySQL

  5. Làm cách nào để kết hợp nhiều cột làm một và định dạng bằng các chuỗi tùy chỉnh?