http://wiki.we.com:8090/pages/viewpage.action?pageId=44205054

    01、desc 说明 用desc(explain)来检查sql语句
    DESC
    SELECT * FROM to8to_fcom WHERE id=5481

    注意key、rows和Extra这三项,这条语句返回的结果说明了该sql会使用PRIMARY主键索引来查询,结果集数量为1条,Extra没有显示,证明没有用到排序或其他操作。由此结果可以推断,mysql会从索引中查询id=5481这条记录,然后再到真实表中取出所有字段,是很简单的操作。 key是指明当前sql会使用的索引,mysql执行一条简单语句时只能使用到一条索引,注意这个限制;rows是返回的结果集大小,结果集就是使用该索引进行一次搜索的所有匹配结果;Extra一般会显示查询和排序的方式, 如果没有使用到key,或者rows很大而用到了filesort排序,一般都会影响到效率.

    eg: (explain)
    001效果图收藏表,与文件夹表,连表
    DESC
    SELECT SQL_CALC_FOUND_ROWS b.aid,b.cid FROM to8to_xiaoguotu_folder AS a LEFT JOIN to8to_xiaoguotu_collection AS b ON a.xfid=b.xfid WHERE a.uid=1611418 AND b.cid>0 AND b.xcid!=’’ ORDER BY b.dateline DESC

    a (to8to_xiaoguotu_folder)表 查询2行 using temporary 来排序 b( to8to_xiaoguotu_collection)表 查询9行
    002、效果图查询封面
    DESC
    SELECT * FROM to8to_xiaoguotu WHERE caseid=0 AND category=1 AND visible=1 AND oldcid IN (152185,152184,136,237,277)

    to8to_xiaoguotu 共查了46行

    003 Extra 该列包含MySQL解决查询的详细信息。
    003.1 Distinct MySQL发现第1个匹配行后,停止为当前的行组合搜索更多的行。一直没见过这个值
    003.2 Not exists 10.3 range checked for each record 没有找到合适的索引
    003.4 using filesort MYSQL手册是这么解释的”MySQL需要额外的一次传递,以找出如何按排序顺序检索行。
    通过根据联接类型浏览所有行并为所有匹配WHERE子句的行保存排序关键字和行的指针来完成排序。
    然后关键字被排序,并按排序顺序检索行。”目前不太明白
    003.5 using index 只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的信息。
    这个比较容易理解,就是说明是否使用了索引
    explain select from ucspace_uchome where uid = 1的extra为using index(uid建有索引)
    explain select count(
    ) from uchome_space where groupid=1 的extra为using where(groupid未建立索引)
    003.6 using temporary 为了解决查询,MySQL需要创建一个临时表来容纳结果。典型情况如查询包含可以按不同情况列出列的GROUP BY和ORDER BY子句时。

    02、mysqlslap 测试工具
    Mysqlslap是从5.1.4版开始的一个MySQL官方提供的压力测试工具。通过模拟多个并发客户端访问MySQL来执行压力测试,同时详细的提供了”高负荷攻击MySQL”的数据性能报告。并且能很好的对比多个存储引擎在相同环境下的并发压力性能差别。
    它的使用语法如下: shell>/usr/local/mysql/bin/mysqlslap [options]
    常用参数【options】详细介绍:
    —concurrency代表并发数量,多个可以用逗号隔开。例如:—concurrency=50,200,500
    —engines代表要测试的引擎,可以有多个,用分隔符隔开。例如:—engines=myisam,innodb,memory
    —iterations代表要在不同并发环境下,各自运行测试多少次。
    —auto-generate-sql 代表用mysqlslap工具自己生成的SQL脚本来测试并发压力。
    —auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始,
    —auto-generate-sql-load-type 代表要测试的环境是读操作还是写操作还是两者混合的(read,write,update,mixed)
    —number-of-queries 代表总共要运行多少条查询。
    —debug-info 代表要额外输出CPU以及内存的相关信息。
    —number-int-cols 代表示例表中的INTEGER类型的属性有几个。
    —number-char-cols代表示例表中的vachar类型的属性有几个。
    —create-schema 代表自定义的测试库名称。
    —query 代表自定义的测试SQL脚本。
    说明: 测试的过程需要生成测试表,插入测试数据,这个mysqlslap可以自动生成,默认生成一个mysqlslap的schema,如果已经存在则先删除。
    可以用-only-print来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹。
    实验步骤:
    练习一: 单线程测试,测试做了什么。

    ./bin/mysqlslap -a -uroot -p111111 多线程测试。使用—concurrency来模拟并发连接。
    ./bin/mysqlslap -a -c 100 -uroot -p111111 迭代测试。用于需要多次执行测试得到平均值。
    ./bin/mysqlslap -a -i 10 -uroot -p111111

    练习二:

    ./bin/mysqlslap -auto-generate-sql-add-autoincrement -a -uroot -p111111
    ./bin/mysqlslap -a -auto-generate-sql-load-type=read -uroot -p111111
    ./bin/mysqlslap -a -auto-generate-secondary-indexes=3 -uroot -p111111
    ./bin/mysqlslap -a -auto-generate-sql-write-number=1000 -uroot -p111111
    ./bin/mysqlslap —create-schema world -q “select count(*) from City” -uroot -p111111
    ./bin/mysqlslap -a -e innodb -uroot -p111111
    ./bin/mysqlslap -a —number-of-queries=10 -uroot -p111111

    练习三: 执行一次测试,分别50和100个并发,执行1000次总查询:

    ./bin/mysqlslap -a —concurrency=50,100 —number-of-queries 1000 —debug-info -uroot -p111111
    50和100个并发分别得到一次测试结果(Benchmark),并发数越多,执行完所有查询的时间越长。为了准确起见,可以多迭代测试几次:
    ./bin/mysqlslap -a —concurrency=50,100 —number-of-queries 1000 —iterations=5 —debug-info -uroot -p111111
    测试同时不同的存储引擎的性能进行对比:
    ./bin/mysqlslap -a —concurrency=50,100 —number-of-queries 1000 —iterations=5 —engine=myisam,innodb —debug-info -uroot -p111111

    win 下用法差不多
    如:
    bfire.lai@bfire-yfb /cygdrive/d/wamp/bin/mysql/mysql5.6.12/bin
    $ ./mysqlslap.exe -V -uroot -p123456
    D:\wamp\bin\mysql\mysql5.6.12\bin\mysqlslap.exe Ver 1.0 Distrib 5.6.12, for Win32 (x86)
    更新多命令可用
    $ ./mysqlslap.exe —help -uroot -p123456
    来查看。