C ++ подключиться к mysql / mariadb очень медленно - PullRequest
0 голосов
/ 11 января 2020

Я пишу какой-нибудь c ++ https сервер, который получает соединение - делаю запрос к базе и отправляю ответ. Если я пытаюсь отправить запрос GET для индекса. html конечная точка, я получаю очень хороший результат:

enter image description here

, но если я отправлю POST и подключусь к mysql, Запросов / se c очень мало:

enter image description here

Пробую разные разъемы: mysql, mariadb ++, mariadb cpp (в пример кода) et c результат тот же.

пример кода:

nlohmann::json PostResult = {};
const char *uri = "tcp://192.168.1.130:3306/test";
const char *user = "root";
const char *passwd = "123";

MariaCpp::scoped_library_init maria_lib_init;

try {
  MariaCpp::Connection conn;
  conn.connect(MariaCpp::Uri(uri), user, passwd);

  std::auto_ptr<MariaCpp::PreparedStatement> stmt(conn.prepare("SELECT a.id, a.msg_id, a.NUMBER, a.sign FROM chiffa a WHERE a.id =1"));
  stmt->execute();

  while (stmt->fetch()) {
    PostResult["id"] = stmt->getInt(0);
    PostResult["msg_id"] = stmt->getString(1);
    PostResult["NUMBER"] = stmt->getString(2);
    PostResult["msg_id"] = stmt->getString(3);  
  }
  conn.close();
}
catch (MariaCpp::Exception &e) {
  std::cerr << e << std::endl;   
}

Может быть, кто-нибудь может помочь, как увеличить количество запросов / se c? Спасибо!

1 Ответ

0 голосов
/ 11 января 2020

200 соединений и запросов в секунду - это не , что плохо для наивной реализации, особенно когда база данных размещается за границей другой сети.

Я, конечно, не удивлен, что это в 50 раз быстрее чем что-то, что просто возвращает HTML.

Ваш сервер / приложение должно поддерживать одно соединение (или пул соединений), чтобы оно поддерживалось постоянно, и использовать это при выполнении запроса, а не создавать соединение fre sh для каждого запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...