DELAYED is a legacy MySQL keyword that can appear after INSERT or LOAD DATA statements. When used, the server does not write the row(s) immediately. Instead, it places them in a queue handled by a dedicated thread that performs the insert when the table is not locked by other sessions. The client receives an OK packet at once, so the calling application continues without waiting for disk I/O. Only MyISAM, ARCHIVE, and MEMORY tables ever honored DELAYED; it never worked with InnoDB. MySQL 5.6 marked the feature deprecated, and MySQL 5.7 disabled it by default. It was fully removed in MySQL 8.0. MariaDB still supports it. Because rows are written later, LAST_INSERT_ID() and ROW_COUNT() values reported to the client reflect the queued write, not the final storage result. If the server shuts down before the delayed thread flushes its queue, those rows are lost.
INSERT, LOW_PRIORITY, HIGH_PRIORITY, LOAD DATA, MyISAM storage engine
MySQL 3.22 (MyISAM engine)
It lets the client return immediately by queuing rows for background insertion, reducing perceived latency on write-heavy MyISAM tables.
Modern storage engines like InnoDB ignore DELAYED, and the feature risks data loss. MySQL deprecated it in 5.6 and removed it in 8.0 to simplify the codebase.
No. InnoDB, the default transactional engine, never supported DELAYED. Use standard INSERT with proper indexing or buffering strategies instead.
Consider batching inserts in the application, using INSERT...VALUES lists, or writing to a message queue (Kafka, RabbitMQ) that later loads data into MySQL.