mysql调优笔记怎么调 mysql怎么优化( 二 )


更改innodb_log_file_size的难易程度和能设置多大取决于你现在使用的MySQL版本 。特别地 , 如果你使用的是5.6之前的版本,你不能仅仅的更改变量,期望服务器会自动重启 。
好了,下面是步骤:
1、在my.cnf更改innodb_log_file_size
2、停止mysql服务器
3、删除旧的日志,通过执行命令rm -f /var/lib/mysql/ib_logfile*
4、启动mysql服务器 – 应该需要比之前长点的时间,因为需要创建新的事务日志 。最后,需要注意的是,有些mysql版本(比如5.6.2)限制了重做日志大小为4GB 。所以在你设置innodb_log_file_size为2G或者更多时,请先检查一下MySQL的版本这方面的限制 。
MySQL CPU占用过高怎么办通过以前对mysql的操作经验,先将mysql的配置问题排除了 , 查看msyql是否运行正常,通过查看mysql data目录里面的*.err文件(将扩展名改为.txt)记事本查看即可 。如果过大不建议用记事本了,容易死掉,可以用editplus等工具 。
简单的分为下面几个步骤来解决这个问题:
1、mysql运行正常,也有可能是同步设置问题导致
2、如果mysql运行正常,那就是php的一些sql语句导致问题发现 , 用root用户进入mysql管理
mysql -u root -p
输入密码
mysql:show processlist 语句 , 查找负荷最重的 SQL 语句 , 优化该SQL , 比如适当建立某字段的索引 。
通过这个命令我看到原来是有人恶意刷搜索,因为dedecms搜索后面调用搜索最高的词,导致很多人用工具刷这个,而且是定时有间隔的,所以将这个php程序改名跳转都方法解决了 。
当然如果你的确实是sql语句用了大量的group by等语句,union联合查询等肯定会将mysql的占用率提高 。所以就需要优化sql语句,网站尽量生成静态的 , 一般4W ip的静态网站,mysql占用率几乎为0的 。所以这对于程序员的经验是个考虑 。尽量提高mysql性能 (MySQL 性能优化的最佳20多条经验分享)
下面是豆芽收集的文章,大家都可以参考下
MYSQL CPU 占用 100% 的现象描述
早上帮朋友一台服务器解决了 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.date

推荐阅读