本人,系统管理员一名,对程序开发完全不懂,多数据库了解非常有限。受人所托,查看朋友的游戏服务器,WINDOW2003+MYSQL+apache架构,首先查看系统进程,比较粗略的查看是MYSQL进程占用CPU将近100%,对比业务高峰时间,开启MYSQL慢查询日志,发现部分语句在高峰时间被慢查询记录次数较多,手工复制该语句在MYSQL中运行,发现CPU瞬间增高,和开发人员沟通,了解该语句的功能,并进行了修改,优化后单独运行该语句Cpu无明显增高,部署运行后发现问题依旧。在高峰期依旧CPU占用很高。继续跟踪满查询日志,又找到了几条语句。依旧做了优化,单独运行优化后的语句效果比较明显。但整个程序部署并不明显,最后期开发人员想到。(这部分我并不是太理解)程序是将之前的很多语句打包成了一个功能模块。默写运行会出发这个功能模块而去运行之前所有 的语句,导致单独优化了几条语句后在整体运行效果中并没有得到很大改善,后期由开发重新去分解程序包了。
1)CPU数量是多少?如果只有2颗CPU,占100%也不奇怪,因为很多sql一查询就会有这个效果。做一个sql查询,数据库不会刻意约束CPU的占有量。
另外,这个sql是交易类的短sql?如果是,那就的确需要优化一下。
2)你的意思是说,单独优化没有用,因为那个默认模块里面的sql没有被优化?然后把模块拆分了
如果是这样,可能是模块里面的sql,都定死了执行计划,所以改不了。后面不用这个模块了,单独优化后就其作用了。
收起