Запустить локальный экземпляр MySQL для быстрых вызовов mysql_real_escape_string

В настоящее время все вызовы данных /API MySQL обрабатываются удаленным кластером БД (т.е. задержка в сети является фактором общего времени выполнения скрипта).

Чтобы сократить время выполнения в этом контексте, целесообразно ли запускать локальный экземпляр MySQL на каждом сервере приложений для обработки вызовов API mysql_real_escape_string? Кто-нибудь когда-либо делал это?

3 ответа

Решение

То, что вы думаете, вы хотите сделать, это не то, что вы хотите делать.

Вызов mysql_real_escape_string на самом деле ничего не отправляет на сервер (это можно проверить, посмотрев на tcpdump выход). Все, для чего требуется текущее соединение, - это определение используемого набора символов (и, следовательно, что может потребоваться заключить в кавычки).

Запустив mysql_real_escape_string на чем-либо, кроме вашей реальной, действующей, действительной базы данных, вы вообще не повышаете производительность и рискуете, что конфигурация соединения не будет одинаковой, открывая вам все виды потенциальных рисков.

Вы будете делать вызовы вне процесса по TCP-соединению, даже если это локальный хост. Кроме того, вы будете использовать дополнительную память для процесса mysql и усложните свой код.

Лучшим способом было бы найти функцию, которая дублирует функциональность mysql_real_escape_string без использования mysql. Вы должны убедиться, что эта функция работает точно так же, как mysql_real_escape_string, иначе вы можете открыть себя для проблем безопасности.

Я также спрашиваю, следует ли вам пересмотреть свой дизайн, если ваш сценарий выполняет так много экранирующих вызовов, что это становится значительным. Как вы обнаружили, что эти звонки являются проблемой? Вы профилировали свой код? Если вы этого не сделали, вы вполне могли бы лаять не на то дерево.

У меня никогда не было необходимости делать это, но это кажется вполне разумным.

Я был бы очень осторожен, чтобы ваши локальные версии и конфигурации mysqld соответствовали друг другу, а также реальному серверу, так как несовпадение может вызвать очень интересные проблемы.

Другие вопросы по тегам