性能优化之mysql调优

时间 : 14-10-31 栏目 : 性能优化 作者 : 老薛 评论 : 0 点击 : 1,282 次

mysql优化

1.硬件优化
64为硬件,cpu提供更好性能,单个文件磁盘容量大了。

硬盘--sas  15000rpm   raid10(6块),slave库可做raid0(4块)  一般主库raid10或raid5    一定要保证主库,丛库用来读那,所以raid0提高性能
补充:hdparm -m16 -d1启用同时启动多个扇区和dma功能,提高5--50%响应时间。
mount挂载磁盘(mount):async(默认)和noatime对于某些特定应用,可以对某些特定表适用内存磁盘。但通常不需要。减少跟磁盘交换,但是问题是有可能丢失数据。
如果数据库有备用电源ups那么就好点,如果没有那么一重启那么就丢失数据了。

cpu---高主频,高缓存,高并发处理能力

内存--大内存,大内存为宽,16G以上的。不要为公司省钱这个是不行的,要大于16G。

网络---千兆网卡,在局域网内提供服务,不开启防火墙等

raid10  做法:把两个先做成:raid1 然后再用两块做成raid1然后做成raid0

dell服务器上启动了:vd mgmt --》raid level的选项里边选上就行了。不用上边的那种操作。

2.操作系统级别优化:
适用64位的系统,以便支持更大内存等系统资源
不配交换区(swap),如果内存不足了,增加内存。
服务调优,禁止不必要启动的服务,留更更多的资源给msql
增加系统和mysql服务器的打开文件数量(即文件描述符)及进程和线程数量。
#=============================================
10:ulimit 文件描述符

[root@lyzhang ~]# ulimit -n
1024                         #可以打开最大文件描述符的数量。

【更改服务器的文件描述符】
vim /etc/security/limits.conf #这个是主配置文件
末尾加上 *               -       nofile          65535

或者 echo "*               -       nofile          65535 ">>/etc/security/limits.conf

[root@lyzhang ~]# ulimit -n
65535

#================================================

reiserfs对于打开,读写都非常快,文件检查需要几秒钟,xfs,ext3也可以。
文件系统调优,给数据仓库一个单独的文件系统,一般效率更高,更可靠。
对于磁盘设置合适block大小,减少IO读写次数。对于有些视频可能会大到4M等还可以再大,一般都10k,如果mysql调节到8到16k。要看单给文件大小。
不要适用nfs

3.选择应用编程接口
perl
php
c
c++

4优化应用:集中解决问题
应该决定:
速度
show  processlist。查看有很多sleep。不是有问题,是建立的连接池,提高性能的。
连接池开多少,要看访问量有多大。是mysql的管理的。
但是程序里边也有可以管理的,可以关闭数据的链接。

缓存应用中的数据以减少sql服务器的负载。

select * from table不要用*会浪费资源。
插入数据批量插入数据,不要一条一条的。要集中批量的。insert into table valuse('sd3f'),('sdsdf'),('er');

优化mysqld     tuning-primer.sh脚本可以查看出mysql内存使用参数情况,就是基于show status调优的。
挑选编译器和编译选项(尤其unix一般不用)
多用explain select ,show variables,show status(查看当前sessin信息)。show globle status全局的信息( 命中率,索引,sessin,表是赢更新为主还是查询为主Com_select,Com_update比较大小)。
要是表以查询为主那就以查询上下功夫,要是更新为主那就在更新上下功夫。

维护表:
当myisam表检测:myisamchk
命令整理表,提高磁盘。
CHECK TABLE
OPTIMIZE TABLE

一般定期优化,对于大量更新的变长行非常重要。
对于myisam引擎,经常遇到问题:can't open file 'xxx_forums.MYI.(errno:145)'
处理方法:
Can't open file: 'xxx_forums.MYI'. (errno: 145)
myisam表修复命令,需要停止服务在操作:
myisamchk -f ../data/newbbs/*.MYI

查看mysql状态:
mysqladm -uroot -p"ydds" -S /data/mysql.sock --extended-status   可以查看。

优化SQL
开启慢查询日志,记录大于指定时间的慢查询

索引,所有的查询都走正确的索引,单个索引命中率低时适用联合索引。建立联合索引前缀特性的时候(a,b,c)那么会a,ab,abc都可以用索引,
那么要不常用的放在最前边。

查询时候尽量减少逻辑运算
减少事务包的大小
将多个小的查询适当合并成一个大的查询,减少每次建立和关闭查询的开销。
将某些过于复杂的查询拆解成多个查询,和上边相反

本文标签

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/performance/426.html

性能优化之mysql调优:等您坐沙发呢!

发表评论

4 + 7 = ?


博主微信号,很高兴为您提供帮助

随便看看

0