Ho scritto una soluzione per questo compito, ma non sono certo l'unica persona ad aver fatto una cosa del genere.
select concat('`', table_schema, '`.`', table_name, '`.`', column_name, '`') as `column`,
auto_increment as `current_int`, max_int, round((auto_increment/max_int)*100, 2) as `pct_max`
from (select table_schema, table_name, column_name, auto_increment,
pow(2, case data_type
when 'tinyint' then 7
when 'smallint' then 15
when 'mediumint' then 23
when 'int' then 31
when 'bigint' then 63
end+(column_type like '% unsigned'))-1 as max_int
from information_schema.tables t
join information_schema.columns c using (table_schema,table_name)
join information_schema.key_column_usage k using (table_schema,table_name,column_name)
where t.table_schema in ('test')
and k.constraint_name = 'PRIMARY'
and k.ordinal_position = 1
and t.auto_increment is not null
) as dt;
https://github.com/billkarwin/bk -tools/blob/master/pk-full-ratio.sql
Quella query è codificata per il test
schema, quindi devi modificarlo per il tuo schema.
La risposta breve alla domanda "la mia chiave primaria sta per traboccare?" è semplicemente modificarlo in BIGINT UNSIGNED
adesso. Ciò durerà sicuramente fino al crollo della civiltà.
Nello stesso repository git, ho un altro script simile per controllare tutto colonne intere, non solo chiavi primarie con incremento automatico. Ma non è tanto un problema per le altre colonne.