相关疑难解决方法(0)

为什么在并行执行查询时MySQL的性能会下降?

问题:为什么在并行执行时连接几乎空表的查询的MySQL性能会下降?

下面是我正面临的问题的更详细解释.我在MySQL中有两个表

CREATE TABLE first (
    num int(10) NOT NULL,
    UNIQUE KEY key_num (num)
) ENGINE=InnoDB

CREATE TABLE second (
    num int(10) NOT NULL,
    num2 int(10) NOT NULL,
    UNIQUE KEY key_num (num, num2)
) ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)

第一个包含大约一千条记录.第二个是空的或包含很少的记录.它还包含双重索引,它在某种程度上与问题有关:单个索引的问题就消失了.现在我试图并行地对这些表进行大量相同的查询.每个查询如下所示:

SELECT first.num
FROM first
LEFT JOIN second AS second_1 ON second_1.num = -1 # non-existent key
LEFT JOIN second AS second_2 ON second_2.num = -2 # non-existent key
LEFT JOIN second AS second_3 ON second_3.num = -3 # non-existent key
LEFT JOIN second …
Run Code Online (Sandbox Code Playgroud)

mysql perl performance

14
推荐指数
2
解决办法
2484
查看次数

Qt MySQL适配器拒绝随机连接:无法分配MYSQL

我正在使用QMYSQL连接到本地数据库.该应用程序运行在多个线程上.每个线程使用独立连接连接到数据库.当我尝试连接数据库时,有时Qt会抛出以下错误.有什么问题?

QMYSQL: Unable to allocate a MYSQL object
Run Code Online (Sandbox Code Playgroud)

更新

添加了用于连接的代码.此对象被移动到一个线程,该连接被命名.critical是一个发送到主窗口的信号,用于在发生严重错误(显示消息)后终止应用程序执行.log是一个发出的信号,用于将事件记录到数据库中.

void ClientWorker::connect() {
    m_database = QSqlDatabase::addDatabase("QMYSQL","wsc");
    m_database.setHostName(m_host);
    m_database.setDatabaseName(m_databaseName);
    m_database.setPort(m_port);
    m_database.setUserName(m_db_username);
    m_database.setPassword(m_db_password);
    if(!m_database.open()) {
        QString error = "Unable to connect to database. Reason:\n";
        error+= m_database.lastError().text();
        log("Unable to connect to database! ", error, "ERROR" );
        emit critical(tr("Database Error!"),error);
    } else {
        log("Connected to datbase successfully.", "", "NOTICE" );
}
Run Code Online (Sandbox Code Playgroud)

更新2

我刚刚意识到,每次从主线程建立连接时(主踏板中没有活动连接),驱动程序都无法加载.我刚刚添加了一个小的虚拟连接代码,main()它连接并立即断开连接(在任何线程连接之前).添加该代码,一切正常.我不确定为什么线程在主线程中的连接之前无法连接,但我认为它看起来像一个bug.希望这有助于某人,花了3天时间:/

c++ mysql qt qt5

11
推荐指数
1
解决办法
554
查看次数

C有一个标准的mysql连接池库吗?

我有一个使用MySQL库进行数据库访问的C应用程序.

是否有一种标准方法可以为这样的应用程序实现数据库连接池?在C类接口似乎并不支持它.

c mysql performance connection-pooling

5
推荐指数
1
解决办法
7538
查看次数

标签 统计

mysql ×3

performance ×2

c ×1

c++ ×1

connection-pooling ×1

perl ×1

qt ×1

qt5 ×1