В качестве альтернативы многопоточности можно рассмотреть однопоточный подход на основе событий (например, с использованием poll или epoll). Примером очень быстрой (не SQL) базы данных, которая использует именно этот подход, является redis.
У этого проекта есть два очевидных недостатка: вы когда-либо используете только одно ядро ЦП, и длительный запрос блокирует других клиентов на заметное время. Однако, если запросы достаточно быстрые, никто не заметит.
С другой стороны, однопоточное проектирование имеет преимущество автоматической сериализации запросов. Здесь нет двусмысленностей, нет необходимости в блокировке. Между чтением (или другой записью) не может быть никакой записи, это просто не может произойти.
Если у вас нет чего-то похожего на надежный работающий MVCC, встроенный в вашу базу данных (или, по крайней мере, над ним работающий), знание того, что вам не о чем беспокоиться, может стать огромным преимуществом. Одновременное чтение не является большой проблемой, но одновременное чтение и запись.
В качестве альтернативы, вы можете рассмотреть возможность выполнения ввода / вывода и проверки синтаксиса в одном потоке, а также выполнение реальных запросов в другом (запрос, переданный через очередь). Это также устранит проблемы синхронизации и, по крайней мере, предложит некоторое скрытие задержки и некоторое многоядерное.