Tìm hiểu kích thước chỉ mục MySQL cho một chỉ mục cụ thể


7

Trong MySQL, đối với công cụ InnoDB, làm cách nào để tìm ra kích thước của một trong các chỉ mục tôi có trong cùng một bảng ?

Tôi biết tôi có thể chọn index_length từ information_schema.tables, nhưng điều này cho tổng kích thước của tất cả các chỉ mục trong bảng.

Giả sử tôi có một bảng có chỉ mục PK, một số chỉ mục FK và các ràng buộc duy nhất, v.v. Tôi có thể tìm ra kích thước của một trong những chỉ mục đó không? Hãy nói rằng, tôi chỉ muốn biết kích thước của chỉ số PK.


innodb hay myiasm?
BCoates

InnoDB. Tôi cũng đã cập nhật câu hỏi ban đầu với điều này, cảm ơn.
Timur

Câu trả lời:


6

Dường như không có cách nào để có được câu trả lời trực tiếp từ mysql; tuy nhiên bạn có thể làm một công việc khá tốt để ước tính nó:

Đối với innodb, chỉ mục PRIMARY là một phần của chính dữ liệu và hiển thị trong data_length. Nếu một bảng không có chỉ mục khác thì index_length là 0.

Đối với mỗi hàng trong bảng của bạn, mọi cửa hàng chỉ mục không CHÍNH HÃNG (UNIQUE hoặc INDEX)

  • Chi phí 6 byte
  • mỗi cột được lập chỉ mục
  • mỗi cột trong PRIMARY chưa có trong chỉ mục
  • 1 bit cho mỗi cột NULL có thể, được làm tròn đến byte

Kích thước của một cột trong một chỉ mục là không gian dữ liệu thực tế chiếm thêm 1 hoặc 2 byte chiều dài cho mỗi VARCHAR / TEXT / BLOB. NULL không có không gian.

Có một chi phí bổ sung khoảng 1,4x đến 2,8x cho các trang cây B và các trang lá không đầy đủ. Trong cơ sở dữ liệu của tôi, nó có vẻ là khoảng 2x thường.

Các FK không nên có bất kỳ chi phí không gian nào ngoài chỉ số mà họ yêu cầu.

tài liệu mysql - nguồn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.