1.由此show status 命令了解各种sql的实行效率

  SHOW STATUS提供msyql服务器的状态信息

  一般情况下,我们只有待了解因”Com”开头的下令

  show session status like ‘Com%’:显示当前的连接的统计结果

  show global status like ‘Com%’ :显示自数据库上次起动到今日的统计结果

  注:默认是session级别的

  其中Com_XXX表示XXX语词所执行的次数。

要注意:Com_select,Com_insert,Com_update,Com_delete通过这几乎独参数,可以好地问询及眼前数据库的采用是因插队入更新为主或因询问操作为主,以及各类的SQL大致的行比例是稍微。

  另外,还有几独参数需要专注下:

  show status like ‘Connections’;// 试图连接MySQL服务器的次数

  show status like ‘Uptime’;//服务器工作的流年(单位秒)

  show status like ‘Slow_queries’;//慢查询的次数
(默认是10秒中就当作是缓查询,如下图所示)

统计 1

  a) 如何询问mysql的缓查询时

    Show variables like ‘long_query_time’;

  b) 修改mysql 慢查询时

    set long_query_time=2;//如果查询时跨2秒纵真是是缓缓查询

信任你吧盼了,用内置的console.time大凡何其地便民,省去了投机写代码来计算的工作量。另外值得一提的是,通过调用内置的console.time赢得的结果而于自己手动计算的辰不一又标准可靠。

2. 固定执行效率比逊色的SQL语句(dql出现问题之票房价值比dml的死)

  问题是:如何当一个门类面临,找到徐查询的select语句?

  答案:mysql支持将徐查询语词记录到日志文件被。程序员需要改php.ini的布文件,默认情况下,慢查询记录是不被之。

  开启慢查询记录的步子:

  打开 my.ini ,找到 [mysqld] 在该下部添加

  long_query_time = 2

  log-slow-queries = D:/mysql/logs/slow.log
#安装将日记写在那边,可以吗空,系统会给一个缺乏省之公文

事例:我们数据表中生出1千万修的数据量

  DQL语句:SELECT * FROM order_copy WHERE id=12345;

  统计 2

  查询耗时:19s>2s,所以mysql会将欠条select语句记录到款查询日志被

  SELECT * FROM order_copy WHERE id=12345底执行时:

  添加索引前:19s

  添加索引后:0.08s

当然,我们吧足以选择好写代码来计时:

4.规定问题并动用对应的优化措施

常用的优化措施是填补加索引。添加索引,我们毫不加内存,不用改程序,不用调sql,只要实施个对的’create
index’,查询速度就可能增长百倍千倍增。但是环球无免费的午餐,查询速度的加强是为插队、更新、删除的速吗代价的,这些写操作,增加了大气之I/O。
譬如:给字段id添加索引:

ALTER TABLE order_copy ADD PRIMARY KEY(id)

为1千万的数额增长primary key 需要耗时: 428秒(7分钟)

EXPLAIN SELECT * FROM order_copy WHERE id=12345

统计 3

幸亏为被id添加了目录,才叫rows的结果也1

可索引并无是足以管添加的,以下几种状态用牢记在心:

于频繁的当作查询条件字段应该创建索引
   select * from order_copy where id = $id

唯一性太差的字段不相符单独创建索引,即使屡作为查询条件
   select * from order_copy where sex=’女’

创新非常累之字段不称创建索引
   select * from order_copy where order_state=’未付款’

不见面起于WHERE子句被配段非拖欠创建索引
目录的类型:

PRIMARY 索引     =>    在主键上活动创建
INDEX 索引        =>    就是普通索引
UNIQUE 索引      =>    相当于INDEX + Unique
FULLTEXT         =>    只在MYISAM 存储引擎支持,
目的是全文索引,在内容体系有效的几近, 在全英文网站因此几近(英文词独立).
汉语数据不常用,意义不大 国内全文索引通常 使用 sphinx 来收场成.
目录的采用

确立目录

 

create [UNIQUE|FULLTEXT] index index_name on tbl_name (col_name
[(length)] [ASC | DESC] , …..);
alter table table_name ADD INDEX [index_name] (index_col_name,…)

增长主键(索引)

ALTER TABLE 表名 ADD PRIMARY KEY(列名,..); //主键可以是手拉手主键

删去索引

DROP INDEX index_name ON tbl_name;
alter table table_name drop index index_name;

删除主键(索引)比较特别:

alter table t_b drop primary key;

查询索引(均只是)

show index from table_name;
show keys from table_name;
desc table_Name;

 

初稿出处:http://www.cnblogs.com/hongfei/archive/2012/10/20/2732516.html

统计 4

MySql优化的相似步骤

比如给hello world 做件漂亮的嫁衣再拉下见人:

3.通过explain分析低效率的SQL语句之推行情况

  使用explain分析该dql语句:

EXPLAIN SELECT * FROM order_copy WHERE id=12345
会见生出如下信:
select_type:表示查询的项目。
table:输出结果集的阐明
type:表示表的连年路(system和const为佳)
possible_keys:表示查询时,可能利用的目录
key:表示其实运用的目
key_len:索引字段的长短
rows:扫描的行数
Extra:执行情况的叙说和验证

只顾:要尽量避免让type的结果为all,extra的结果也:using filesort

统计 5

MySQL explain功能展示的各种信息之详尽说明如下:

id: MySQL Query Optimizer 选定的行计划受到询问的序列号。

select_type: 所使用的询问类型,主要发生以下即几乎种查询类型。

    • DEPENDENT
      SUBQUERY:子查询内层的首先单select,依赖让表面查询的结果集。
    • DEPENDENT
      UNION:子查询中之union,且为union中起第二单select开始之背后所有的select,同样凭借让表面查询的结果集。
    • PRIMARY:子查询中的极度外层查询,注意并无是主键查询。
    • SIMPLE:除子查询或者union之外的另外查询。
    • SUBQUERY:子查询内层查询的率先只select,结果未依赖让表面查询的结果集。
    • UNCACHETABLE SUBQUERY:结果集无法缓存的子查询。
    • UNION:union语句被第二独select开始后的保有select,第一个select为primary。
    • UNION RESULT:union中的联合结果。

table:显示这无异步所访问的数据库被之阐明底称谓。

type:告诉我们队表使用的拜访方式,主要含有如下几栽类型。

    • all:全表扫描。
    • const:读常量,最多只是会时有发生雷同漫漫记下匹配,由于是常量,实际上就须要读一赖。
    • eq_ref:最多但会生出一致长达匹配结果,一般是透过主键或唯一键索引来访问。
    • fulltext:进行全文索引检索。
    • index:全索引围观。
    • index_merge:查询中以利用有限个(或更多)索引,然后针对索引结果进行合并,再念取表数据。
    • index_subquery:子查询中之回来结果字段组合是一个索引(或索引组合),但切莫是一个主键或唯一索引。
    • rang:索引范围扫描。
    • ref:join语句中呗驱动表索引引用的查询。
    • ref_or_null:与ref的唯一区别就是是当以索引引用的询问之外再长一个空值的查询。
    • system:系统表,表中不过来一行数。
    • unique_subquery:子查询中之回来结果字段组合是主键或者唯一约束。

possible_keys:该查询好下的目。如果无任何索引可以使用,就是显示成null,这项内容对优化索引时之调非常重大。

key: MySQL Query Optimizer 从possible_keys中选择以的目。

key_len:被入选使用索引的索引键长度。

ref:列出是经过常量(const),还是有表底某某字段(如果是jion)来过了(通过key)的。

rows:MySQL Query Optimizer
通过系统收集之统计信息估计出来的结果集记录条数。

extra:查询中各一样步实现的额外细节信息,主要会产生以下内容

distinct:查找distinct值,当mysql找到第一长达匹配的结果时,将终止该值的查询,转为后面其他价值的询问。

full scan on null key:
子查询中之一模一样栽优化措施,主要以撞无法通过索引访问null值的采取。

impossible where noticed after reading const tables:MySQL Query
Optimizer 通过搜集及的统计信息判断发生未可能存在结果。

no tables:query语句子被采用from dual 或无分包其他from子句。

not exists:在一些错误连接着,MySQL Query
Optimizer通过变更旧的Query的重组而使的优化措施,可以部分减少数量访问次数。

range checked for each record (index
map:N):通过MySql官方手册的叙述,当MySQL Query
Optimizer没有发觉好之得动用的目录时,如果发现前面表的列值已清楚,部分索引可以以。对前面表的每个行组合,MySql检查是否足以使
range 或index_merge访问方法来索引行。

select tables optimized
away:当我们利用一些聚合函数来访问是的目的有字段时,MySQL Query
Optimizer会通过索引直接一不善定位及所急需的数实行成功总体查询,当然,前提是以Query中莫克来group
by操作。

using filesort:当Query面临含order
by操作,而且无法以索引完成排序操作的早晚,MySQL Query
Optimizer不得不选择相应的排序算法来促成。

using index:所欲数仅需要以index即可尽落,不待以届说明中得多少。

using index for group-by:数据看同using
index一样,所要数仅须要读取索引,当Query中采用group by 或
distinct子句时,如果分组字段为当目录中,信息就会显示是。

using
temporary:当MySQL在好几操作中须下临时表时,在extra信息遭到虽见面油然而生这。主要常见于group
by 和order by等操作着。

using
where:如果未念取表的有着数据,或不是单通过索引就可以拿走具有必须的多少,则会面世using
where信息。

using where with pushed
condition:这是一个但以NDBCluster存储挑起擎中才见面冒出的消息,而且还用通过打开condition
pushdown优化功能才可能受利用。控制参数为 engine_condition_pushdown

console.group("app.foo");
console.log("来自foo模块的信息 blah blah blah...");
console.groupEnd();
console.group("app.bar");
console.log("来自bar模块的信息 blah blah blah...");
console.groupEnd();

统计 6

console.dir

统计 7

当您想代码满足某些条件时才输出信息及控制台,那么您大可不必写if抑或三元表达式来达成目的,cosole.assert虽是这般场景下一致种植十分好的工具,它见面先对传播的表达式进行预言,只有表达式为假时才输出相应信息及控制台。

console.time & console.timeEnd

当合理使用上述log方法后,可以非常有利地当控制台选择查看特定项目的音讯。

Chrome的开发者工具已经强大到没有对象的程度了,特别是那功能丰富界面友好之console,使用相当可以如同下功效:

console.log('%chello world','font-size:25px;color:red;');

统计 8

若是又配合console.group 与console.groupEnd,可以以这种分类管理的思量发挥到无限致。这契合给以出一个圈圈非常特别模块很多非常复杂的Web
APP时,将分头的log信息分组到为个别命名空间吧名称的组里面。

统计 9

console.time("Array initialize");
var array= new Array(1000000);
for (var i = array.length - 1; i >= 0; i--) {
    array[i] = new Object();
};
console.timeEnd("Array initialize");

统计 10

console.log('一颗红心向太阳','吼吼~');
console.info('楼上药不能停!');
console.warn('楼上嘴太贱!');
console.error('楼上关你毛事?');

看在方摇摆的豆比兔是未是发生种植减少它同样体面的冲动。

若果还不够过瘾,那咱们来log一些图吧,甚至。。。动图?
本着,你得预有图,我们将这张图为例。

console.log("%c", "padding:50px 300px;line-height:120px;background:url('http://wayou.github.io/2014/09/10/chrome-console-tips-and-tricks/rabbit.gif') no-repeat;");
function foo(){
    //其他函数逻辑blah blah。。。
    console.count('foo 被执行的次数:');
}
foo();
foo();
foo();

另外,console.log() 接收不定参数,参数间用逗号分隔,最终见面输出会将其坐空白字符连接。

统计 11

转自:http://blog.jobbole.com/76985/

除此,console.table 更是直接为表的形式以数据输出,不可知赞得极度多!
借之前写过的相同篇博文里的事例:

$

犹如美刀总是被程序员和各种编程语言所推崇「你望PHP代码就知PHPer有多爱钱了」,在Chrome的主宰台里,$用处还算非常多都便于之。
$_指令归来最近同样糟糕表达式执行的结果,功能及据提高的方向键再回车是如出一辙的,但其可以举行呢一个变量使用于您连下去的表达式中:

2+2//回车,再
$_+1//回车得5

统计 12

上面的$_急需领悟其奥义才会使合适,而$0~$4尽管意味着了不久前5单你挑选了的DOM节点。
什么意思?在页面右击选择审查元素,然后在弹出来的DOM结点树上面随便点选,这些被触发了之节点会给记录下来,而$0会回最近平不良点选的DOM结点,以此类推,$1返回的凡最佳次点选的DOM节点,最多保留了5个,如果未足够5单,则归undefined

统计 13

另外值得一讴歌的凡,Chrome
控制台中原生支持类jQuery的选择器,也就是说你可以就此$累加熟悉的css选择器来抉择DOM节点,多么滴熟悉。

$('body')

统计 14

$(selector)返回的是满足选择原则的首单DOM元素。
扒去其伪善的伪装,其实$(selector)是原生JavaScript document.querySelector() 的封装。
还要其它一个命令 $ $(selector)回到的是富有满足选择标准统计的因素的一个凑合,是对准document.querySelectorAll() 的封装。

$$('div')

统计 15

copy

经过此命令可以将以控制台获取到之内容复制到剪贴板。

copy(document.body)

然后您便可到处贴了:

统计 16

在押罢这个条命令行,机智的卿是无是跟脑洞全开的自身平,冒出了这般一个想方设法:那就算是经过这个命令可以于JavaScript里开展复制操作从而不用依赖Flash插件了。
But现实是残酷的,如之前所陈述之,这里的决定高命令只能当控制台中环境遭受实践,因为他不以为然附于任何全局变量比如window,所以实际上以JS代码里是访问不了这copy主意的,所以于代码层面来调用复制功能吗即无从谈起。但愿有天浏览器会提供相应的JS实现吧~

keys & values

当时是相同针对基友。前者返回传入对象具备属于性名组成的多寡,后者返回所有属于性值组成的数组。具体要看下的例证:

var tboy={name:'wayou',gender:'unknown',hobby:'opposite to the gender'};
keys(tboy);
values(tboy);

统计 17

monitor & unmonitor

monitor(function),它接受一个函数名为当参数,比如function a,每次a给执行了,都见面在决定高出口一长长的消息,里面含有了函数的名称a暨实行时所传的参数。

苟unmonitor(function)便是用来歇这同样监听。

function sayHello(name){
    alert('hello,'+name);
}
monitor(sayHello);
sayHello('wayou');
unmonitor(sayHello);
sayHello('wayou');

统计 18

debug & undebug

debug同为是收到一个函数名叫当参数。当该函数执行时自动断下来为供应调试,类似于当拖欠函数的入口处打了个断点,可以由此debugger来做到,同时也得通过在Chrome开发者工具里找到呼应源码然后手动打断点。
undebug 则是败该断点。

假定别还有多命令则被丁没有说之欲望,因为众多都好经Chrome开发者工具的UI界面来操作以比用在控制高输入而便于。

当思要查看CPU使用相关的消息经常,可以利用console.profile配合 console.profileEnd来就这需要。
立无异于效可由此UI界面来形成,Chrome
开发者工具里有只tab便是Profile

将DOM结点以JavaScript对象的花样出口到控制台
console.log举凡直将拖欠DOM结点以DOM树的布局进行输出,与在要素对时相底构造是一样的。不同的表现形式,同样的优雅,各种体位任君选择反正就是是便利与体贴。

统计 19

而关于console.log,早已为作弄坏了。一切都自Chrome提供了这般一个API:第一单参数可以蕴涵有格式化的命令以%c

console.log

var start=new Date().getTime();
var array= new Array(1000000);
for (var i = array.length - 1; i >= 0; i--) {
    array[i] = new Object();
};
console.log(new Date().getTime()-start);
var isDebug=false;
console.assert(isDebug,'开发中的log信息。。。');

库跟踪相关的调节好采取console.trace。这个同样可以透过UI界面完成。当代码被于断点后,可以当Call Stack面板中查相关堆栈信息。

统计 20

如您当不够过瘾,那便管你会写出来的无比华丽的CSS样式都使及吧,比如渐变。于是你可以获如下华丽丽的效力:

console.count

console.assert

console.dir(document.body);
console.log(document.body);

统计 21

除却标准输出的观,还有广泛的景是计数。
当你想统计某段代码执行了有点次时也大可不必自己去写相关逻辑,内置的console.count可以死地胜任这样的职责。

故而在我看来这点儿只方式有些鸡肋,因为还好通过操作界面来完成。但起码他供了相同种植命令执行道的竞相,还是基本上矣种姿势供选择吧。

console.log('%c你好','color:red;','小明','你知道小红被妈妈打了么');

以及这个类似之效力还有console.timeLine配合 console.timeLineEnd,它的企图是起记录一段时间轴,同样可以由此Chrome开发者工具里之Timeline 标签来进行相应操作。

地方介绍的都是悬挂在window.console本条目标下的法,统称为Console
API,接下的这些主意得当地游说应该为命,是Chrome内置提供,在控制台中使的,他们统称为Command
Line API。

console.trace

console.profile & console.timeLime

统计 22

var data = [{'品名': '杜雷斯', '数量': 4}, {'品名': '冈本', '数量': 3}];
console.table(data);

圈正在方面密集的代码不用慌,上面console.log()亚只参数均是纯CSS用来决定样式的,你不会见生。而首先单参数里可以带动用百分号开头的转义指令,如上面输出带样式的文时采用的%c命令。更详尽的下令参见官方API文档的本条表。

各种招大招的音频啊~

这边借用官方文档的例证:

世家都见面用log,但鲜有人大好地采用console.error , console.warn 等将出口及控制台的音信进行分类整理。
他俩功能界别不殊,意义在以出口及控制台的信息进行分拣,或者说叫它更语义化。
逐一所表示的语义如下:

  • console.log:普通信息
  • console.info:提示类消息
  • console.error:错误信息
  • console.warn:警示信息

统计 23

console.log('%chello world', 'background-image:-webkit-gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2),color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) );color:transparent;-webkit-background-clip: text;font-size:5em;');
  • 双重胜「逼格」更快「开发调试」更胜似「进阶级的Frontender」
  • Bug无处遁形「Console大法好」

出口一些调试信息是控制台最常用的功效,当然,它的功力极为不止于这。当做一些属性测试时,同样好以此地充分便利地进行。
准用勘查一段落代码执行的耗时情况经常,可以就此console.time与 console.timeEnd来做此事。