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

Cải thiện hiệu suất MySQL trên Truy vấn chạy một lần với Tập dữ liệu lớn

Linh cảm của tôi là với int unsigned và varchar 40 (đặc biệt là varchar!), Bạn hiện có một khóa chính HUGE và nó đang làm cho tệp chỉ mục của bạn quá lớn để có thể vừa với bất kỳ RAM nào bạn có cho Innodb_buffer_pool. Điều này sẽ khiến InnoDB phải dựa vào đĩa để hoán đổi các trang chỉ mục khi nó tìm kiếm và đó là RẤT NHIỀU lần tìm kiếm đĩa và không có nhiều công việc của CPU.

Một điều tôi đã làm cho một vấn đề tương tự là sử dụng một cái gì đó ở giữa một khóa tự nhiên thực sự và một khóa thay thế. Chúng tôi sẽ lấy 2 trường thực sự là duy nhất (một trong số đó cũng là varchar) và trong lớp ứng dụng sẽ tạo một băm MD5 có chiều rộng cố định và sử dụng THAT làm khóa. Có, nó có nghĩa là ứng dụng sẽ hoạt động nhiều hơn nhưng nó tạo ra một tệp chỉ mục nhỏ hơn nhiều vì bạn không còn sử dụng trường độ dài tùy ý nữa.

HOẶC, bạn có thể chỉ cần sử dụng một máy chủ có hàng tấn RAM và xem liệu điều đó có làm cho chỉ mục này phù hợp với bộ nhớ hay không nhưng tôi luôn muốn đặt mục tiêu cuối cùng là 'ném phần cứng vào nó' :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Câu hỏi và câu trả lời phỏng vấn MySql phổ biến cho người mới hơn + có kinh nghiệm

  2. tự động cập nhật trường mysql dựa trên giá trị của trường khác

  3. Cơ sở dữ liệu pincode của Ấn Độ với tập lệnh công cụ tìm vị trí trong php và jquery

  4. Tạo cơ sở dữ liệu và người dùng MySQL từ PHP

  5. Nhập cột từ CSV vào Bảng MySQL hiện có