ฉันต้องการกำหนดขนาดของดัชนีของฉันซึ่งเป็นดัชนีคีย์หลัก สิ่งนี้เกิดขึ้นบนคลัสเตอร์ mysql แต่ฉันไม่คิดว่ามันสำคัญ
ฉันต้องการกำหนดขนาดของดัชนีของฉันซึ่งเป็นดัชนีคีย์หลัก สิ่งนี้เกิดขึ้นบนคลัสเตอร์ mysql แต่ฉันไม่คิดว่ามันสำคัญ
คำตอบ:
ฉันคิดว่านี่คือสิ่งที่คุณกำลังมองหา
show table status from [dbname]
http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
ขยายคำตอบของ Vajk Hermecz
นี่คือวิธีที่คุณจะได้รับขนาดดัชนีทั้งหมดเป็นเมกะไบต์โดยไม่ใช้ PRIMARY (ซึ่งก็คือตารางนั่นเอง) เรียงตามขนาด
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;
?
หากคุณกำลังใช้ตาราง InnoDB mysql.innodb_index_stats
คุณจะได้รับขนาดสำหรับดัชนีบุคคลจาก ว่า 'ขนาด' สถิติมีคำตอบในหน้าดังนั้นคุณต้องคูณด้วยหน้าขนาดซึ่งเป็น 16K โดยค่าเริ่มต้น
select database_name, table_name, index_name, stat_value*@@innodb_page_size
from mysql.innodb_index_stats where stat_name='size';
stat_value
จะถูกคูณด้วยขนาดหน้าแล้วดังนั้นคอลัมน์จึงให้ขนาดดัชนีเป็นไบต์
show table status from [dbname]
ในMyISAM
แต่ละบล็อกดัชนีจะ4 KB
เต็มไปfill_factor
ด้วยระเบียนดัชนีแต่ละหน้าที่key length + 4
ยาวไบต์
Fill factor
เป็นปกติ 2/3
สำหรับInnoDB
ตารางจะถูกรวมกลุ่มไว้เสมอPRIMARY KEY
ไม่มีPRIMARY KEY
ดัชนีแยกต่างหาก
นี่คือการปรับตัวจากบางส่วนข้างต้นเพื่อให้คุณได้เปอร์เซ็นต์ของดัชนีทั้งหมดสำหรับตารางที่แต่ละดัชนีใช้หวังว่าจะเป็นประโยชน์สำหรับใครบางคน
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'
ตัวอย่างผลลัพธ์
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
ขอแสดงความนับถือ Liam
การใช้ phpMyAdmin เมื่อดูโครงสร้างตารางจะมีลิงค์รายละเอียดที่ด้านล่างที่ไหนสักแห่ง เมื่อคุณคลิกมันจะแสดงขนาดทั้งหมดของดัชนีที่คุณมีบนตารางซึ่งมีการทำเครื่องหมาย Space Usage
ฉันไม่คิดว่ามันจะแสดงดัชนีแต่ละรายการให้คุณเห็น
ในบทความนี้กำหนดวิธีคำนวณขนาดดัชนี 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;