欢迎来到天天文库
浏览记录
ID:34724654
大小:65.57 KB
页数:11页
时间:2019-03-10
《mysql语句和表的优化》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、MYSQL语句和表的优化--优化SQL的一般步骤--一、通过showstatus和应用特点了解各种SQL的执行频率/*通过SHOWSTATUS可以提供服务器状态信息,也可以使用mysqladminextended-status命令获得。SHOWSTATUS可以根据需要显示session级别的统计结果和global级别的统计结果。以下几个参数对Myisam和Innodb存储引擎都计数:1.Com_select执行select操作的次数,一次查询只累加1;2.Com_insert执行insert操作的次数,对于批量插入的insert操作,只累加一次;3.Com_u
2、pdate执行update操作的次数;4.Com_delete 执行delete操作的次数;*/SHOWSTATUSWHEREVariable_name='Com_select';/*以下几个参数是针对Innodb存储引擎计数的,累加的算法也略有不同:1.Innodb_rows_readselect查询返回的行数;2.Innodb_rows_inserted执行Insert操作插入的行数;3.Innodb_rows_updated执行update操作更新的行数;4.Innodb_rows_deleted执行delete操作删除的行数;通过以上几个参数,可以很容
3、易的了解当前数据库的应用是以插入更新为主还是以查询操作为主,以及各种类型的SQL大致的执行比例是多少。对于更新操作的计数,是对执行次数的计数,不论提交还是回滚都会累加。对于事务型的应用,通过Com_commit和Com_rollback可以了解事务提交和回滚的情况,对于回滚操作非常频繁的数据库,可能意味着应用编写存在问题。此外,以下几个参数便于我们了解数据库的基本情况:1.Connections试图连接Mysql服务器的次数2.Uptime服务器工作时间3.Slow_queries慢查询的次数二、定位执行效率较低的SQL语句可以通过以下两种方式定位执行效率较低
4、的SQL语句:1.可以通过慢查询日志定位那些执行效率较低的sql语句,用--log-slow-queries[=file_name]选项启动时,mysqld写一个包含所有执行时间超过long_query_time秒的SQL语句的日志文件。可以链接到管理维护中的相关章节。2.慢查询日志在查询结束以后才纪录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用showprocesslist命令查看当前MySQL在进行的线程,包括线程的状态,是否锁表等等,可以实时的查看SQL执行情况,同时对一些锁表操作进行优化。*/SHOWPROCESSLIS
5、T;/*三、通过EXPLAIN分析低效SQL的执行计划通过以上步骤查询到效率低的SQL后,我们可以通过explain或者desc获取MySQL如何执行SELECT语句的信息,包括select语句执行过程表如何连接和连接的次序。explain可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的SELECT。*/EXPLAINSELECT*FROMmessageaLEFTJOINmytablebONa.id=b.idWHEREa.id=1;/*返回结果+--------+---------------+-------+-------+-------
6、-------+----------------+-----------+-------+--------+--------------+
7、id
8、select_type
9、table
10、type
11、possible_keys
12、key
13、key_len
14、ref
15、rows
16、Extra
17、+--------+---------------+-------+-------+--------------+----------------+-----------+-------+--------+--------------+
18、1
19、SIMPLE
20、a
21、const
22、PRIMARY
23、PR
24、IMARY
25、4
26、const
27、1
28、
29、
30、1
31、SIMPLE
32、b
33、ALL
34、NULL
35、NULL
36、NULL
37、
38、9999
39、
40、+--------+---------------+-------+-------+--------------+----------------+-----------+-------+--------+--------------+select_type:select类型table:输出结果集的表type:表示表的连接类型①当表中仅有一行是type的值为system是最佳的连接类型;②当select操作中使用索引进行表连接时type的值为ref;③
41、当select的表连接没有使用索引时,
此文档下载收益归作者所有