码迷,mamicode.com
首页 > 数据库 > 详细

Video-No.03 韩顺平_MySQL优化

时间:2015-10-07 12:17:53      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:

1、MySQL数据库优化技术

    1)表的设计合理化(符合3NF)

    2)添加适当的索引(index):普通索引、主键索引、唯一索引、全文索引、复合索引

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

    4)读写分离(读:select,写:insert、update、delete)

    5)存储过程、触发器(模块化编程,提前编译sql语句,提交执行速度)

    6)对mysql配置文件进行优化(最大并发数、缓存大小)

    7)mysql服务器升级

    8)定时清理不需要的数据,定时进行碎片整理(MyISAM)

2、3NF(范式)

    1)1NF:列具有原子性,不可分割,数据库是关系型数据库就符合1NF

    2)2NF:表的行记录是唯一的,符合2NF,设置主键

    3)3NF:表中没有冗余数据

3、反3NF:没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。

4、Sql语句优化

1)定位慢查询

    a、获取mysql的一些运行状态(如:当前连接数、select次数、update次数、insert次数、delete次数等

        show [global|session] status like ‘‘ 查询相关运行状态

        netstat –anb 查询端口

SHOW STATUS; #显示参数信息列表
SHOW STATUS LIKE ‘%quer%‘; #模糊匹配

SHOW STATUS LIKE ‘uptime‘; #显示MySQL运行时间
SHOW GLOBAL STATUS LIKE ‘com_select‘; #显示select次数
SHOW GLOBAL STATUS LIKE ‘com_update‘; #显示update次数
SHOW GLOBAL STATUS LIKE ‘com_insert‘; #显示insert次数
SHOW GLOBAL STATUS LIKE ‘com_delete‘; #显示delete次数
SHOW STATUS LIKE ‘connections‘; #显示当前并发连接数
SHOW GLOBAL STATUS LIKE ‘slow_queries‘; #查询慢查询次数

    b、开启慢查询日志:

SHOW VARIABLES LIKE ‘long_query_time‘; #慢查询记录最短时间
SET long_query_time = 1; #设置慢查询时间

SET GLOBAL slow_query_log = ON; #开启慢查询日志
SHOW VARIABLES LIKE ‘slow_query_log‘; #显示慢查询日志状态
SHOW VARIABLES LIKE ‘slow_query_log_file‘; #显示慢查询日志文件路径

    日志记录:

# Time: 151007 12:01:37
# User@Host: root[root] @ localhost [127.0.0.1]  Id:     5
# Query_time: 15.434343  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 13000000
use hsp_mysql;
SET timestamp=1444190497;
select * from emp where empno = 12321312312
 LIMIT 0, 1000;


Video-No.03 韩顺平_MySQL优化

标签:

原文地址:http://my.oschina.net/shma1664/blog/513890

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!