gpt4 book ai didi

c++ - mysql_query() 很慢

转载 作者:行者123 更新时间:2023-11-29 19:24:37 26 4
gpt4 key购买 nike

我最近想加速一个加密系统。而在这个系统中,它将使用mysql,因此它包括<mysql.h>文件。

而且我发现系统运行缓慢并不是因为加解密,而是因为处理一些sql语句。

它将在运行时使用内存数据库,并使用 <mysql.h> 中的 mysql_query() 向数据库发出一些查询。 。查询非常简单,例如:

UPDATE embedded_db.generic_prefix_staleness  SET stale = FALSE  WHERE cache_id = 2165265089

像上面的查询一样,它会花费大约28.42 ms,它太慢了,我找不到原因。 那么我该如何解决呢?我应该添加/修改一些配置还是做其他事情?

以及临时数据库信息:

void
Connect::do_connect(const std::string &server, const std::string &user,
const std::string &passwd, uint port)
{
const char *dummy_argv[] = {
"progname",
"--skip-grant-tables",
"--skip-innodb",
"--default-storage-engine=MEMORY",
"--character-set-server=utf8",
"--language=" MYSQL_BUILD_DIR "/sql/share/"
};
assert(0 == mysql_library_init(sizeof(dummy_argv)/sizeof(*dummy_argv),
const_cast<char**>(dummy_argv), 0));

conn = mysql_init(NULL);

/* Connect via TCP, and not via Unix domain sockets */
const uint proto = MYSQL_PROTOCOL_TCP;
mysql_options(conn, MYSQL_OPT_PROTOCOL, &proto);

/* Connect to real server even if linked against embedded libmysqld */
mysql_options(conn, MYSQL_OPT_USE_REMOTE_CONNECTION, 0);

{
my_bool reconnect = 1;
/* automatically reconnect */
mysql_options(conn, MYSQL_OPT_RECONNECT, &reconnect);
}

/* Connect to database */
if (!mysql_real_connect(conn, server.c_str(), user.c_str(),
passwd.c_str(), 0, port, 0,
CLIENT_MULTI_STATEMENTS)) {
LOG(warn) << "connecting to server " << server
<< " user " << user
<< " pwd " << passwd
<< " port " << port;
LOG(warn) << "mysql_real_connect: " << mysql_error(conn);
throw std::runtime_error("cannot connect");
}
}

更新1:

我注意到它使用了函数 mysql_library_init() ,在它的 makefile 中,它使用 -L$(MYBUILD)/libmysqld ,因此它使用嵌入式MySQL服务器。也许我应该编辑嵌入式 MySQL 服务器的一些配置?

最佳答案

它使用嵌入式服务器,因此我们需要在my.cnf中添加一些配置,例如:

[embedded]
innodb_flush_log_at_trx_commit = 0

关于c++ - mysql_query() 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42241058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com