减少访问数据库的次数 , 就能实际上减少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压力也会降下来的.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)