Một bảng có thể chứa tối đa 1017 cột [được nêu trong MySQL 5. 6. 9 từ giới hạn trước đó là 1000]. Các cột được tạo ảo được bao gồm trong giới hạn này
Một bảng có thể chứa tối đa 64 chỉ mục phụ
Nếu innodb_large_prefix
được bật [mặc định], giới hạn tiền tố của khóa chỉ mục là 3072 byte cho bảng InnoDB
sử dụng định dạng hàng DYNAMIC
hoặc COMPRESSED
. Nếu innodb_large_prefix
bị tắt, giới hạn tiền tố của khóa chỉ mục là 767 byte đối với các bảng có định dạng hàng bất kỳ
innodb_large_prefix
không được dùng nữa; . innodb_large_prefix
đã được giới thiệu trong MySQL 5. 5 để vô hiệu hóa tiền tố khóa chỉ mục lớn để tương thích với các phiên bản trước đó của InnoDB
không hỗ trợ tiền tố khóa chỉ mục lớn
Giới hạn độ dài tiền tố của khóa chỉ mục là 767 byte đối với bảng InnoDB
sử dụng định dạng hàng innodb_large_prefix
0 hoặc innodb_large_prefix
1. Ví dụ: bạn có thể đạt đến giới hạn này với chỉ mục tiền tố cột dài hơn 255 ký tự trên cột innodb_large_prefix
2 hoặc innodb_large_prefix
3, giả sử bộ ký tự innodb_large_prefix
4 và tối đa 3 byte cho mỗi ký tự
Cố gắng sử dụng độ dài tiền tố khóa chỉ mục vượt quá giới hạn sẽ trả về lỗi. Để tránh những lỗi như vậy trong cấu hình sao chép, hãy tránh bật innodb_large_prefix
trên nguồn nếu nó cũng không thể được bật trên các bản sao
Nếu bạn giảm kích thước trang InnoDB
xuống 8KB hoặc 4KB bằng cách chỉ định tùy chọn innodb_large_prefix
7 khi tạo phiên bản MySQL, thì độ dài tối đa của khóa chỉ mục sẽ giảm theo tỷ lệ, dựa trên giới hạn 3072 byte cho kích thước trang 16KB. Nghĩa là, độ dài khóa chỉ mục tối đa là 1536 byte khi kích thước trang là 8KB và 768 byte khi kích thước trang là 4KB
Các giới hạn áp dụng cho các tiền tố khóa chỉ mục cũng áp dụng cho các khóa chỉ mục toàn cột
Tối đa 16 cột được phép cho các chỉ mục nhiều cột. Vượt quá giới hạn trả về một lỗi
ERROR 1070 [42000]: Too many key parts specified; max 16 parts allowed
Kích thước hàng tối đa, không bao gồm bất kỳ cột có độ dài thay đổi nào được lưu trữ ngoài trang, nhỏ hơn một nửa trang đối với các kích thước trang 4KB, 8KB, 16KB và 32KB. Ví dụ: kích thước hàng tối đa cho innodb_large_prefix
7 mặc định là 16KB là khoảng 8000 byte. Tuy nhiên, đối với kích thước trang InnoDB
là 64KB, kích thước hàng tối đa là khoảng 16000 byte. Các cột InnoDB
0 và InnoDB
1 phải nhỏ hơn 4GB và tổng kích thước hàng, bao gồm cả cột InnoDB
2 và innodb_large_prefix
2, phải nhỏ hơn 4GB
Nếu một hàng dài chưa đến nửa trang, tất cả hàng đó sẽ được lưu trữ cục bộ trong trang. Nếu vượt quá nửa trang, thì các cột có độ dài thay đổi được chọn để lưu trữ ngoài trang cho đến khi hàng vừa với nửa trang, như được mô tả trong Phần 14. 12. 2, “Quản lý không gian tệp”
Mặc dù InnoDB
hỗ trợ kích thước hàng lớn hơn 65.535 byte bên trong, nhưng bản thân MySQL áp đặt giới hạn kích thước hàng là 65.535 cho kích thước kết hợp của tất cả các cột. Xem Phần 8. 4. 7, “Giới hạn về số lượng cột trong bảng và kích thước hàng”
Trên một số hệ điều hành cũ, tệp phải dưới 2GB. Đây không phải là giới hạn của InnoDB
. Nếu bạn yêu cầu một không gian bảng hệ thống lớn, hãy định cấu hình nó bằng cách sử dụng một số tệp dữ liệu nhỏ hơn thay vì một tệp dữ liệu lớn hoặc phân phối dữ liệu bảng trên từng tệp trên mỗi bảng và tệp dữ liệu không gian bảng chung
Kích thước tối đa kết hợp cho tệp nhật ký InnoDB
là 512GB
Kích thước không gian bảng tối thiểu lớn hơn một chút so với 10 MB. Kích thước không gian bảng tối đa phụ thuộc vào kích thước trang InnoDB
Bảng 14. 25 Kích thước không gian bảng tối đa của InnoDB
Kích thước trang InnoDBKích thước không gian bảng tối đa4KB16TB8KB32TB16KB64TB32KB128TB64KB256TB
Kích thước không gian bảng tối đa cũng là kích thước tối đa cho một bảng
Các tệp vùng bảng không thể vượt quá 4GB trên hệ thống Windows 32-bit [Lỗi #80149]
Một phiên bản InnoDB
hỗ trợ tối đa 2^32 [4294967296] không gian bảng, với một số lượng nhỏ các không gian bảng đó được dành riêng cho các bảng tạm thời và hoàn tác
Không gian bảng được chia sẻ hỗ trợ tối đa 2^32 [4294967296] bảng
Đường dẫn của tệp không gian bảng, bao gồm tên tệp, không được vượt quá giới hạn InnoDB
9 trên Windows. Trước Windows 10, giới hạn của InnoDB
9 là 260 ký tự. Kể từ Windows 10, phiên bản 1607, các giới hạn của InnoDB
9 đã bị xóa khỏi các chức năng thư mục và tệp Win32 phổ biến, nhưng bạn phải kích hoạt hành vi mới
DYNAMIC
2 ở định dạng tệp Barracuda giả định rằng kích thước trang tối đa là 16KB và sử dụng con trỏ 14 bit