mysql优化

摘录自:http://blog.51cto.com/8651620/2082164

1.硬件优化:

1)cpu:64位,高主频,高缓存,高并行处理能力.

2)内存:大内存,高主频,尽量不要用swap.

3)硬盘:固态,高转速.

4)网卡:万兆,光口.

2.磁盘io优化:

1)做raid10

2)磁盘分区:将数据放在独立的分区上.做主从时,binlog单独放在一个分区

3.操作系统优化:

1)使用64位系统

2)使用网卡绑定

3)设置TCP连接数限制

4)优化mysql用户打开文件数限制

5)禁用不必要的服务自启动

6)可以给数据分区一个单独的文件系统,一般为xfs(红帽6需要安装支持xfs的软件xfsprogs),在挂载分区时可以考虑启用noatime.

7)最小化原则:

安装系统最小化

开启服务最小化

操作最小化

登录最小化

权限最小化

4.数据库设计与规划:

1)专机专用

2)做主从同步,负载均衡,高可用集群等

3)选择合适的数据库引擎.如myiasm适合读多写少的表,innodb适合读少写多的表.做主从时主使用innodb引擎,从使用myisam引擎

5.my.cnf内的参数优化:

总原则:赋予mysql适当的资源,一般40%给系统,60%-70%给mysql.

1)启用mysql慢查询,分析sql语句,找到影响效率的sql:

vim /etc/my.cnf

log-slow-queries=/var/lib/mysql/slow.log

log_query_time=5

2)对查询进行缓存:

vim /etc/my.cnf

query_cache_size=32m

3)强制限制mysql资源配置,例如:

vim /etc/my.cnf

max_connections=500 #限制最大连接数

wait_timeout=10 sleep #mysqld将终止等待时间(空闲时间)超过10秒的连接

max_connection_error=10 #如果一个主机在连接到服务器时有问题,并重试很多次后放弃,那么这个主机就会被锁定,直到执行:mysql> FLUSH HOSTS;

4)表高速缓存:

vim /etc/my.cnf

table_cache=23 #缓存23个表.在 2G 内存以下的机器中的值默认从 256 到 512个

5)关键字缓存:

vim /etc/my.cnf

key_buffer=512M #只跑了一个mysql服务.结合所有缓存,mysql整体使用的缓存可以是物理内存的80%

6)关闭dns反查功能:

skip-name-resolve #该选项就能禁用DNS 解析,连接速度会快很多。不过,这样的话就不能在MySQL 的授权表中使用主机名了而只能用ip 格式。

6.sql语句优化:

1)建表:

表结构合理,不要太大,类型精确.

2)索引:

建立合适的索引.

3)查询:

减少逻辑运算,精确查询(不要查询不需要的数据).

适当的将多个小查询合并为一个大的查询.

适当的将某些过于复杂的查询拆解成多个小查询,和刚才的相反.

4)事务:

减小事务包的大小.

5)存储过程:

适当的建立并优化存储过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值