MySQL优化全攻略-相关数据库命令

发表于:2007-07-04来源:作者:点击数: 标签:
我们讨论的是 数据库 性能 优化的另一方面,即运用数据库 服务器 内建的工具辅助 性能分析 和优化。 ▲ SHOW 执行下面这个命令可以了解服务器的运行状态:mysql show status; 该命令将显示出一长列状态变量及其对应的值,其中包括:被中止访问的用户数量,被

我们讨论的是数据库性能优化的另一方面,即运用数据库服务器内建的工具辅助性能分析和优化。

▲ SHOW

执行下面这个命令可以了解服务器的运行状态:mysql >show status;

该命令将显示出一长列状态变量及其对应的值,其中包括:被中止访问的用户数量,被中止的连接数量,尝试连接的次数,并发连接数量最大值,以及其他许多有用的信息。这些信息对于确定系统问题和效率低下的原因是十分有用的。

SHOW命令除了能够显示出MySQL服务器整体状态信息之外,它还能够显示出有关日志文件、指定数据库、表、索引、进程和许可权限表的宝贵信息。

▲ EXPLAIN

EXPLAIN能够分析SELECT命令的处理过程。这不仅对于决定是否要为表加上索引很有用,而且对于了解MySQL处理复杂连接的过程也很有用。

下面这个例子显示了如何用EXPLAIN提供的信息逐步地优化连接查询。(本例来自MySQL文档,见http://www.mysql.com/doc/E/X/EXPLAIN.html。原文写到这里似乎有点潦草了事,特加上此例。)

假定用EXPLAIN分析的SELECT命令如下所示:

EXPLAIN SELECT tt.TicketNumber, tt.TimeIn, tt.ProjectReference, tt.EstimatedShipDate, tt.ActualShipDate, tt.ClientID, tt.ServiceCodes, tt.RepetitiveID, tt.CurrentProcess, tt.CurrentDPPerson, tt.RecordVolume, tt.DPPrinted, et.COUNTRY, et_1.COUNTRY, do.CUSTNAME FROM tt, et, et AS et_1, do WHERE tt.SubmitTime IS NULL AND tt.ActualPC = et.EMPLOYID AND tt.AssignedPC = et_1.EMPLOYID AND tt.ClientID = do.CUSTNMBR;

SELECT命令中出现的表定义如下:

表定义

表 列 列类型 tt ActualPC CHAR(10) tt AssignedPC CHAR(10) tt ClientID CHAR(10) et EMPLOYID CHAR(15) do CUSTNMBR CHAR(15)

索引

表 索引 tt ActualPC tt AssignedPC tt ClientID et EMPLOYID (主键) do CUSTNMBR (主键)

tt.ActualPC值分布不均匀

在进行任何优化之前,EXPLAIN对SELECT执行分析的结果如下:

table type possible_keys key key_len ref rows Extra et ALL PRIMARY NULL NULL NULL 74 do ALL PRIMARY NULL NULL NULL 2135 et_1 ALL PRIMARY NULL NULL NULL 74 tt ALL AssignedPC,ClientID,ActualPC NULL NULL NULL 3872 range checked for each record (key map: 35)

原文转自:http://www.ltesting.net