阿里云97?阿里网盘电脑版

阿里云cpu检测进程mysql太高怎么解决

一台服务器解决了 Mysql cpu占用 100%的问题。稍整理了一下,将经验记录在这篇文章里。

朋友主机(Windows 2003+ IIS+ PHP+ MYSQL)近来 MySQL服务进程(mysqld-nt.exe) CPU占用率总为 100%高居不下。此主机有10个左右的 database,分别给十个网站调用。据朋友测试,导致 mysqld-nt.exe cpu占用奇高的是网站A,一旦在 IIS中将此网站停止服务,CPU占用就降下来了。一启用,则马上上升。

MYSQL CPU占用 100%的解决过程

今天早上仔细检查了一下。目前此网站的七日平均日 IP为2000,PageView为 3万左右。网站A用的 database目前有39个表,记录数 60.1万条,占空间 45MB。按这个数据,MySQL不可能占用这么高的资源。于是在服务器上运行命令,将 mysql当前的环境变量输出到文件 output.txt:

d:\web\mysql> mysqld.exe--help>output.txt发现 tmp_table_size的值是默认的 32M,于是修改 My.ini,将 tmp_table_size赋值到 200M:

d:\web\mysql> notepad c:\windows\my.ini

[mysqld]

tmp_table_size=200M

然后重启 MySQL服务。CPU占用有轻微下降,以前的CPU占用波形图是 100%一根直线,现在则在 97%~100%之间起伏。这表明调整 tmp_table_size参数对 MYSQL性能提升有改善作用。但问题还没有完全解决。

于是进入 mysql的 shell命令行,调用 show processlist,查看当前 mysql使用频繁的 sql语句:

mysql> show processlist;

反复调用此命令,发现网站 A的两个 SQL语句经常在 process list中出现,其语法如下:

SELECT t1.pid, t2.userid, t3.count, t1.dateFROM _mydata AS t1

LEFT JOIN _myuser AS t3 ON t1.userid=t3.useridLEFT JOIN _mydata_body AS t2 ON t1.pid=t3.pidORDER BY t1.pid

LIMIT 0,15

调用 show columns检查这三个表的结构:

mysql> show columns from _myuser;

mysql> show columns from _mydata;

mysql> show columns from _mydata_body;

终于发现了问题所在:_mydata表,只根据 pid建立了一个 primary key,但并没有为 userid建立索引。而在这个 SQL语句的第一个 LEFT JOIN ON子句中:

LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid_mydata的 userid被参与了条件比较运算。于是我为给 _mydata表根据字段 userid建立了一个索引:

mysql> ALTER TABLE `_mydata` ADD INDEX( `userid`)建立此索引之后,CPU马上降到了 80%左右。看到找到了问题所在,于是检查另一个反复出现在 show processlist中的 sql语句:

SELECT COUNT(*)

FROM _mydata AS t1, _mydata_key AS t2

WHERE t1.pid=t2.pid and t2.keywords='孔雀'

经检查 _mydata_key表的结构,发现它只为 pid建了了 primary key,没有为 keywords建立 index。_mydata_key目前有 33万条记录,在没有索引的情况下对33万条记录进行文本检索匹配,不耗费大量的 cpu时间才怪。看来就是针对这个表的检索出问题了。于是同样为 _mydata_key表根据字段 keywords加上索引:

mysql> ALTER TABLE `_mydata_key` ADD INDEX( `keywords`)建立此索引之后,CPU立刻降了下来,在 50%~70%之间震荡。

再次调用 show prosslist,网站A的sql调用就很少出现在结果列表中了。但发现此主机运行了几个 Discuz的论坛程序, Discuz论坛的好几个表也存在着这个问题。于是顺手一并解决,cpu占用再次降下来了。(2007.07.09附注:关于 discuz论坛的具体优化过程,我后来另写了一篇文章,详见:千万级记录的 Discuz!论坛导致 MySQL CPU 100%的优化笔记 )解决 MYSQL CPU占用 100%的经验总结

增加 tmp_table_size值。mysql的配置文件中,tmp_table_size的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full形式的错误,如果你做很多高级 GROUP BY查询,增加 tmp_table_size值。这是 mysql官方关于此选项的解释:

tmp_table_size

This variable determines the maximum size for a temporary table in memory. If the table becomes too large, a MYISAM table is created on disk. Try to avoid temporary tables by optimizing the queries where possible, but where this is not possible, try to ensure temporary tables are always stored in memory. Watching the processlist for queries with temporary tables that take too long to resolve can give you an early warning that tmp_table_size needs to be upped. Be aware that memory is also allocated per-thread. An example where upping this worked for more was a server where I upped this from 32MB(the default) to 64MB with immediate effect. The quicker resolution of queries resulted in less threads being active at any one time, with all-round benefits for the server, and available memory.

对 WHERE, JOIN, MAX(), MIN(), ORDER BY等子句中的条件判断中用到的字段,应该根据其建立索引 INDEX。索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000行,这比顺序读取至少快100倍。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。根据 mysql的开发文档:

索引 index用于:

快速找出匹配一个WHERE子句的行

当执行联结(JOIN)时,从其他表检索行。

对特定的索引列找出MAX()或MIN()值

如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。

在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。假定你发出下列SELECT语句:

mysql> SELECT* FROM tbl_name WHERE col1=val1 AND col2=val2;如果一个多列索引存在于col1和col2上,适当的行可以直接被取出。如果分开的单行列索引存在于col1和col2上,优化器试图通过决定哪个索引将找到更少的行并来找出更具限制性的索引并且使用该索引取行。

开发人员做 SQL数据表设计的时候,一定要通盘考虑清楚。

阿里巴巴集团名称的由来是怎么取的.

阿里巴巴出自一千零一夜主人公阿里巴巴于四十大盗的故事,结局阿里巴巴战胜四十大盗满载着金银财富归来。意味着阿里巴巴勇往直前,攻打财富门的形象代表。

有一次在美国一家餐厅吃饭时,他突发奇想,找来了餐厅服务员,问他是否知道阿里巴巴这个名字。服务员回答说知道,并且还跟马云说阿里巴巴打开宝藏的咒语是“芝麻开门”。之后马云又在各地反复地询问他人,经过这个测试,马云发现阿里巴巴的故事被全世界的人所熟知,并且不论语种,发音也近乎一致。“从我外婆到我儿子,他们都读阿里巴巴。”就这样,一锤定音,马云将“阿里巴巴”确定为公司的名字。

拓展资料:

阿里巴巴网络技术有限公司是以曾担任英语教师的马云为首的18人于1999年在浙江杭州创立。阿里巴巴集团经营多项业务,另外也从关联公司的业务和服务中取得经营商业生态系统上的支援。

业务和关联公司的业务包括:淘宝网、天猫、聚划算、全球速卖通、阿里巴巴国际交易市场、1688、阿里妈妈、阿里云、蚂蚁金服、菜鸟网络等。

阿里系所有app有哪些

淘宝、1688、天猫、支付宝、闲鱼、聚划算、一淘、蚂蚁金服、饿了么、口碑网、阿里云、中国雅虎、中国万网、优酷、土豆网、书旗小说、高德地图、飞猪、UC浏览器、菜鸟网络、墨迹天气等。

淘宝网是亚太地区较大的网络零售、商圈,由阿里巴巴集团在2003年5月创立。淘宝网是中国深受欢迎的网购零售平台,拥有近5亿的注册用户数,每天有超过6000万的固定访客,同时每天的在线商品数已经超过了8亿件,平均每分钟售出4.8万件商品。

简介

“天猫”(英文:Tmall,亦称淘宝商城、天猫商城)原名淘宝商城,是一个综合性购物网站。2012年1月11日上午,淘宝商城正式宣布更名为“天猫”。取这个名字一方面是因为“天猫”跟tmall发音接近,更重要的原因是随着B2C的发展。

全球速卖通(AliExpress)是阿里巴巴帮助中小企业接触终端批发零售商,小批量多批次快速销售,拓展利润空间而全力打造的融合订单、支付、物流于一体的外贸在线交易平台。

阅读剩余
THE END