—高级软件人才实作培训专家!
为大型网站提速
--mysql优化
讲师:韩顺平
email:hanshunping@tsinghua.org.cn
qq: 2403931377
—高级软件人才实作培训专家!
数据库优化工作
主讲:韩顺平
对于一个以数据为中心的应用,数据库的好坏直接影响到程序
的性能,因此数据库性能至关重要。一般来说,要保证数据库
的效率,要做好以下四个方面的工作:
① 数据库设计
② sql语句优化
③ 数据库参数配置
④ 恰当的硬件资源和操作系统
这个顺序也表现了这四个工作对性能影响的大小
—高级软件人才实作培训专家!
数据库表设计
主讲:韩顺平
通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,
为了更好地应用三个范式,就必须通俗地理解三个范式(通俗地理解
是够用的理解,并不是最科学最准确的理解):
第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可
再分解;(只要是关系型数据库都满足1NF)
第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实
体的惟一性;
第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段
派生出来,它要求字段没有冗余。 没有冗余的数据库设计可以做到。
但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行
效率,就必须降低范式标准,适当保留冗余数据。具体做法是: 在
概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理
数据模型设计时考虑。降低范式就是增加字段,允许冗余。
—高级软件人才实作培训专家!
数据库设计
主讲:韩顺平
举例说明什么事适度冗余,或者说有理由的冗余!
—高级软件人才实作培训专家!
数据库设计
主讲:韩顺平
l 给学生说一个相册浏览次数的设计案例
—高级软件人才实作培训专家!
SQL语句优化
主讲:韩顺平
n SQL优化的一般步骤
① 通过show status命令了解各种SQL的执行频率。
② 定位执行效率较低的SQL语句-(重点select)
③ 通过explain分析低效率的SQL语句的执行情况
④ 确定问题并采取相应的优化措施
—高级软件人才实作培训专家!
主讲:韩顺平
SQL语句优化-show参数
l MySQL客户端连接成功后,通过使用show [session|global] status
命令可以提供服务器状态信息。其中的session来表示当前的连接
的统计结果,global来表示自数据库上次启动至今的统计结果。默
认是session级别的。
下面的例子:
show status like ‘Com_%’;
其中Com_XXX表示XXX语句所执行的次数。
重点注意:Com_select,Com_insert,Com_update,Com_delete通
过这几个参数,可以容易地了解到当前数据库的应用是以插入更
新为主还是以查询操作为主,以及各类的SQL大致的执行比例是
多少。
l 还有几个常用的参数便于用户了解数据库的基本情况。
Connections:试图连接MySQL服务器的次数
Uptime:服务器工作的时间(单位秒)
Slow_queries:慢查询的次数 (默认是10)
—高级软件人才实作培训专家!
SQL语句优化-定位慢查询
l 在默认情况下mysql不记录慢查询日志,需要在启动的时候指定
主讲:韩顺平
bin\mysqld.exe - -slow-query-log
l 通过慢查询日志定位执行效率较低的SQL语句。慢查询日志记录
了所有执行时间超过long_query_time所设置的SQL语句。
show variables like ‘long_query_time’;
set long_query_time=2;
l 测试语句
select * from emp e,dept d where e.empno=123451 and
e.deptno=d.deptno;
查看慢查询日志:默认为数据目录data中的host-name-slow.log。
低版本的mysql需要通过在开启mysql时使用- -log-slow-
queries[=file_name]来配置