怎么减少sql的活动连接数?

怎么减少sql的活动连接数?,第1张

SQL的连接数无非就是访问数据库的次数,即请求的次数,而SQL连接数的减少或者是优化,主要是从你的代码的逻辑上来做处理的,就像一个流水线的工作一样,到最后一步才返回结果,程序中有很多的人喜欢将一个值取出来之后,然后再将这个值作为条件去查数据库,这个完全没有必要,直接在数据库中将改值作为条件再判断,然后将结果返回到页面上即可,这样连接数就达到了减少了

当执行每条SQL语句时, ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等等. 由此可见,

减少访问数据库的次数 , 就能实际上减少ORACLE的工作量.

例如,

以下有三种方法可以检索出雇员号等于0342或0291的职员.

方法1 (最低效)

SELECT

EMP_NAME , SALARY , GRADE

FROM EMP

WHERE EMP_NO = 342

SELECT EMP_NAME , SALARY , GRADE

FROM EMP

WHERE

EMP_NO = 291

方法2 (次低效)

DECLARE

CURSOR C1 (E_NO

NUMBER) IS

SELECT EMP_NAME,SALARY,GRADE

FROM EMP

WHERE

EMP_NO = E_NO

BEGIN

OPEN C1(342)

FETCH C1 INTO …,..,..

…..

OPEN C1(291)

FETCH C1 INTO …,..,..

CLOSE C1

END

方法3 (高效)

SELECT A.EMP_NAME ,

A.SALARY , A.GRADE,

B.EMP_NAME , B.SALARY , B.GRADE

FROM EMP

A,EMP B

WHERE A.EMP_NO = 342

AND B.EMP_NO = 291

第一先限制Innodb的并发处理.如果innodb_thread_concurrency = 0 可以先改成 16或是64 看机器压力,如果

非常大,先改成16让机器的压力下来,然后慢慢增达,适应自已的业务.

处理方法: set global innodb_thread_concurrency=16

第二: 对于连接数已经超过600或是更多的情况,可以考虑适当的限制一下连接数,让前端报一下错,也别让DB挂了.

DB在了,总是可以用来加载一下数据,当数据加载到了nosql里了,慢慢的DB压力也会降下来的.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10706006.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存