Как в бд хранить только последнии 20 записей?
После добавления новой записи получайте количество записей, если их больше 20, то удаляйте самую старую.
чтобы не снижать производительность, лучше просто выбирайте SELECTом последние 20 записей с помощью LIMIT 20, а "лишние" можете чистить другим скриптом, периодически вызываемым через CRON