Есть база с первичным ключём, что когда-то заполнялась по auto_increment, но сейчас стала сильно разрежённой (плотность заполнения около 20%). Есть мысли, как сделать выдачу новых ID потокобезопасной и не громоздкой?
Первый приходящий в голову вариант, залочить базу транзакцией и перебирать все ID, пока не найдём свободный — это ужасно.
Второй вариант — залочить, дёрнуть список всех ID и в цикле найти первый свободный чуть лучше, но тоже ужасен.