How can I reduce the memory usage of a tiny MEMORY table in MySQL?
Although data_length and index_length aren't exact multiples of read_buffer_size, they are based on it.  So adjusting read_buffer_size in my.cnf is the solution (thanks @Wilson Hauck), as Shane Bester pointed out on the MySQL forums:


  memory tables grow by 'read_buffer_size' bytes when they need extending (https://forums.mysql.com/read.php?92,405702,417606#msg-417606)


Based on performance tests by Peter Zaitsev in 2007 (https://www.percona.com/blog/2007/09/17/mysql-what-read_buffer_size-value-is-optimal/), the default 128K setting is generally best, and using smaller values brings very little penalty.