mysql的几点优化

对mysql优化时一个综合性的技术,主要包括

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

b: 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引]

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

d: 读写[写: update/delete/add]分离

e: 存储过程 [模块化编程,可以提高速度]

f: 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ]

g: mysql服务器硬件升级

h: 定时的去清除不需要的数据,定时进行碎片整理(MyISAM) 

 

问题是: 如何从一个大项目中,迅速的定位执行速度慢的语句. (定位慢查询)

1、首先我们了解mysql数据库的一些运行状态如何查询(比如想知道当前mysql运行的时间/一共执行了多少次select/update/delete.. / 当前连接)

使用 show status 命令 

 默认情况下,mysql认为10秒才是一个慢查询.

 2-1、修改mysql的慢查询.

show variables like ‘long_query_time’ ; //可以显示当前慢查询时间

set long_query_time=1 ;//可以修改慢查询时间

2-2、构建大表->大表中记录有要求, 记录是不同才有用,否则测试效果和真实的相差大.

2-3、这时我们如果出现一条语句执行时间超过1秒中,就会观察到.

2-4、如果把慢查询的sql记录到我们的一个日志中

在默认情况下,我们的mysql不会记录慢查询,需要在启动mysql时候,指定记录慢查询才可以

bin\mysqld.exe - -safe-mode - -slow-query-log [mysql5.5 可以在my.ini指定]

bin\mysqld.exe –log-slow-queries=d:/abc.log [低版本mysql5.0可以在my.ini指定]

先关闭mysql,再启动, 如果启用了慢查询日志,默认把这个文件放在my.ini 文件中记录的位置

#Path to the database root

datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/"

2-5、 测试,可以看到在日志中就记录下我们的mysql慢sql语句.

优化问题

通过 explain 语句可以分析,mysql如何执行你的sql语句

 

 

 

 

 

 

 

 

 

 

posted @ 2018-08-25 16:53  Typical_me  阅读(107)  评论(0编辑  收藏  举报