I database relazionali dovrebbero fare esattamente quel tipo di lavoro, i file di log non lo sono. Ovviamente possiamo sostenere che ci sono soluzioni migliori / più veloci, ma questa non era una domanda a portata di mano, quindi salterò questa cosa.
Se sai come normalizzare i dati e amp; utilizzare gli indici non dovrebbe esserci alcun problema ma suggerirei di archiviare le chat più vecchie in un insieme separato di tabelle (ad esempio ogni notte sposta tutte le chat più vecchie di 2 giorni) in modo che gli indici e il set di dati live siano il più piccoli possibile e anche il set di dati eventualmente potrebbe essere tenuto in memoria (MySQL funziona alla grande quando può conservare tutti i dati necessari in memoria).
D'altra parte avere 20 richieste al secondo potrebbe essere un problema sul tuo hosting condiviso dal momento che questi tipi di hosting non sono pensati per quel traffico (solo i dati di polling per 1 chatroom con 20 utenti genererebbero 1,7 milioni di richieste al giorno) . Quel numero di richieste può creare problemi indipendentemente dall'origine dati (mysql, file di registro, memcached, mongo).