Tôi muốn xác định kích thước các chỉ mục của mình, chúng là các chỉ mục khóa chính. Điều này xảy ra trên cụm mysql nhưng tôi không nghĩ rằng điều đó là đáng kể.
Câu trả lời:
Tôi nghĩ đây là những gì bạn đang tìm kiếm.
show table status from [dbname]
http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
Mở rộng câu trả lời của Vajk Hermecz.
Đây là cách bạn có thể nhận được tất cả kích thước chỉ mục, tính bằng megabyte, mà không cần CHÍNH (chính là bảng), được sắp xếp theo kích thước.
SELECT database_name, table_name, index_name,
ROUND(stat_value * @@innodb_page_size / 1024 / 1024, 2) size_in_mb
FROM mysql.innodb_index_stats
WHERE stat_name = 'size' AND index_name != 'PRIMARY'
ORDER BY size_in_mb DESC;
ORDER BY size_in_mb DESC;
:?
Nếu bạn đang sử dụng bảng InnoDB, bạn có thể lấy kích thước cho các chỉ mục riêng lẻ từ đó mysql.innodb_index_stats
. Thống kê 'kích thước' chứa câu trả lời, trong các trang, vì vậy bạn phải nhân nó với kích thước trang, theo mặc định là 16K .
select database_name, table_name, index_name, stat_value*@@innodb_page_size
from mysql.innodb_index_stats where stat_name='size';
stat_value
đã được nhân với kích thước trang, vì vậy cột cung cấp kích thước chỉ mục tính bằng byte.
show table status from [dbname]
Đây là một sự điều chỉnh từ một số điều ở trên để cung cấp cho bạn tỷ lệ phần trăm của tổng chỉ mục cho bảng mà mỗi chỉ mục đã sử dụng, hy vọng điều này sẽ hữu ích cho ai đó
select
database_name,
table_name,
index_name,
round((stat_value*@@innodb_page_size)/1024/1024, 2) SizeMB,
round(((100/(SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES t WHERE t.TABLE_NAME = iis.table_name and t.TABLE_SCHEMA = iis.database_name))*(stat_value*@@innodb_page_size)), 2) `Percentage`
from mysql.innodb_index_stats iis
where stat_name='size'
and table_name = 'TargetTable'
and database_name = 'targetDB'
Ví dụ đầu ra
database_name table_name index_name SizeMB Percentage
targetDB TargetTable id 10 55.55
targetDB TargetTable idLookup 5 27.77
targetDB TargetTable idTest 3 16.66
Trân trọng Liam
Sử dụng phpMyAdmin, khi xem cấu trúc bảng có liên kết Chi tiết ở phía dưới cùng ở đâu đó. Khi bạn nhấp vào nó, nó sẽ hiển thị cho bạn tổng kích thước của các chỉ mục bạn có trên bảng nơi nó được đánh dấu Sử dụng không gian.
Tôi không nghĩ rằng nó hiển thị cho bạn từng chỉ mục riêng lẻ.
Trong bài viết này xác định cách tính kích thước chỉ mục. http://aadant.com/blog/2014/02/04/how-to-calculate-a-specific-innodb-index-size/
SELECT SUM(stat_value) pages, index_name,
SUM(stat_value)*@@innodb_page_size size
FROM mysql.innodb_index_stats WHERE table_name='t1'
AND stat_name = 'size' GROUP BY index_name;