Примитивный пример
var connectionCache;
function createConnection(params) {
connectionCache = connectionCache || mysql.createConnection(params);
return connectionCache;
}
Т.е. mysql.createConnection делается один раз, а затем возвращается ссылка из кеш переменной. Конечно лучше написать дочерний класс от mysql, который будет это делать, туда же можно добавить логику кеширования на уровне приложения.
***
Вообще желательно тщательно ознакомиться с докой фреймворка (если вы таковой юзаете) и драйвера БД. Посмотреть не делают ли они это сами, но суть проста: соединение - это очень дорогая операция и поэтому его нужно кешировать.
Что касается самой БД, то главное, чтобы она целиком влезала в оперативу и были нормальные индексы. Если база не влезает в оперативу целиком, то будет всё тормозить и придётся делать сегментирование. Если сегментирование не закладывать сразу, то потом будет мучительно больно всё переписывать
