Kích thước bảng tối đa hiệu quả cho cơ sở dữ liệu MySQL thường được xác định bởi các ràng buộc hệ điều hành trên các kích thước tệp, không phải bởi các giới hạn nội bộ của MySQL. Để biết giới hạn kích thước tệp hệ điều hành thông tin cập nhật, hãy tham khảo tài liệu cụ thể cho hệ điều hành của bạn. Show Người dùng Windows, xin lưu ý rằng FAT và VFAT (FAT32) không được coi là phù hợp để sử dụng sản xuất với MySQL. Sử dụng NTFS thay thế.not considered suitable for production use with MySQL. Use NTFS instead. Nếu bạn gặp phải một lỗi toàn bàn, có một số lý do tại sao nó có thể xảy ra:
8.4.5 & nbsp; giới hạn số lượng cơ sở dữ liệu và bảngMySQL không có giới hạn về số lượng cơ sở dữ liệu. Hệ thống tệp cơ bản có thể có giới hạn về số lượng thư mục. MySQL không có giới hạn về số lượng bảng. Hệ thống tệp cơ bản có thể có giới hạn về số lượng tệp đại diện cho các bảng. Động cơ lưu trữ cá nhân có thể áp đặt các ràng buộc cụ thể của động cơ.
Nói chung, yêu cầu lưu trữ cho cột 67 xấp xỉ bằng cột 21 hoặc 22; Đó là, không gian được tiêu thụ bởi một tài liệu JSON gần giống với biểu diễn chuỗi của tài liệu được lưu trữ trong một cột của một trong các loại này. Tuy nhiên, có một chi phí được áp đặt bởi mã hóa nhị phân, bao gồm siêu dữ liệu và từ điển cần thiết để tra cứu, của các giá trị riêng lẻ được lưu trữ trong tài liệu JSON. Ví dụ, một chuỗi được lưu trữ trong tài liệu JSON yêu cầu lưu trữ bổ sung 4 đến 10 byte, tùy thuộc vào độ dài của chuỗi và kích thước của đối tượng hoặc mảng mà nó được lưu trữ.Ngoài ra, MySQL áp đặt giới hạn về kích thước của bất kỳ tài liệu JSON nào được lưu trữ trong cột 67 sao cho nó không thể lớn hơn giá trị của 96.Yêu cầu lưu trữ bảng Innodb Yêu cầu lưu trữ bảng NDB Yêu cầu lưu trữ bảng NDBYêu cầu lưu trữ loại số Yêu cầu lưu trữ ngày và loại thời gian4-byte alignment; all Yêu cầu lưu trữ loại chuỗinot 4-byte aligned, Mặc dù bản thân một Mỗi bảng sử dụng công cụ lưu trữ Bạn có thể sử dụng tập lệnh ndb_size.pl perl để ước tính các yêu cầu lưu trữ
Yêu cầu lưu trữ loại số
Thập phân (____ 41, ________ 68), số (________ 41, ________ 68)“leftover” digits require some fraction of four bytes. The storage required for excess digits is given by the following table.
xấp xỉ (____ 41+7)/8 byte Các giá trị cho các cột
8 byte
4 byte
|
Loại dữ liệu | Cần lưu trữ |
---|---|
CHAR(
| MyISAM 1)<=
255, where AVG_ROW_LENGTH 9 is the number of bytes required for the
maximum-length character in the character
set.
|
BINARY(
| 4 byte nếu 0<=
255
|
, VARBINARY(
| MyISAM 5, MyISAM 6 |
Thập phân (____ 41, ________ 68), số (________ 41, ________ 68) | Thay đổi; Xem cuộc thảo luận sau |
MyISAM 0) | xấp xỉ (____ 41+7)/8 byte |
Các giá trị cho các cột MyISAM 3 (và MyISAM 4) được biểu diễn bằng định dạng nhị phân gói chín chữ số thập phân (cơ sở 10) thành bốn byte. Lưu trữ cho các phần số nguyên và phân số của mỗi giá trị được xác định riêng. Mỗi bội số của chín chữ số yêu cầu bốn byte và các chữ số còn sót lại của người dùng yêu cầu một số phần của bốn byte. Bộ lưu trữ cần thiết cho các chữ số dư thừa được đưa ra bởi bảng sau. | Chữ số còn sót lại |
Số byte | Yêu cầu lưu trữ ngày và loại thời gian |
Đối với các cột MyISAM 5, MyISAM 6 và MyISAM 7, bộ lưu trữ cần thiết cho các bảng được tạo trước MySQL 5.6.4 khác với các bảng được tạo từ 5.6.4 trở đi. Điều này là do sự thay đổi trong 5.6.4 cho phép các loại này có một phần phân số, yêu cầu từ 0 đến 3 byte. | Yêu cầu lưu trữ trước MySQL 5.6.4 |
Yêu cầu lưu trữ kể từ MySQL 5.6.4 | 3 byte + lưu trữ giây phân đoạn |
5 byte + lưu trữ giây phân số
Để tính toán số byte được sử dụng để lưu trữ một giá trị cột
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
32, SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
33 hoặc SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
4 cụ thể, bạn phải tính đến bộ ký tự được sử dụng cho cột đó và liệu giá trị có chứa các ký tự multibyte hay không. Cụ thể, khi sử dụng bộ ký tự Unicode UTF-8, bạn phải nhớ rằng không phải tất cả các ký tự đều sử dụng cùng một số byte. SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
35 và SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
36 Bộ ký tự có thể yêu cầu tương ứng tối đa ba và bốn byte trên mỗi ký tự. Để biết sự cố lưu trữ được sử dụng cho các danh mục khác nhau của các ký tự SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
35 hoặc SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
36, xem Phần & NBSP; 10.9, hỗ trợ của Unicode.
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
33, SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
40 và các loại SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
3 và SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
4 là các loại có độ dài thay đổi. Đối với mỗi, các yêu cầu lưu trữ phụ thuộc vào các yếu tố sau:Độ dài thực của giá trị cột
Độ dài tối đa có thể của cột
Bộ ký tự được sử dụng cho cột, bởi vì một số bộ ký tự chứa các ký tự multibyte
Ví dụ: cột
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
43 có thể giữ một chuỗi có độ dài tối đa 255 ký tự. Giả sử rằng cột sử dụng bộ ký tự SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
44 (một byte cho mỗi ký tự), bộ lưu trữ thực tế cần thiết là độ dài của chuỗi (AVG_ROW_LENGTH
6), cộng với một byte để ghi lại độ dài của chuỗi. Đối với chuỗi SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
46, AVG_ROW_LENGTH
6 là 4 và yêu cầu lưu trữ là năm byte. Thay vào đó, cùng một cột được tuyên bố sử dụng bộ ký tự kép SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
48 đến 510 byte).Số lượng byte tối đa hiệu quả có thể được lưu trữ trong cột
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
33 hoặc SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
40 phải tuân theo kích thước hàng tối đa là 65,535 byte, được chia sẻ giữa tất cả các cột. Đối với một cột SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
33 lưu trữ các ký tự multibyte, số lượng ký tự tối đa hiệu quả là ít hơn. Ví dụ: SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
36 ký tự có thể yêu cầu tối đa bốn byte trên mỗi ký tự, do đó, một cột SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
33 sử dụng bộ ký tự SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
36 có thể được khai báo là tối đa 16.383 ký tự. Xem Phần & NBSP; 8.4.7, Giới hạn trên số đếm cột và kích thước hàng.bytes that can be stored in a SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
33 or SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
40 column is subject to the maximum row size of 65,535 bytes, which is shared among all columns. For a SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
33 column that stores multibyte characters, the effective maximum number of characters is less. For
example, SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
36 characters can require up to four bytes per character, so a SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
33 column that uses the SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
36 character set can be declared to be a maximum of 16,383 characters. See Section 8.4.7, “Limits on Table Column
Count and Row Size”. InnoDB
mã hóa các trường có độ dài cố định lớn hơn hoặc bằng 768 byte theo chiều dài như các trường có độ dài thay đổi, có thể được lưu trữ ngoài trang. Ví dụ, cột
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
57 có thể vượt quá 768 byte nếu độ dài byte tối đa của bộ ký tự lớn hơn 3, vì nó là với SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
36. Công cụ lưu trữ InnoDB
1 hỗ trợ các cột có chiều rộng thay đổi. Điều này có nghĩa là cột
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
33 trong bảng cụm NDB yêu cầu lượng lưu trữ giống như bất kỳ công cụ lưu trữ nào khác, ngoại trừ các giá trị đó được căn chỉnh 4 byte. Do đó, chuỗi SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
46 được lưu trữ trong cột SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
62 bằng cách sử dụng bộ ký tự SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
44 yêu cầu 8 byte (thay vì 5 byte cho cùng một giá trị cột trong bảng MyISAM
).Các cột
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
4, SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
3 và SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
67 được triển khai khác nhau trong công cụ lưu trữ InnoDB
1, trong đó mỗi hàng trong cột được tạo thành từ hai phần riêng biệt. Một trong số đó có kích thước cố định (256 byte cho SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
4 và SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
3, 4000 byte cho SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
67) và thực sự được lưu trữ trong bảng gốc. Các loại khác bao gồm bất kỳ dữ liệu nào vượt quá 256 byte, được lưu trữ trong bảng các bộ phận Blob ẩn. Kích thước của các hàng trong bảng thứ hai này được xác định bởi loại chính xác của cột, như được hiển thị trong bảng sau:Điều này có nghĩa là kích thước của cột
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
4 là 256 nếu SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
73 Không có bộ phận nào được lưu trữ riêng biệt bởi InnoDB
1 cho các giá trị cột
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
09 hoặc SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
10. Bạn có thể tăng kích thước của phần blob của cột InnoDB
1 lên tối đa 13948 bằng cách sử dụng
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
81 trong một bình luận cột khi tạo hoặc thay đổi bảng cha mẹ. Trong NDB 8.0.30 và sau đó, cũng có thể đặt kích thước nội tuyến cho cột SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
4, SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
3 hoặc SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
67, sử dụng SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
85 trong nhận xét cột. Xem các tùy chọn NDB_Column, để biết thêm thông tin.Kích thước của một đối tượng
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
86 được xác định bởi số lượng các giá trị liệt kê khác nhau. Một byte được sử dụng để liệt kê với tối đa 255 giá trị có thể. Hai byte được sử dụng để liệt kê có từ 256 đến 65,535 giá trị có thể. Xem phần & nbsp; 11.3.5, loại Enum loại.Kích thước của một đối tượng
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
87 được xác định bởi số lượng thành viên được đặt khác nhau. Nếu kích thước đặt là SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
88, đối tượng chiếm (____ 188+7)/8 byte, được làm tròn lên đến 1, 2, 3, 4 hoặc 8 byte. Một SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
87 có thể có tối đa 64 thành viên. Xem Phần & NBSP; 11.3.6, Loại SET loại.(SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
88+7)/8
bytes, rounded up to 1, 2, 3, 4, or 8 bytes. A SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
87 can have a maximum of 64 members. See Section 11.3.6, “The SET Type”. Yêu cầu lưu trữ loại không gian
MySQL lưu trữ các giá trị hình học sử dụng 4 byte để chỉ ra SRID theo sau là biểu diễn WKB của giá trị. Hàm
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
91 trả về không gian trong byte cần thiết để lưu trữ giá trị.Để biết mô tả về WKB và các định dạng lưu trữ nội bộ cho các giá trị không gian, xem Phần & NBSP; 11.4.3, các định dạng dữ liệu không gian được hỗ trợ.
Yêu cầu lưu trữ JSON
Nói chung, yêu cầu lưu trữ cho cột
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
67 xấp xỉ bằng cột SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
21 hoặc SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
22; Đó là, không gian được tiêu thụ bởi một tài liệu JSON gần giống với biểu diễn chuỗi của tài liệu được lưu trữ trong một cột của một trong các loại này. Tuy nhiên, có một chi phí được áp đặt bởi mã hóa nhị phân, bao gồm siêu dữ liệu và từ điển cần thiết để tra cứu, của các giá trị riêng lẻ được lưu trữ trong tài liệu JSON. Ví dụ, một chuỗi được lưu trữ trong tài liệu JSON yêu cầu lưu trữ bổ sung 4 đến 10 byte, tùy thuộc vào độ dài của chuỗi và kích thước của đối tượng hoặc mảng mà nó được lưu trữ.Ngoài ra, MySQL áp đặt giới hạn về kích thước của bất kỳ tài liệu JSON nào được lưu trữ trong cột
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
67 sao cho nó không thể lớn hơn giá trị của SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
96.