如何解决实时数据库应用中的表元数据锁

问题描述

我有将实时数据泵入 MysqL 数据库的 C++ 代码 C++ 代码就像:

class Child extends Component {
render() {
    const number = ["12","14","15","16","22","35","6","92","47","32","75","67"]
    return (
        <div>
            {(() => {
                const items = [];
                for (let i = 1; i <= 12; i++) {
                    items.push(<button onClick={() => this.props.onButtonClick(number[i])}>{number[i]}</button>)
                };
                return <>{items}</>;
            })()}
        </div>
    )
}
}

此时程序运行正常 但我需要在 Java 中执行另一个程序,该程序必须与订单表一起使用 在我的 Java 代码中:


const char* dropper = "DROP TABLE IF EXISTS orders";

const char* create_stmt = "CREATE TABLE `dbname`.`dummy` (`id` INT NOT NULL AUTO_INCREMENT,`example` VARCHAR(45) NOT NULL,PRIMARY KEY(`id`));";


void try2Connect()
{

    MysqL_RES* res_set;
    MysqL_ROW row;

    MysqL_init(&conn2);

    if (!MysqL_real_connect(&conn2,"ip","uname","pass","dbname",port,NULL,0))
    {
        fprintf(stderr,"Failed to connect to database: Error: %s\n",MysqL_error(&conn2));
    }
    else {
        fprintf(stderr,"Successfully connected to Database.\n");
    }
    MysqL_query(&conn2,"SET sql_SAFE_UPDATES = 0;");
    isConnected2 = true;
}

void pumping_data(){
 
 if (!isConnected2 || &conn2 == NULL) try2Connect();
 
 if (isConnected2 == true) {
  
  MysqL_query(&conn2,dropper);
  MysqL_query(&conn2,create_stmt);
  MysqL_query(&conn2,c);//c is insert statement which works perfectly fine
  MysqL_close(&conn2);
  }
}

我有一个

这样的计时器
public void getDatas(){
 try {
  isConn();
  Statement stmt = con.createStatement();
  ResultSet rs = (ResultSet) stmt.executeQuery("CALL positioning_procedure();");
 }
}

public void isConn(){
        try {
            Class.forName("com.MysqL.jdbc.Driver");
            if(con==null || con.isClosed()) {
                con = DriverManager.getConnection("...","username","pwd");
            }
        }catch (Exception e) {e.printstacktrace();}
    }


我的两个代码都运行良好

但是当我尝试在 sql 中执行我的两个程序时,出现一个错误提示等待表元数据锁定,而我在 Java 中工作的选择过程提示选择但数据不流动 我看到了一些人们说手动终止查询方法,但它必须实时工作,我尝试截断表插入表,但结果是相同的

编辑:

总结:我的源表获得了大量更新,因此当另一个查询尝试选择数据时它会挂起。当仍然有大量更新时,如何使我的选择查询工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)