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

Tại sao MySQL InnoDB quét toàn bảng chậm hơn nhiều so với MyISAM?

Trên máy chủ của tôi với cấu hình của bạn, hiệu suất cơ bản của tôi như sau:

  • InnoDB:5,71 giây
  • MyISAM:2,50 giây

Điều này không tệ trong cuốn sách của tôi, nhưng nó có thể sử dụng một số điều chỉnh.

Hiệu suất InnoDB của bạn có thể được cải thiện trên một số mặt:

Tăng innodb_buffer_pool_size

  • Đây là biến cấu hình InnoDB quan trọng nhất. Lý tưởng nhất là 70-80% RAM khả dụng của bạn trên máy chủ dành riêng cho MySQL and InnoDB.
  • Tăng innodb_buffer_pool_size trên máy chủ của tôi xuống 2G (quá đủ cho thử nghiệm này) đã giảm thời gian InnoDB thành 4,60 giây

Đặt id làm KHÓA CHÍNH

  • InnoDB phân cụm dữ liệu của nó dựa trên PRIMARY KEY. Khi bạn không khai báo, InnoDB sẽ hoàn toàn tạo ra một ngẫu nhiên. Việc có một khóa chính (id) tuần tự sẽ nhanh hơn một khóa ngẫu nhiên.
  • Đặt id làm KHÓA CHÍNH trên máy chủ của tôi đã giảm thời gian InnoDB thành 3,80 giây

Nâng cấp MySQL / InnoDB của bạn

Với MySQL 5.1+ MySQL hỗ trợ các công cụ lưu trữ có thể cắm được. Cụ thể là Plugin InnoDB mới .

Công cụ InnoDB mới cung cấp nhiều cải tiến hiệu suất mà có thể có ảnh hưởng đáng kể đến loại truy vấn cụ thể này.

Lưu ý:

  • Kể từ MySQL 5.1.38, Plugin InnoDB được bao gồm trong MySQL
  • Kể từ MySQL 5.1.43, Plugin InnoDB không chỉ được bao gồm mà còn là công cụ mặc định cho MySQL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận dữ liệu cho biểu đồ biểu đồ

  2. Làm cách nào để lấy lại tên người dùng và mật khẩu MySQL của tôi?

  3. Cách thay đổi múi giờ máy chủ MySQL

  4. Nhận dữ liệu phân cấp từ các bảng tự tham chiếu

  5. Làm cách nào để xử lý các giá trị NULL trong câu lệnh mysql SELECT ... OUTFILE kết hợp với FIELDS ESCAPED BY? Giá trị NULL hiện đang bị cắt bớt