Saya ingin menentukan ukuran indeks saya, mereka adalah indeks kunci utama. Ini kebetulan berada di cluster mysql tetapi saya tidak berpikir itu signifikan.
Jawaban:
Saya pikir inilah yang Anda cari.
show table status from [dbname]
http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
Memperluas jawaban Vajk Hermecz.
Ini adalah bagaimana Anda bisa mendapatkan semua ukuran indeks, dalam megabyte, tanpa PRIMARY (yang merupakan tabel itu sendiri), diurutkan berdasarkan ukuran.
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;
:?
Jika Anda menggunakan tabel InnoDB, Anda bisa mendapatkan ukuran untuk masing-masing indeks dari mysql.innodb_index_stats
. Stat 'size' berisi jawabannya, dalam halaman, jadi Anda harus mengalikannya dengan ukuran halaman, yaitu 16K secara default .
select database_name, table_name, index_name, stat_value*@@innodb_page_size
from mysql.innodb_index_stats where stat_name='size';
stat_value
itu sudah dikalikan dengan ukuran halaman, sehingga kolom memberikan ukuran indeks dalam byte.
show table status from [dbname]
Berikut ini adalah adaptasi dari beberapa hal di atas juga untuk memberikan anda persentase dari total index untuk tabel yang telah digunakan masing-masing index, semoga bermanfaat bagi sobat.
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'
Contoh keluaran
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
Salam Liam
Menggunakan phpMyAdmin, saat melihat struktur tabel ada tautan Detail di suatu tempat di bawah. Setelah Anda mengkliknya, itu akan menunjukkan kepada Anda ukuran total indeks yang Anda miliki di tabel yang ditandai Penggunaan Ruang.
Saya tidak berpikir itu menunjukkan kepada Anda setiap indeks secara individual.
Pada artikel ini tentukan cara menghitung ukuran indeks. 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;