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

Xây dựng lại chỉ mục trên InnoDB

Bạn đã làm SHOW TABLE STATUS chưa trước và sau khi bạn thả + xây dựng lại? Index_length có thay đổi nhiều không? Có lẽ không bằng một hệ số hai.

Tôi hầu như không bao giờ khuyên bạn nên xây dựng lại bất cứ thứ gì trong InnoDB. Nó không đáng. Một ngoại lệ rõ ràng liên quan đến FULLTEXT chỉ mục.

Vâng, ALTER giả sẽ xây dựng lại các chỉ mục. Vì vậy, OPTIMIZE TABLE sẽ . Cả hai sẽ "chống phân mảnh" (ở một mức độ nào đó) BTrees chỉ mục phụ và BTree chính (chứa dữ liệu và PRIMARY KEY ).

Số liệu thống kê có thể nhiều được cập nhật với giá rẻ hơn chỉ bằng cách sử dụng ANALYZE TABLE . Thậm chí điều đó không thường xuyên cần thiết. 5.6 có một cách tốt hơn nhiều để duy trì số liệu thống kê.

Nếu bạn chưa sử dụng innodb_file_per_table=ON , Tôi khuyên bạn nên đặt điều đó (SET GLOBAL ... ) và thực hiện ALTER TABLE tbl ENGINE=InnoDB; một lần cuối cùng.

Thay đổi trực tuyến

Để thay đổi ft_* , bạn cần phải xây dựng lại chỉ mục. Điều này ngụ ý một ALTER (hoặc OPTIMIZE , được triển khai dưới dạng ALTER ). Các phiên bản MySQL mới hơn có ALGORITHM=INPLACE điều này tạo nên ALTER có ít hoặc không ảnh hưởng đến hệ thống đang chạy. Nhưng, có những hạn chế. Kiểm tra hướng dẫn sử dụng.

Một giải pháp thay thế cho ALTER không INPLACE là pt-query-digest hoặc gh-ost . Xem liệu một trong hai cách này có phù hợp với trường hợp của bạn hay không.

Ngoài "xây dựng lại bảng", bạn có thể DROP INDEX ...ADD INDEX ... . Một lần nữa, tôi không biết liệu những thứ này có hiệu quả với các chỉ số FT "tại chỗ" hay không. Dù sao, bạn sẽ mất việc sử dụng chỉ mục đó trong quá trình nà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. Ràng buộc khóa chính MySql với tên

  2. Làm cách nào để lưu trữ các số liệu cho ứng dụng web của tôi?

  3. Lưu trữ tệp hình ảnh hoặc URL trong cơ sở dữ liệu MySQL? Cái nào tốt hơn?

  4. Tính toán khoảng cách tọa độ trong Laravel

  5. Neo4j - Xóa mối quan hệ bằng Cypher