n 表的设计合理化(符合3NF)
n 添加适当索引
n 分表技术(水平分割、垂直分割)
n 读写分离
n 存储过程(好处:免编译)
n 对mysql配置优化(配置最大并发数,一般网站调整到1000左右)
n MySQL服务器硬件升级
n 定时清除不需要的数据,定时进行碎片整理(尤其是MyISAM,指令:optimize table table_name)
1)show status like ‘long_query_time’显示MySQL数据库定义的慢查询时间;
2)set long_query_time = 1,设置慢查询的时间为1秒;
3)显示慢查询语句
在日志中记录慢查询语句:
mysqld –safe-mode –slow-query-log(日志文件默认放在my.ini中datadir路径下)
主要包括四种索引:主键索引、唯一索引、全文索引、普通索引;
n 主键索引:primary key,一般不包含业务逻辑;
n 唯一索引,unique key,可以包含多个null,但不能同时包含多个空字符串;
n 全文索引,FullText,目前只支持英文,如果支持中文的话需要用到sphinx技术。对一些常用词和字符,不会创建全文索引。
1)只有满足以下条件的字段,才应该创建索引:
a.肯定在where条件中经常出现;
b.唯一性强;
c.变化不频繁。(创建索引可以提高SELECT语句的效率,但是DML语句的效率却降低了)。
2)以下的表将不使用索引:
a.查询条件中有or,当WHERE中的字段都是索引时,才使用索引;
b.对于多列索引,不是使用的第一部分,则不会使用索引;
建立索引可以显著提高SELECT语句的效率
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中的条件,因为使用join,MySQL不需在内存中创建临时表
MySQL中常用到的两种存储引擎是MyISAM和InnoDB,他们各具有以下优势:
1) 事务安全(InnoDB);
2) 查询和添加速度(MyISAM);
3) 支持全文索引(MyISAM);
4) 锁机制(MyISAM表锁,InnoDB行锁);
5) 外键(InnoDB)。
如果你的存储引擎是MyISAM,一定要记得定期清理碎片
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
可以在win7下添加任务,定时全备份。指令如下:
在cmd中输入以下命令:mysqldump –u root –p881227 temp word > f:\word.temp
合理设计表格、添加适当索引、水平分割在一般网站中经常用到。