如何高效快速地优化MySQL、SQL语句(附源码)(4)
根据固定位置读一行的请求数.如果执行大量查询并需要对结果进行排序该值较高.则可能使用了大量需要MySQL扫描整个表的查询或连接没有正确使用键.
在数据文件中读下一行的请求数.如果正进行大量的表扫描,该值较高.通常说明表索引不正确或写入的查询没有利用索引. 6、SQL性能分析器(Query Profiler)MySQL的Query Profiler是一个使用非常方便的Query诊断分析工具,通过该工具可以获取一条Query在整个执行过程中多种资源的消耗情况,如CPU、IO、IPC、SWAP等,以及发生的PAGE FAULTS、CONTEXT SWITCHE等,同时还能得到该Query执行过程中的MySQL所调用的各个函数在源文件中的位置.
mysql> set profiling=1; 默认情况下profiling的值为0表示MySQL SQL Profiler处于OFF状态,开启SQL性能分析器后profiling的值为1.
使用”show profile”命令获取当前系统中保存的多个Query的profile的概要信息. +———-+————+———————–+ | Query_ID | Duration?? | Query?????????????????? | +———-+————+———————–+ |??????? 1 | 0.00039300 | select count(*) from t1 | +———-+————+———————–+
在获取概要信息之后,就可以根据概要信息的Query_ID来获取某个Query的执行过程中详细的profile信息. mysql> show profile cpu,block io for query 1; 二、工具说明前面谈到了多种手段,对于SQL语句的调优都有所帮助.通过下面这个小工具,可以自动调用命令将上面这些内容一次性推给DBA,大大加速优化的过程. 1、准备条件
2、调用方法-p? 指定配置文件名称 -s? 指定SQL语句 3、配置文件共分两节信息,分别是[database]描述数据库连接信息,[option]运行配置信息. db_user???? = testuser db_pwd????? = testpwd db_name???? = test sql_plan??? = ON //是否显示执行计划 obj_stat??? = ON //是否显示相关对象(表、索引)统计信息 ses_status? = ON //是否显示运行前后状态信息(激活后会真实执行SQL) (编辑:ASP站长网) |