Cách điều chỉnh InnoDB tập trung vào xung quanh
- Nhóm đệm InnoDB: Nó lưu trữ các trang dữ liệu và trang chỉ mục. Lượng dữ liệu và chỉ mục bạn có thể lưu trữ không phải là một chức năng của các ràng buộc không gian đĩa mà là một chức năng của bộ nhớ và không gian đĩa hiện đang được InnoDB sử dụng.
- InnoDB MetaData: Theo mặc định, tệp ibdata1 thường chứa mọi thứ và mọi thứ InnoDB. Điều đó sẽ bao gồm các trang dữ liệu, trang chỉ mục, siêu dữ liệu bảng, dữ liệu MVCC .
Đây là một công thức tôi đã sử dụng trong 5 năm qua để tính toán Bộ đệm InnoDB dựa trên không gian đĩa được sử dụng bởi các trang chỉ mục và dữ liệu của InnoDB :
SELECT CONCAT(ROUND(KBS/POWER(1024,IF(Power1024<0,0,
IF(Power1024>3,0,Power1024)))+0.49999),SUBSTR(' KMG',IF(Power1024<0,0,
IF(Power1024>3,0,Power1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,(SELECT 2 Power1024) B;
- Sử dụng (CHỌN 0 Power1024) cho byte
- Sử dụng (CHỌN 1 Power1024) cho KB
- Sử dụng (CHỌN 2 Power1024) cho MB
- Sử dụng (CHỌN 3 Power1024) cho GB
- Sử dụng (CHỌN 4 Power1024) cho TB (Gửi email cho tôi nếu bạn có TerraBytes RAM)
Tất nhiên, tôi đã nói một chức năng của bộ nhớ có sẵn và không gian đĩa hiện đang được InnoDB sử dụng. Từ đây, chỉ cần sử dụng thông thường. Số được đề xuất từ truy vấn trên KHÔNG NÊN BỎ QUA 75% RAM CÀI ĐẶT !!! Đó là quy tắc đơn giản nhất để định cỡ cho Bộ đệm InnoDB.
Bạn cũng nên đặt innodb_flush_method thành O_DIRECT vì nó sẽ cung cấp các bản ghi đồng bộ ổn định của InnoDB. Tôi cũng đã viết một bài về cách tối ưu hóa Dung lượng đĩa cho InnoDB .
Đối với thông báo Bảng không hỗ trợ tối ưu hóa, thực hiện tái tạo + phân tích thay vào đó , lý do tại sao bạn nhận được thông báo lỗi đó là thực tế rằng công cụ lưu trữ là InnoDB. Về mặt cơ học, TỐI ƯU BẢNG chỉ cần sao chép bảng vào bảng tạm thời và thực hiện BẢNG ANALYZE .
Trong thực tế, BẢNG ANALYZE chống lại InnoDB là hoàn toàn vô dụng. Ngay cả khi bạn đã chạy ANALYZE TABLE trên bảng InnoDB, công cụ lưu trữ InnoDB sẽ thực hiện các lần lặn vào chỉ mục cho các xấp xỉ cardinality nhiều lần, do đó, bỏ qua các số liệu thống kê bạn vừa biên dịch. Trên thực tế, Percona đã thực hiện một số thử nghiệm trên ANALYZE TABLE và cũng đi đến kết luận tương tự .
Dưới đây là những bài viết khác tôi đã thực hiện trong năm qua về Điều chỉnh InnoDB