Escribí una solución para esta tarea, pero no soy la única persona que ha hecho algo como esto.
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 -herramientas/blob/master/pk-full-ratio.sql
Esa consulta está codificada para la test
esquema, por lo que debe editarlo para su propio esquema.
La respuesta corta a la pregunta "¿se va a desbordar mi clave principal?" es simplemente modificarlo a BIGINT UNSIGNED
ahora. Eso seguramente durará hasta el colapso de la civilización.
En el mismo repositorio de git, tengo otro script similar para verificar todos columnas enteras, no solo claves primarias de incremento automático. Pero no es una gran preocupación para otras columnas.