Як правило, ви використовуєте цілі числа, а не вархари, оскільки вони споживають менше місця, добре розуміють схему сортування, швидко індексувати і т.д. Цілі особи - це природні типи даних процесора, а значить, продуктивність, як правило, оптимальна. Зазвичай ціле число становить 4 байти, що еквівалентно лише 4 символам у (не-унікодовому) вархарі.
Якщо ви турбувались про те, що з типом INT не вистачить місця, спробуйте BIGINT, який дає вам 8-байтові номери. Обмеження в цьому досить величезне, і ви, ймовірно, не вистачали місця на диску, перш ніж досягти цієї межі записів :-) Продуктивність BIGINT також буде дуже хорошою, тим більше, що багато серверів тепер теж 64-бітні .
Відповідь на першу частину вашого питання про те, що відбувається, коли ви закінчитеся в INT, непростий, особливо, як ви сказали, не змінюючи тип даних на BIGINT. В основному ви не можете багато чого зробити, і те, що ви можете зробити, дуже обмежене характером даних у вашій базі даних. Які записи мають ці іноземні дані? Вам все-таки потрібні всі дані в цій таблиці та відповідні записи? Якщо припустити, що ви можете заархівувати багато початкових даних (і пов'язаних з ними даних), то єдине, що я можу запропонувати, - це переміщення даних із таблиці (скажімо, перші 1 - X мільйони записів), а потім скидання ідентифікаційного насіння до 1. Є всілякі причини, хоча я б не рекомендував це - наприклад, я бачив багато бітів коду, які роблять такі речі, як перевірка максимального значення поля id, щоб побачити те, що тільки що було додано, а що не вдасться (і цього не слід робити). Також люди припускають, що запис N був створений до N + 1. Думаю, не легка відповідь.
Нарешті, я не знаю про MySQL, але SQL Server дав би помилку переповнення, якби ви досягли межі.