Dizinlerimin boyutunu belirlemek istiyorum, bunlar birincil anahtar dizinler. Bu mysql kümesinde oluyor ama bunun önemli olduğunu düşünmüyorum.
Yanıtlar:
Sanırım aradığınız bu.
show table status from [dbname]
http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
Vajk Hermecz'in cevabını genişletiyoruz.
Bu, boyuta göre sıralanmış PRIMARY (tablonun kendisi) olmadan megabayt cinsinden tüm dizin boyutlarını elde etmenin yolu.
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;mi?
InnoDB tabloları kullanıyorsanız, tek tek dizinler için boyutu şuradan alabilirsiniz mysql.innodb_index_stats. "Boyut" istatistiği, cevabı sayfalar halinde içerir, bu nedenle bunu varsayılan olarak 16K olan sayfa boyutuyla çarpmanız gerekir .
select database_name, table_name, index_name, stat_value*@@innodb_page_size
from mysql.innodb_index_stats where stat_name='size';
stat_valuezaten sayfa boyutuyla çarpılır, bu nedenle sütun, bayt cinsinden dizin boyutunu verir.
show table status from [dbname]
İşte size her bir dizinin kullandığı tablonun toplam endeks yüzdesini vermek için yukarıdakilerden bazılarından bir uyarlama, umarım bu birileri için yararlı olur
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'
Örnek çıktı
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
Saygılarımızla Liam
PhpMyAdmin'i kullanarak, tablo yapısını görüntülerken, altta bir yerde Ayrıntılar bağlantısı vardır. Üzerine tıkladığınızda size Alan Kullanımı olarak işaretlenmiş olan tabloda sahip olduğunuz dizinlerin toplam boyutunu gösterecektir.
Yine de size her dizini ayrı ayrı gösterdiğini sanmıyorum.
Bu makalede, dizin boyutunun nasıl hesaplanacağını belirleyin. 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;