Mysql 性能优化 小结

 

1.数据库优化的途径

n  表的设计合理化(符合3NF

n  添加适当索引

n  分表技术(水平分割、垂直分割)

n  读写分离

n  存储过程(好处:免编译)

n  mysql配置优化(配置最大并发数,一般网站调整到1000左右)

n  MySQL服务器硬件升级

n  定时清除不需要的数据,定时进行碎片整理(尤其是MyISAM,指令:optimize table table_name

2.索引

2.1慢查询

1show status like ‘long_query_time’显示MySQL数据库定义的慢查询时间;

2set long_query_time = 1,设置慢查询的时间为1秒;

3)显示慢查询语句

在日志中记录慢查询语句:

mysqld –safe-mode –slow-query-log(日志文件默认放在my.inidatadir路径下)

2.2索引类别

主要包括四种索引:主键索引、唯一索引、全文索引、普通索引;

n  主键索引:primary key,一般不包含业务逻辑;

n  唯一索引,unique key,可以包含多个null,但不能同时包含多个空字符串;

n  全文索引,FullText,目前只支持英文,如果支持中文的话需要用到sphinx技术。对一些常用词和字符,不会创建全文索引。

2.3索引注意事项

1)只有满足以下条件的字段,才应该创建索引:

a.肯定在where条件中经常出现;

b.唯一性强;

c.变化不频繁。(创建索引可以提高SELECT语句的效率,但是DML语句的效率却降低了)。

2)以下的表将不使用索引:

a.查询条件中有or,当WHERE中的字段都是索引时,才使用索引;

b.对于多列索引,不是使用的第一部分,则不会使用索引;

 

*  建立索引可以显著提高SELECT语句的效率

3.sql语句优化

1)对于Innodb,将要插入的语句按Key排列,set unique_checks = 0,set autocommit=0;

2)在使用group by分组查询时,默认分组后,还会排序,可能会降低速度,例如:

explain select * from word_simple_information group by word_bank_id,显示:

    

但若explain select * from word_simple_information group by word_bank_id order by null,则:

    

3)有些情况下,可以使用join来代替WHERE中的条件,因为使用joinMySQL不需在内存中创建临时表

4.如何选择MySQL的存储引擎

MySQL中常用到的两种存储引擎是MyISAMInnoDB,他们各具有以下优势:

1)  事务安全(InnoDB);

2)  查询和添加速度(MyISAM);

3)  支持全文索引(MyISAM);

4)  锁机制(MyISAM表锁,InnoDB行锁);

5)  外键(InnoDB)。

*  如果你的存储引擎是MyISAM,一定要记得定期清理碎片

5、备份

5.1 增量备份

MySQL数据库会议二进制的形式,自动把用户对MySQL数据库的操作,记录到文件,当用户希望恢复的时候可以使用备份文件,进行恢复。

增量备份会记录DML语句,记录的内容包括操作语句本身、操作时间、操作位置。

u  步骤:

1)  MySQL服务停止后,在my.ini文件中的mysqld部分加入语句:log-bin=”f:/binlog/mylog”,这里的binlog文件夹必须存在否则MySQL不能重新启动;

2)  启动MySQL

u  查看备份文件:

MySQL视图下输入一下命令:show binlog events \G,会显示所有的备份事件信息,例如

    

u  文件恢复

1)  按位置恢复

cmd中输入以下命令,例如:mysqlbinlog –stop-position=”2088” f:\binlog\mylog.000001 mysql –u root –p

2)  按时间恢复

cmd中输入以下命令,例如:mysqlbinlog –stop-datetime=”2088” f:\binlog\mylog.000001 mysql –u root –p

5.2 全备份

可以在win7下添加任务,定时全备份。指令如下:

cmd中输入以下命令:mysqldump –u root –p881227 temp word > f:\word.temp

6、一般网站或服务用到的MySQL优化技术

    合理设计表格、添加适当索引、水平分割在一般网站中经常用到。

你可能感兴趣的:(mysql,性能优化)