Giới hạn kích thước bảng MySQL

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_prefix0 hoặc innodb_large_prefix1. 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_prefix2 hoặc innodb_large_prefix3, giả sử bộ ký tự innodb_large_prefix4 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_prefix7 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_prefix7 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 InnoDB0 và InnoDB1 phải nhỏ hơn 4GB và tổng kích thước hàng, bao gồm cả cột InnoDB2 và innodb_large_prefix2, 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 InnoDB9 trên Windows. Trước Windows 10, giới hạn của InnoDB9 là 260 ký tự. Kể từ Windows 10, phiên bản 1607, các giới hạn của InnoDB9 đã 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

  • DYNAMIC2 ở đị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

    MySQL có thể xử lý 1 triệu bản ghi không?

    Lưu câu trả lời này. Hiển thị hoạt động trên bài đăng này. Hàng triệu hàng cũng được, hàng chục triệu hàng cũng được - miễn là bạn có một máy chủ tốt từ xa, tôi. e. một vài Gbs RAM, nhiều dung lượng ổ đĩa. Bạn sẽ cần tìm hiểu về các chỉ mục để truy xuất nhanh, nhưng về khả năng xử lý của MySQL, không có vấn đề gì .

    Làm thế nào lớn là quá lớn cho cơ sở dữ liệu MySQL?

    Các bảng MyISAM có giới hạn mặc định được đặt thành 256TB cho tệp dữ liệu và chỉ mục. Bạn có thể thay đổi giới hạn này thành tối đa 65.536TB . Kích thước tối đa của InnoDB cho các bảng là 256TB, tương ứng với kích thước vùng bảng đầy đủ.

    MySQL có tốt cho cơ sở dữ liệu lớn không?

    MySQL không được thiết kế để chạy các truy vấn phức tạp đối với khối lượng dữ liệu lớn (yêu cầu xử lý rất nhiều dữ liệu trên quy mô lớn). Trình tối ưu hóa MySQL khá hạn chế, thực hiện một truy vấn tại một thời điểm bằng một luồng duy nhất.

    Kích thước hàng tối đa cho một bảng là gì?

    Kích thước hàng tối đa cho loại bảng đã sử dụng, không tính BLOB, là 65535 - MariaDB Migration.