軽いかどうか知らんけど、空いている変数を記録しておけば良いんじゃないの
LIFOみたいな感じで、あいている変数を蓄積するDBつくって、0から順番に入れる→1つ入れる毎にカウント用変数+1(初期値0)
取り出すときはカウント用変数を使って格納されている変数を取り出し→カウント用変数ー1