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ữ loại số Yêu cầu lưu trữ ngày và loại thời gian Yêu cầu lưu trữ loại chuỗi Yêu cầu lưu trữ loại không gian Yêu cầu lưu trữ JSON
Các yêu cầu lưu trữ cho dữ liệu bảng trên đĩa phụ thuộc vào một số yếu tố. Các công cụ lưu trữ khác nhau đại diện cho các loại dữ liệu và lưu trữ dữ liệu thô khác nhau. Dữ liệu bảng có thể được nén, cho một cột hoặc toàn bộ hàng, làm phức tạp việc tính toán các yêu cầu lưu trữ cho bảng hoặc cột. Mặc dù có sự khác biệt trong bố cục lưu trữ trên đĩa, API MySQL nội bộ giao tiếp và trao đổi thông tin về các hàng bảng sử dụng cấu trúc dữ liệu nhất quán áp dụng trên tất cả các công cụ lưu trữ. Phần này bao gồm các hướng dẫn và thông tin cho các yêu cầu lưu trữ cho từng loại dữ liệu được MySQL hỗ trợ, bao gồm định dạng và kích thước nội bộ cho các công cụ lưu trữ sử dụng biểu diễn kích thước cố định cho các loại dữ liệu. Thông tin được liệt kê theo danh mục hoặc công cụ lưu trữ. Biểu diễn bên trong của bảng có kích thước hàng tối đa là 65.535 byte, ngay cả khi công cụ lưu trữ có khả năng hỗ trợ các hàng lớn hơn. Hình này không bao gồm các cột BLOB hoặc TEXT , chỉ đóng góp 9 đến 12 byte cho kích thước này. Đối với dữ liệu BLOB và TEXT , thông tin được lưu trữ bên trong trong một khu vực khác của bộ nhớ so với bộ đệm hàng. Các công cụ lưu trữ khác nhau xử lý việc phân bổ và lưu trữ dữ liệu này theo các cách khác nhau, theo phương pháp họ sử dụng để xử lý các loại tương ứng. Để biết thêm thông tin, hãy xem Chương & NBSP; 16, Công cụ lưu trữ thay thế và Phần & NBSP; 8.4.7, Giới hạn trên bảng số cột và kích thước hàng. 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 NDB data storage is done in multiples of 4 bytes. Thus, a column
value that would typically take 15 bytes requires 16 bytes in an NDB table. For example, in NDB tables, the
TINYINT , SMALLINT ,
TEXT 0, and TEXT 1
(TEXT 2) column types each require 4 bytes storage per record due to the alignment factor. Yêu cầu lưu trữ loại chuỗinot 4-byte aligned, NDB reserves 4 bytes (32 bits) per row for the first 1-32 bits needed for TEXT 5 columns, then another 4 bytes for bits 33-64, and so on. Yêu cầu lưu trữ loại không gian Yêu cầu lưu trữ JSON“hidden” primary key is created by NDB . This hidden primary key consumes 31-35 bytes per table record. Các yêu cầu lưu trữ cho dữ liệu bảng trên đĩa phụ thuộc vào một số yếu tố. Các công cụ lưu trữ khác nhau đại diện cho các loại dữ liệu và lưu trữ dữ liệu thô khác nhau. Dữ liệu bảng có thể được nén, cho một cột hoặc toàn bộ hàng, làm phức tạp việc tính toán các yêu cầu lưu trữ cho bảng hoặc cột.ndb_size.pl Perl script to estimate NDB storage requirements. It connects to a current MySQL (not NDB Cluster) database and creates a report on how much
space that database would require if it used the NDB storage engine. See Section 23.5.28, “ndb_size.pl — NDBCLUSTER Size Requirement Estimator” for more information.
Yêu cầu lưu trữ loại số
Yêu cầu lưu trữ ngày và loại thời gian | Yêu cầu lưu trữ loại chuỗi |
---|
Yêu cầu lưu trữ loại không gian | Yêu cầu lưu trữ JSON | Các yêu cầu lưu trữ cho dữ liệu bảng trên đĩa phụ thuộc vào một số yếu tố. Các công cụ lưu trữ khác nhau đại diện cho các loại dữ liệu và lưu trữ dữ liệu thô khác nhau. Dữ liệu bảng có thể được nén, cho một cột hoặc toàn bộ hàng, làm phức tạp việc tính toán các yêu cầu lưu trữ cho bảng hoặc cột. | Mặc dù có sự khác biệt trong bố cục lưu trữ trên đĩa, API MySQL nội bộ giao tiếp và trao đổi thông tin về các hàng bảng sử dụng cấu trúc dữ liệu nhất quán áp dụng trên tất cả các công cụ lưu trữ. | Phần này bao gồm các hướng dẫn và thông tin cho các yêu cầu lưu trữ cho từng loại dữ liệu được MySQL hỗ trợ, bao gồm định dạng và kích thước nội bộ cho các công cụ lưu trữ sử dụng biểu diễn kích thước cố định cho các loại dữ liệu. Thông tin được liệt kê theo danh mục hoặc công cụ lưu trữ. | Biểu diễn bên trong của bảng có kích thước hàng tối đa là 65.535 byte, ngay cả khi công cụ lưu trữ có khả năng hỗ trợ các hàng lớn hơn. Hình này không bao gồm các cột BLOB hoặc TEXT , chỉ đóng góp 9 đến 12 byte cho kích thước này. Đối với dữ liệu BLOB và TEXT , thông tin được lưu trữ bên trong trong một khu vực khác của bộ nhớ so với bộ đệm hàng. Các công cụ lưu trữ khác nhau xử lý việc phân bổ và lưu trữ dữ liệu này theo các cách khác nhau, theo phương pháp họ sử dụng để xử lý các loại tương ứng. Để biết thêm thông tin, hãy xem Chương & NBSP; 16, Công cụ lưu trữ thay thế và Phần & NBSP; 8.4.7, Giới hạn trên bảng số cột và kích thước hàng. | Quan trọng | NDB Bảng sử dụng căn chỉnh 4 byte; Tất cả lưu trữ dữ liệu NDB được thực hiện theo bội số của 4 byte. Do đó, một giá trị cột thường mất 15 byte yêu cầu 16 byte trong bảng NDB . Ví dụ: trong các bảng NDB , các loại cột TINYINT , SMALLINT , TEXT 0 và TEXT 1 (TEXT 2), mỗi loại yêu cầu lưu trữ 4 byte trên mỗi bản ghi do hệ số căn chỉnh. | Mỗi cột TEXT 3) lấy TEXT 4 bit của không gian lưu trữ. Mặc dù một cột TEXT 5 riêng lẻ không được căn chỉnh 4 byte, NDB dự trữ 4 byte (32 bit) mỗi hàng cho 1-32 bit đầu tiên cần thiết cho các cột TEXT 5, sau đó 4 byte khác cho bit 33-64, v.v. | Mặc dù bản thân A . | Mỗi bảng sử dụng công cụ lưu trữ NDB yêu cầu khóa chính; Nếu bạn không định nghĩa một khóa chính, một khóa chính ẩn của Google được tạo bởi NDB . Khóa chính ẩn này tiêu thụ 31-35 byte cho mỗi bản ghi bảng. | 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ữ NDB . Nó kết nối với cơ sở dữ liệu MySQL (không phải cụm NDB) hiện tại và tạo báo cáo về lượng không gian mà cơ sở dữ liệu sẽ yêu cầu nếu sử dụng công cụ lưu trữ NDB . Xem Phần & NBSP; 23.5.28, ND NDB_SIZE.PL - Công cụ ước tính yêu cầu kích thước NDBCluster để biết thêm thông tin. | Loại dữ liệu | NDB Bảng sử dụng căn chỉnh 4 byte; Tất cả lưu trữ dữ liệu NDB được thực hiện theo bội số của 4 byte. Do đó, một giá trị cột thường mất 15 byte yêu cầu 16 byte trong bảng NDB . Ví dụ: trong các bảng NDB , các loại cột TINYINT , SMALLINT , TEXT 0 và TEXT 1 (TEXT 2), mỗi loại yêu cầu lưu trữ 4 byte trên mỗi bản ghi do hệ số căn chỉnh. | Mỗi cột TEXT 3) lấy TEXT 4 bit của không gian lưu trữ. Mặc dù một cột TEXT 5 riêng lẻ không được căn chỉnh 4 byte, NDB dự trữ 4 byte (32 bit) mỗi hàng cho 1-32 bit đầu tiên cần thiết cho các cột TEXT 5, sau đó 4 byte khác cho bit 33-64, v.v. | Mặc dù bản thân A . | Mỗi bảng sử dụng công cụ lưu trữ NDB yêu cầu khóa chính; Nếu bạn không định nghĩa một khóa chính, một khóa chính ẩn của Google được tạo bởi NDB . Khóa chính ẩn này tiêu thụ 31-35 byte cho mỗi bản ghi bảng. , NUMERIC(TEXT 4,NDB 1)
| 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ữ NDB . Nó kết nối với cơ sở dữ liệu MySQL (không phải cụm NDB) hiện tại và tạo báo cáo về lượng không gian mà cơ sở dữ liệu sẽ yêu cầu nếu sử dụng công cụ lưu trữ NDB . Xem Phần & NBSP; 23.5.28, ND NDB_SIZE.PL - Công cụ ước tính yêu cầu kích thước NDBCluster để biết thêm thông tin. | Loại dữ liệu | Cần lưu trữ |
________số 8“leftover” digits require some fraction of four bytes. The storage required for excess digits is given by the following table.
1 byte | SMALLINT |
---|
0 | 0 | 1 | 1 | 2 | 1 | 3 | 2 | 4 | 2 | 5 | 3 | 6 | 3 | 7 | 4 | 8 | 4 |
Yêu cầu lưu trữ ngày và loại thời gian2 byte
Yêu cầu lưu trữ ngày và loại thời gian | Yêu cầu lưu trữ loại chuỗi | Yêu cầu lưu trữ kể từ MySQL 5.6.4 |
---|
NDB 1 | 1 byte | 1 byte |
---|
NDB 2 | 3 byte | 3 byte |
---|
NDB 8 | 3 byte | 3 byte + lưu trữ giây phân đoạn |
---|
NDB 9 | 8 byte | 5 byte + lưu trữ giây phân số |
---|
NDB 0 | 4 byte | 4 byte + lưu trữ giây phân đoạn |
---|
Kể từ MySQL 5.6.4, lưu trữ cho NDB 1 và NDB 2 vẫn không thay đổi. Tuy nhiên, NDB 8, NDB 9 và NDB 0 được thể hiện khác nhau. NDB 9 được đóng gói hiệu quả hơn, yêu cầu 5 thay vì 8 byte cho phần không phân hủy và cả ba phần đều có một phần phân đoạn yêu cầu từ 0 đến 3 byte, tùy thuộc vào độ chính xác của phần hai của các giá trị được lưu trữ.
Độ chính xác giây phân số | Cần lưu trữ |
---|
0 | 0 byte | 1, 2 | 1 byte | 3, 4 | 2 byte | 5, 6 | 3 byte |
3 byte + lưu trữ giây phân đoạn 8 byte 5 byte + lưu trữ giây phân số4 byte
4 byte + lưu trữ giây phân đoạn | Cần lưu trữ |
---|
CHAR(TEXT 4)
| 0 byte<=
TEXT 4 <= 255, where NDB 2 is the number of bytes required for the
maximum-length character in the character
set.
| BINARY(TEXT 4)
| 1, 2<=
TEXT 4 <= 255
| 3, 4 , VARBINARY(TEXT 4)
| 2 byte | 5, 6 | Ví dụ: NDB 2, NDB 3, NDB 4 và NDB 5 lần lượt sử dụng 3, 4, 5 và 6 byte. NDB 8 và NDB 2 tương đương và yêu cầu lưu trữ giống nhau. | Để biết chi tiết về biểu diễn nội bộ của các giá trị thời gian, hãy xem Internals MySQL: Các thuật toán và cấu trúc quan trọng. | Yêu cầu lưu trữ loại chuỗi | Trong bảng sau, TEXT 4 đại diện cho độ dài cột được khai báo trong các ký tự cho các loại chuỗi và byte không phân biệt cho các loại chuỗi nhị phân. NDB 9 đại diện cho độ dài thực tế trong byte của một giá trị chuỗi đã cho. | Loại dữ liệu | Họ nhỏ gọn của các định dạng hàng innodb tối ưu hóa lưu trữ cho các bộ ký tự có độ dài thay đổi. Xem các đặc điểm lưu trữ định dạng hàng nhỏ gọn. Nếu không, TEXT 4 × NDB 2 byte, | TEXT 4 byte, 0 | Varchar (________ 14), varbinary (____ 14) | NDB 9 + 1 byte Nếu các giá trị cột yêu cầu 0 - 255 byte, NDB 9 + 2 byte nếu các giá trị có thể yêu cầu nhiều hơn 255 byte | TINYINT 2, TINYINT 3 | NDB 9 + 1 byte, trong đó NDB 9 <28 |
BLOB , TEXT
NDB 9 + 2 byte, trong đó NDB 9 <216
SMALLINT 0, SMALLINT 1
NDB 9 + 3 byte, trong đó NDB 9 <224
SMALLINT 4, SMALLINT 5
NDB 9 + 4 byte, trong đó NDB 9 <232
________ 98 ',' ________ 99 ', ...) 1 hoặc 2 byte, tùy thuộc vào số lượng giá trị liệt kê (tối đa 65,535 giá trị)bytes that can be stored in a TEXT 06 or TEXT 13 column is subject to the maximum row size of 65,535 bytes, which is shared among all columns. For a TEXT 06 column that stores multibyte characters, the effective maximum number of characters is less. For
example, TEXT 09 characters can require up to four bytes per character, so a TEXT 06 column that uses the TEXT 09 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”. TEXT 29 mã hóa các trường có độ dài cố định lớn hơn hoặc bằng 768 byte có 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 TEXT 30 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, như với TEXT 09.
Công cụ lưu trữ NDB hỗ trợ các cột có chiều rộng thay đổi. Điều này có nghĩa là một cột TEXT 06 trong bảng cụm NDB yêu cầu cùng một lượng lưu trữ 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 TEXT 19 được lưu trữ trong cột TEXT 35 bằng cách sử dụng bộ ký tự TEXT 17 yêu cầu 8 byte (thay vì 5 byte cho cùng một giá trị cột trong bảng TEXT 37). Các cột TEXT , BLOB và TEXT 40 được triển khai khác nhau trong công cụ lưu trữ NDB , 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 TEXT và BLOB , 4000 byte cho TEXT 40) 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 TEXT là 256 nếu TEXT 46 Không có bộ phận nào được lưu trữ riêng biệt bởi NDB cho các giá trị cột TINYINT 2 hoặc TINYINT 3. Bạn có thể tăng kích thước của phần blob của cột Blob lên tối đa 13948 bằng cách sử dụng TEXT 54 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 TEXT , BLOB hoặc TEXT 40, sử dụng TEXT 58 trong một 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 TEXT 59 đượ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 TEXT 60 đượ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à TEXT 61, đối tượng chiếm (________ 161+7)/8 byte, được làm tròn lên đến 1, 2, 3, 4 hoặc 8 byte. Một TEXT 60 có thể có tối đa 64 thành viên. Xem Phần & NBSP; 11.3.6, Loại SET loại.(TEXT 61+7)/8 bytes, rounded up to 1, 2, 3, 4, or 8 bytes. A TEXT 60 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 TEXT 64 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 TEXT 40 xấp xỉ bằng cột SMALLINT 4 hoặc SMALLINT 5; Đó 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 TEXT 40 sao cho nó không thể lớn hơn giá trị của TEXT 69. |