我们正在尝试在我们的Spring Java应用程序中使用MYSQL的锁定函数Get_Lock和Release_Lock。我们正在使用的代码是在一个过程中分别定义的,它们都简单地从我们的java代码中调用。proc中的查询如下。
我们一直在监视这些函数的执行时间,发现有时执行需要一毫秒,而在其他时候,则需要大约400到600 ms。我尝试了以下方法,但没有太大区别: 1.使用“ Do”代替这些功能的选择。 2.使用密钥的int数据类型,我们将其用作锁定字符串。 3.减少锁定字符串的长度。
我正在使用0超时以避免连接被锁定。
有人可以建议我一种优化此方法的方法吗?有没有一种优化innodb缓冲池或与这些配置相关的方法的方法。 请让我知道我是否还需要其他输入。
请在下面找到一些proc代码和统计信息,以供参考。
当前的Mysql代码:
过程:
获取名称锁定:
-使用选择
Select get_lock(Name,0) into c_Name_flag;
-使用
Do get_lock(Name,0) ;
过程:
release_Name_lock:
-使用选择
Select release_lock(Name) into c_Name_flag;
-使用
Do release_lock(Name);
请求速率:(大约)10个请求/秒。 Mysql版本:5.7.19-log