求助:mysql连接数多的时候,速度出奇慢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助:mysql连接数多的时候,速度出奇慢相关的知识,希望对你有一定的参考价值。

您好,很高兴为您解答。

第一先限制Innodb的并发处理.如果innodb_thread_concurrency = 0 可以先改成 16或是64 看机器压力,如果
非常大,先改成16让机器的压力下来,然后慢慢增达,适应自已的业务.
处理方法: set global innodb_thread_concurrency=16;
第二: 对于连接数已经超过600或是更多的情况,可以考虑适当的限制一下连接数,让前端报一下错,也别让DB挂了.
DB在了,总是可以用来加载一下数据,当数据加载到了nosql里了,慢慢的DB压力也会降下来的.
限制单用户连接数在500以下. 如:
set global max_user_connections=500;
(mysql随着连接数的增加性能会是下降的,这也是thread_pool出现的原因)
另外对于有的监控程序会读取information_schema下面的表的程序可以考虑关闭下面的参数
innodb_stats_on_metadata=0
set global innodb_stats_on_metadata=0;
这个参数主要防止对读取information_schema时造成大量读取磁盘进行信息统计(如果慢查询中出现关于information_schema中表时,也可以考虑禁用该参数)
处理依据:
当学校的一个食堂一分钟只能为两个打饭, 忽然来了100个时人来打饭,又没排队, 不出会现了打饭的师傅要用点时间
去选择为那个用户服务了, 人越多,场面就越乱, 难免出现用户大吼该他的场面, 最后有可能就出现不是打饭了,而时之间相互
打架了,打饭的师傅也将收到同时有90个以上的Server too busy. 如果能排一下队.最多也就50分钟能处理完了.
以前办法,应该可以让MySQLD不会挂掉.如果业务支撑受到限制,还是想办法处理一下.
参考技术A 我觉得你应该开启mysql 的慢查询,然后去分析这些sql.看看是否有优化的空间.菜鸟之见,呵呵。

oracle查询数据速度慢,已建索引的。求助

方法如下:
Oracle中建立索引,会提高查询速度: create index 索引名 on 表名(列名);
例如:
create index index_userid on tbl_detail(userid);
如何找数据库表的主键字段的名称?
SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE=\'P\' and table_name=\'AAA\'; select * from dba_cons_columns where CONSTRAINT_NAME=\'SYS_AAA\';
Oracle 在创建主键(可以不加constraint SYS_AAA),会为库表自动创建索引,
索引的列为主键列。 并且当库表某些列名或者库表名改变时候,
Oracle自动创建的索引SYS_AAA,中的索引列也会自动更新(类似于视图),并且SYS_AAA会与名字更改后的库表还是保持索引关系。 关键系统库表: desc dba_constraints desc dba_cons_columns
desc dba_indexes desc dba_ind_columns desc DBA_TAB_COLUMNS
例子1:更改库表的列名
ALTER TABLE AAA RENAME COLUMN ID TO AAA_ID; create table AAA ( ID NUMBER(8), NAME CHAR(20),
constraint SYS_AAA primary key(ID) );
//查找约束名字
select c.CONSTRAINT_NAME,c.table_name,cc.COLUMN_NAME from user_constraints c, user_cons_columns cc
where c.constraint_name=cc.constraint_name and c.table_name =\'AAA\' AND C.CONSTRAINT_TYPE=\'P\';
CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------------------------ ------------ ------------- SYS_AAA AAA ID
//查找索引
select index_name,index_type,uniqueness from user_indexes where table_name=\'AAA\'; INDEX_NAME INDEX_TYPE UNIQUENES
参考技术A 如果你的id 字符长度是一样的话
可以是试一下直接 select max(id) from 表 ,看看速度。
可以把pga改大一点追问

这样的话速度就很快,但查到的值不是需要的值

参考技术B 1、可以尝试重建索引;
2、删掉不必要的数据,减少数据量;
3、分区分表。追问

嗯,试了,查询的字段是varchar2型,这个字段全是数字,查询语句是select Max(to_number(id)) from 表;速度好慢,求解

以上是关于求助:mysql连接数多的时候,速度出奇慢的主要内容,如果未能解决你的问题,请参考以下文章

为啥带有'exists'的sql运行速度比使用MySQL的'in'慢

Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法

2014/08/23——OJ及相关站点打开速度非常慢,训练计划login直接error!

Navicat for MySQL导入数据库时特别慢,怎么样能提高速度?

mysql和access的区别是啥?

解决iis+php+mysql访问速度慢的方法