晚上看了一些关于消息队列和共享内存方面的资料。这部分内容昨天看arm-linux视频教程第17讲的时候接触过了,但视频看完后自己虽有了一些印象,却不是太懂。于是又在网络上找了一些文章来进一步学习,并编写了012号与013号程序,分别是关于消息队列和共享内存的,在机器上也已经调试过了,现在把代码贴在下面:阅读全文
使用jQuery1.3.2的$.post()函数发送一个json格式的请求,返回数据也是json格式。程序在ie和ff中运行一切正常。
但是在ff中使用httpfox插件检查:大部分情况下返回结果为 result=200, type=application/json
偶尔会出现result = Aborted, type=application/json (NS_BINDING_ABORTED)
不影响程序的执行结果。
google也找不到NS_BINDING_ABORTED的具体解释。
谁知道该如何避免这个错误呢?
----------------------------------------------------
我们这儿是用的jquery的dialogue弹出一个页面,在firefox中抓(httpfox),发现出现三个NS_BINDING_ABORTED.
但是在ff中使用httpfox插件检查:大部分情况下返回结果为 result=200, type=application/json
偶尔会出现result = Aborted, type=application/json (NS_BINDING_ABORTED)
不影响程序的执行结果。
google也找不到NS_BINDING_ABORTED的具体解释。
谁知道该如何避免这个错误呢?
----------------------------------------------------
我们这儿是用的jquery的dialogue弹出一个页面,在firefox中抓(httpfox),发现出现三个NS_BINDING_ABORTED.
在实际开发中,有时会遇到PHP和C语言结构的互相转化问题,这时候PHP的函数pack和unpack就能帮上大忙了.
pack()将数据打包成二进制串
unpack()从字串中的二进制串转化成指定的格式
Code Description
a NUL-padded string
A SPACE-padded string
h Hex string, low nibble first阅读全文
pack()将数据打包成二进制串
unpack()从字串中的二进制串转化成指定的格式
Code Description
a NUL-padded string
A SPACE-padded string
h Hex string, low nibble first阅读全文
absolute,position,relative
Php/Js/Shell/Go jackxiang 2009-11-26 13:15
默认div的属性值都是static,静态。就不用多说了。最关键的是
relative(相对)以及absolute(绝对)。
往往我们如果是COPY别人的代码,会把absolute属性与left、top配合起来制作相关的“悬浮层”效果。然而有时候我们需要针对某一个容器的悬浮效果,而不是针对窗口的。这时候通过高度、宽度的计算不但麻烦,而且几乎无法完美实现效果。我一开始也无能为力,后来发现只要把其上一级的样式属性 position设置为relative就可以了。
也就是说,position的属性值的效果,直接受其容器样式中position属性值影响。
例如如下A-B的嵌套结构
当A的position为relative时,B的position为absolute才有效。这时候left:0、top:0就不再针对窗口文档,而是针对id为A的这个div了。
这样在开发一些基于B/S应用程序的时候,就能很方便的添加一些UI元素,例如某一个活动层的关闭按钮等。
备注:
position:absolute这个是绝对定位;
是相对于浏览器的定位。
比如:position:absolute;left:20px;top:80px; 这个容器始终位于距离浏览器左20px,距离浏览器上80px的这个位置。
position:relative是相对定位,是相对于前面的容器定位的。这个时候不能用top left在定位。应该用margin。
比如:
当1固定了位置。1的样式float:left;width:100px; height:800px;
2的样式为float:left; position:relative;margin-left:20px;width:50px;
2的位置在1的右边,距离120px
relative(相对)以及absolute(绝对)。
往往我们如果是COPY别人的代码,会把absolute属性与left、top配合起来制作相关的“悬浮层”效果。然而有时候我们需要针对某一个容器的悬浮效果,而不是针对窗口的。这时候通过高度、宽度的计算不但麻烦,而且几乎无法完美实现效果。我一开始也无能为力,后来发现只要把其上一级的样式属性 position设置为relative就可以了。
也就是说,position的属性值的效果,直接受其容器样式中position属性值影响。
例如如下A-B的嵌套结构
当A的position为relative时,B的position为absolute才有效。这时候left:0、top:0就不再针对窗口文档,而是针对id为A的这个div了。
这样在开发一些基于B/S应用程序的时候,就能很方便的添加一些UI元素,例如某一个活动层的关闭按钮等。
备注:
position:absolute这个是绝对定位;
是相对于浏览器的定位。
比如:position:absolute;left:20px;top:80px; 这个容器始终位于距离浏览器左20px,距离浏览器上80px的这个位置。
position:relative是相对定位,是相对于前面的容器定位的。这个时候不能用top left在定位。应该用margin。
比如:
当1固定了位置。1的样式float:left;width:100px; height:800px;
2的样式为float:left; position:relative;margin-left:20px;width:50px;
2的位置在1的右边,距离120px
1. if (typeof window.pageYOffset != ’undefined’) {
2. bodyTop = window.pageYOffset;
3. } else if (typeof document.compatMode != ’undefined’ && document.compatMode != ’BackCompat’) {
4. bodyTop = document.documentElement.scrollTop;
5. }
6. else if (typeof document.body != ’undefined’) {
7. bodyTop = document.body.scrollTop;
8. }
# if (typeof window.pageYOffset != ‘undefined’) {
# bodyTop = window.pageYOffset;
# } else if (typeof document.compatMode != ‘undefined’ && document.compatMode != ‘BackCompat’) {
# bodyTop = document.documentElement.scrollTop;
# }
# else if (typeof document.body != ‘undefined’) {
# bodyTop = document.body.scrollTop;
# }
2. bodyTop = window.pageYOffset;
3. } else if (typeof document.compatMode != ’undefined’ && document.compatMode != ’BackCompat’) {
4. bodyTop = document.documentElement.scrollTop;
5. }
6. else if (typeof document.body != ’undefined’) {
7. bodyTop = document.body.scrollTop;
8. }
# if (typeof window.pageYOffset != ‘undefined’) {
# bodyTop = window.pageYOffset;
# } else if (typeof document.compatMode != ‘undefined’ && document.compatMode != ‘BackCompat’) {
# bodyTop = document.documentElement.scrollTop;
# }
# else if (typeof document.body != ‘undefined’) {
# bodyTop = document.body.scrollTop;
# }
其实这一大串代码在jQuery中有一行代码可以代替,那就是
var bodyTop = $(document).scrollTop();
经测试,如果是写成$(window).scrollTop()的话则在IE系列下是没有值的,万恶的jQuery API竟然没有scrollTop().
bodyTop = document.documentElement.scrollTop + document.body.scrollTop;
就可以了。
因为始终有一个为 0 ; 呵呵。
http://blogger.org.cn/blog/more.asp?name=yach&id=20128
http://blog.sina.com.cn/s/blog_61814cd40100e85j.html
http://blog.sina.com.cn/s/blog_61814cd40100e85j.html
控制面板\时钟、语言和区域\区域和语言选项\键盘和语言\更改键盘\语言栏\悬浮于桌面上
警惕:最易患癌八个生活坏习惯
北京市卫生局发布的健康播报显示,去年本市逾7万死亡者中,每4个有一个死于癌症。6日,台湾歌手阿桑因乳腺癌不幸病逝。专家指出,癌症关键是如何预防,拥有健康的生活方式、科学饮食、调节自己的情绪加上定期体检,癌症就无法趁虚而入。
在18日举行的2009国际健康生活方式博览会健康大家科学讲堂上,中华预防医学会会长、卫生部原副部长王陇德提醒,要注意保健中的十大误区。阅读全文
北京市卫生局发布的健康播报显示,去年本市逾7万死亡者中,每4个有一个死于癌症。6日,台湾歌手阿桑因乳腺癌不幸病逝。专家指出,癌症关键是如何预防,拥有健康的生活方式、科学饮食、调节自己的情绪加上定期体检,癌症就无法趁虚而入。
在18日举行的2009国际健康生活方式博览会健康大家科学讲堂上,中华预防医学会会长、卫生部原副部长王陇德提醒,要注意保健中的十大误区。阅读全文
二战德国党卫军军歌:《当人们不再忠诚》
歌词:噢,命运,变幻无常 就象月亮 有时满月,有时残缺 可恨的人生啊 先是坎坷,后又平顺 象被命运玩弄于股掌之上 不论贫穷或权贵终究会象冰块般溶解消逝 荒诞虚空的命运 你这运转不停的巨轮 既恶毒又残酷 人生的幸福美满,转眼成空 你躲藏在阴影和遮掩之中给我煎熬和折磨,我现在只好赌赌运气 ? 赤手空拳向你讨个公道 命运乖违,和我作对 健康与德性,非我所有 沮丧与挫败,奴役我心在此时刻,请勿迟疑 立即拨动令人心悸的琴弦 因为命运已经击败强者 所有人只能与我一起饮泣布兰诗歌之噢 命运女神
阅读全文
歌词:噢,命运,变幻无常 就象月亮 有时满月,有时残缺 可恨的人生啊 先是坎坷,后又平顺 象被命运玩弄于股掌之上 不论贫穷或权贵终究会象冰块般溶解消逝 荒诞虚空的命运 你这运转不停的巨轮 既恶毒又残酷 人生的幸福美满,转眼成空 你躲藏在阴影和遮掩之中给我煎熬和折磨,我现在只好赌赌运气 ? 赤手空拳向你讨个公道 命运乖违,和我作对 健康与德性,非我所有 沮丧与挫败,奴役我心在此时刻,请勿迟疑 立即拨动令人心悸的琴弦 因为命运已经击败强者 所有人只能与我一起饮泣布兰诗歌之噢 命运女神
阅读全文
引言:牛在哪里? 大门口
有大学毕业的朋友下乡做村干部,几乎每天都有村民到办公室来求助,总结一下出现最频繁的问题是:牛在哪里?意思是他家的牛找不到,能否帮忙找牛?为人民服务是干部的重要职责,朋友自然尽心竭力为民服务,但久而久之,一有村民出现在门口,朋友心里就开始盘算,今天不是找牛就是找猪啊羊啊鸡啊诸如此类的,不免烦躁与空虚,并扪心自问:难道我一个堂堂大学本科生,来这就是为了找牛吗?
阅读全文
有大学毕业的朋友下乡做村干部,几乎每天都有村民到办公室来求助,总结一下出现最频繁的问题是:牛在哪里?意思是他家的牛找不到,能否帮忙找牛?为人民服务是干部的重要职责,朋友自然尽心竭力为民服务,但久而久之,一有村民出现在门口,朋友心里就开始盘算,今天不是找牛就是找猪啊羊啊鸡啊诸如此类的,不免烦躁与空虚,并扪心自问:难道我一个堂堂大学本科生,来这就是为了找牛吗?
阅读全文
Oracle Enterprise Linux是由Oracle公司提供支持的企业级Linux发行。据项目网站称,Oracle以Red Hat Linux做为起始,移除了Red Hat的商标,然后加入了Linux的错误修正。Oracle Enterprise Linux现在是,并旨在保持为,与Red Hat Enterprise Linux完全兼容。
目前LINUX世界中很少有企业级Linux的免费版本,真正源自大厂商的,只有两个,一个是Oracle
Enterprise Linux,另一个是solaris.阅读全文
目前LINUX世界中很少有企业级Linux的免费版本,真正源自大厂商的,只有两个,一个是Oracle
Enterprise Linux,另一个是solaris.阅读全文
今年10月份,Window 7、Ubuntu 9.10和FreeBSD 8.0三者几乎同时发布。谁的性能最优?
9月28日,业界知名的Phoronix实验室公布一项测试数据,表明Ubuntu 9.10在性能上明显优于FreeBSD 8.0。具体做法大致如下:把两者最新的版本放在一台AMD双核CPU的服务器上,使用Phoronix专用测试包(PTS)严格进行24项对比测试,结果显示:19:5(即Ubuntu:19胜5负),Ubuntu明显胜于FreeBSD。具体地说就是,作为服务器版本的Ubuntu 9.10 Alpha 6与FreeBSD 8.0 RC1大比拼,前者胜出。
今年8月3日进行的一项测试(Windows7/Vista/Ubuntu三者大比拼),结果表明,Ubuntu 9.04版本略胜一筹。Ubuntu 9.10最新版本与Windows 7的对比测试,目前还没有进行。但是,根据Phoronix实验室的最新测试结果,Ubuntu的排名不会是最差的一个。大家知道,Phoronix实验室是一个专门的测试机构,书呆子气十足,只会用数据说话。事实上,Apple电脑操作系统就是由FreeBSD演化出来的。坦率地说,Ubuntu 9.10取得如此成绩并不容易,完全仰仗于Linux 2.6.31最新版本的强大威力。
为什么人们如此关注Ubuntu 9.10版本性能的优劣?因为,Ubuntu 9.10版本关乎企业云计算的命运。当前,国内《Ubuntu实验室》已经掌握了Ubuntu企业云计算的关键技术(或者说,关键点),同时,还有其他的一些发现(或体会)。我们认识到,真正学会、用好Ubuntu 9.10版本不是一件简单的事情,其中包含很多新理念、新技术。在技术方面,紧跟发展潮流是创新的前提,创新不是重新发明轮子。
抱歉说明:全球IT技 术发展非常迅速,一日不读书,落后千万里。明日清晨,我就要飞往一个很远很远的地方,那里几乎全是原始森林,冰川和雪峰,人迹罕见,根本没有网络连接。在 那里,我会心中时刻想念着我的读者们(不论是粉丝们还是批评者)。我虽然人已老了,但是,我其实还一个学生,准确地说,是一个数学专业的大学生,什么东西 都要重新学习,因为,我本人只是个数学教员(原人大、后北大),整天在无限小、无限大抽象空间中周旋。C程序我不写了,但是,我现在还能看得懂C程序,而且,很喜欢欣赏C程序的源代码风格。我懂得C程序的伟大力量。时光不能倒流。如若时光果真能够回到1957年,我定将成为一名编程高手,把思想闪光注入程序,与朋友们交流。在我看来,程序就是数学的一种语言,与人交流的工具。有人喜欢说,国产程序。对此,我就是想不通。程序可以写在黑板上,怎么会是国产?我力挺Ubuntu Linux发行版,完全是因为它的源代码可以让我看,让我读,而且,可以讲给学生们听。把一个程序预装在某个特定的计算机上,那叫“呆板程序”;要是一个程序能够随处自动运行,那才叫“Live程序”,这东西才有味道。我不相信Windows 7能够变成为“Live程序”,因为,它不能自动识别周围的硬件环境(需要激活才行)。其实Live技术并不复杂,但是,微软就是不肯这样去做
9月28日,业界知名的Phoronix实验室公布一项测试数据,表明Ubuntu 9.10在性能上明显优于FreeBSD 8.0。具体做法大致如下:把两者最新的版本放在一台AMD双核CPU的服务器上,使用Phoronix专用测试包(PTS)严格进行24项对比测试,结果显示:19:5(即Ubuntu:19胜5负),Ubuntu明显胜于FreeBSD。具体地说就是,作为服务器版本的Ubuntu 9.10 Alpha 6与FreeBSD 8.0 RC1大比拼,前者胜出。
今年8月3日进行的一项测试(Windows7/Vista/Ubuntu三者大比拼),结果表明,Ubuntu 9.04版本略胜一筹。Ubuntu 9.10最新版本与Windows 7的对比测试,目前还没有进行。但是,根据Phoronix实验室的最新测试结果,Ubuntu的排名不会是最差的一个。大家知道,Phoronix实验室是一个专门的测试机构,书呆子气十足,只会用数据说话。事实上,Apple电脑操作系统就是由FreeBSD演化出来的。坦率地说,Ubuntu 9.10取得如此成绩并不容易,完全仰仗于Linux 2.6.31最新版本的强大威力。
为什么人们如此关注Ubuntu 9.10版本性能的优劣?因为,Ubuntu 9.10版本关乎企业云计算的命运。当前,国内《Ubuntu实验室》已经掌握了Ubuntu企业云计算的关键技术(或者说,关键点),同时,还有其他的一些发现(或体会)。我们认识到,真正学会、用好Ubuntu 9.10版本不是一件简单的事情,其中包含很多新理念、新技术。在技术方面,紧跟发展潮流是创新的前提,创新不是重新发明轮子。
抱歉说明:全球IT技 术发展非常迅速,一日不读书,落后千万里。明日清晨,我就要飞往一个很远很远的地方,那里几乎全是原始森林,冰川和雪峰,人迹罕见,根本没有网络连接。在 那里,我会心中时刻想念着我的读者们(不论是粉丝们还是批评者)。我虽然人已老了,但是,我其实还一个学生,准确地说,是一个数学专业的大学生,什么东西 都要重新学习,因为,我本人只是个数学教员(原人大、后北大),整天在无限小、无限大抽象空间中周旋。C程序我不写了,但是,我现在还能看得懂C程序,而且,很喜欢欣赏C程序的源代码风格。我懂得C程序的伟大力量。时光不能倒流。如若时光果真能够回到1957年,我定将成为一名编程高手,把思想闪光注入程序,与朋友们交流。在我看来,程序就是数学的一种语言,与人交流的工具。有人喜欢说,国产程序。对此,我就是想不通。程序可以写在黑板上,怎么会是国产?我力挺Ubuntu Linux发行版,完全是因为它的源代码可以让我看,让我读,而且,可以讲给学生们听。把一个程序预装在某个特定的计算机上,那叫“呆板程序”;要是一个程序能够随处自动运行,那才叫“Live程序”,这东西才有味道。我不相信Windows 7能够变成为“Live程序”,因为,它不能自动识别周围的硬件环境(需要激活才行)。其实Live技术并不复杂,但是,微软就是不肯这样去做
没有最好的操作系统,只有最适合的操作系统~~
我也算得上是个 FREEBSD 的爱好者,虽然第一次使用 UNIX(类 UNIX)系统时是使用 SlackWare,即其中一个 LINUX 发行版。但自从使用了 FREEBSD 后,基本没用过 LINUX 了。 阅读全文
我也算得上是个 FREEBSD 的爱好者,虽然第一次使用 UNIX(类 UNIX)系统时是使用 SlackWare,即其中一个 LINUX 发行版。但自从使用了 FREEBSD 后,基本没用过 LINUX 了。 阅读全文
用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句。言外之意,就是对数据进行修改。在标准的SQL中有3个语句,它们是INSERT、UPDATE以及DELETE。在MySQL中又多了一个REPLACE语句,因此,本文以MySQL为背景来讨论如何使有SQL中的更新语句。阅读全文
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=2
连接数太多,如果是服务器或者数据库负载太高的异常,如果让程序继续,会有逻辑上的处理会有问题的,那得throw一下异常,然后捕获它,这说明数据库的架构需要进一步优化了,在高并发上处理有问题。
一直以来积累了很多对MySQL优化的心得和经验,计划通过写日志的方式一步一步写出来分享给大家。
MySQL优化的第一步应该做的就是排查问题,找出瓶颈,而通常情况下的瓶颈和问题都需要通过观察MySQL的运行情况来进行分析,《查看MySQL运行状况》这篇文章罗列了一些常用的查看MySQL运行信息的方式。
而对于大多数的程序员来说,最容易发现并解决的问题就是MySQL的慢查询或者没有利用索引的查询,所以这里主要给大家介绍如何利用官方的mysqldumpslow工具方便的查看这些信息。如何打开MySQL的慢查询,请点击《打开MySQL的慢查询记录》。
mysql slow log 是用来记录执行时间较长(超过long_query_time秒)的sql的一种日志工具.
启用 slow log
有两种启用方式:
1, 在my.cnf 里 通过 log-slow-queries[=file_name]
2, 在mysqld进程启动时,指定--log-slow-queries[=file_name]选项
mysqldumpslow命令
/usr/local/mysql/bin/mysqldumpslow -s c -t 10 /database/mysql/slow-log
这会输出记录次数最多的10条SQL语句,其中:
* -s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
* -t, 是top n的意思,即为返回前面多少条的数据;
* -g, 后边可以写一个正则匹配模式,大小写不敏感的;
比如
/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log
得到返回记录集最多的10个查询。
/path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log
得到按照时间排序的前10条里面含有左连接的查询语句。
小结
使用mysqldumpslow命令可以非常明确的得到各种我们需要的查询语句,对MySQL查询语句的监控、分析、优化是MySQL优化的第一步,也是非常重要的一步。
————————————————————————————————————
mysql开启慢查询方法:
1,配置开启
Linux:
在mysql配置文件my.cnf中增加
log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)
long_query_time=2 (记录超过的时间,默认为10s)
log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启)
log-long-format (如果设置了,所有没有使用索引的查询也将被记录)
Windows:
在my.ini的[mysqld]添加如下语句:
log-slow-queries = E:\web\mysql\log\mysqlslowquery.log
long_query_time = 2(其他参数如上)
2,查看方式
Linux:
使用mysql自带命令mysqldumpslow查看
常用命令
-s ORDER what to sort by (t, at, l, al, r, ar etc), 'at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string
eg:
s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序 -t,是top n的意思,即为返回前面多少条的数据 -g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log这个是按照时间返回前10条里面含有左连接的sql语句。
mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢?
其实打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加上如下代码:
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=2
注:
log-slow-queries 设置把日志写在那里,为空的时候,系统会给慢查询日志赋予主机名,并被附加slow.log. /var/lib/mysql/slowquery.log为日志存放的文件的位置,一般这个目录要有mysql的运行帐号的可写权限,一般都将这个目录设置为mysql的数据存放目录
long_query_time=2中的2表示查询超过两秒才记录.
如果设置了参数log-long-format,那么所有没有使用索引的查询也将被记录。在文件my.cnf或my.ini中加入下面这一行可以记录这些查询
这是一个有用的日志。它对于性能的影响不大(假设所有查询都很快),并且强调了那些最需要注意的查询(丢失了索引或索引没有得到最佳应用)
# Time: 070927 8:08:52
# User@Host: root[root] @ [192.168.0.20]
# Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630
select id, name from manager where id in (66,10135);
这是慢查询日志中的一条,用了372秒,锁了136秒,返回152行,一共查了263630行
如果日志内容很多,用眼睛一条一条去看会累死,mysql自带了分析的工具,使用方法如下:
命令行下,进入mysql/bin目录,输入mysqldumpslow –help或--help可以看到这个工具的参数,主要有
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
--verbose verbose
--debug debug
--help write this text to standard output
-v verbose
-d debug
-s ORDER what to sort by (t, at, l, al, r, ar etc), 'at' is default
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries
-a don't abstract all numbers to N and strings to 'S'
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
-i NAME name of server instance (if using mysql.server startup scrīpt)
-l don't subtract lock time from total time
-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。
Windows:
当你是第一次开启mysql的慢查询,会在你指定的目录下创建这个记录文件,本文就是mysqlslowquery.log,这个文件的内容大致如下(第一次开启MYSQL慢查询的情况下)
E:\web\mysql\bin\mysqld, Version: 5.4.3-beta-community-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
可以通过如下的命令来查看慢查询的记录数:
mysql> show global status like ‘%slow%’;
+———————+——-+
| Variable_name | Value |
+———————+——-+
| Slow_launch_threads | 0 |
| Slow_queries | 0 |
+———————+——-+
来自:http://www.cnblogs.com/lavandachen/articles/1929537.html
long_query_time=2
连接数太多,如果是服务器或者数据库负载太高的异常,如果让程序继续,会有逻辑上的处理会有问题的,那得throw一下异常,然后捕获它,这说明数据库的架构需要进一步优化了,在高并发上处理有问题。
一直以来积累了很多对MySQL优化的心得和经验,计划通过写日志的方式一步一步写出来分享给大家。
MySQL优化的第一步应该做的就是排查问题,找出瓶颈,而通常情况下的瓶颈和问题都需要通过观察MySQL的运行情况来进行分析,《查看MySQL运行状况》这篇文章罗列了一些常用的查看MySQL运行信息的方式。
而对于大多数的程序员来说,最容易发现并解决的问题就是MySQL的慢查询或者没有利用索引的查询,所以这里主要给大家介绍如何利用官方的mysqldumpslow工具方便的查看这些信息。如何打开MySQL的慢查询,请点击《打开MySQL的慢查询记录》。
mysql slow log 是用来记录执行时间较长(超过long_query_time秒)的sql的一种日志工具.
启用 slow log
有两种启用方式:
1, 在my.cnf 里 通过 log-slow-queries[=file_name]
2, 在mysqld进程启动时,指定--log-slow-queries[=file_name]选项
mysqldumpslow命令
/usr/local/mysql/bin/mysqldumpslow -s c -t 10 /database/mysql/slow-log
这会输出记录次数最多的10条SQL语句,其中:
* -s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
* -t, 是top n的意思,即为返回前面多少条的数据;
* -g, 后边可以写一个正则匹配模式,大小写不敏感的;
比如
/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log
得到返回记录集最多的10个查询。
/path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log
得到按照时间排序的前10条里面含有左连接的查询语句。
小结
使用mysqldumpslow命令可以非常明确的得到各种我们需要的查询语句,对MySQL查询语句的监控、分析、优化是MySQL优化的第一步,也是非常重要的一步。
————————————————————————————————————
mysql开启慢查询方法:
1,配置开启
Linux:
在mysql配置文件my.cnf中增加
log-slow-queries=/var/lib/mysql/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)
long_query_time=2 (记录超过的时间,默认为10s)
log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启)
log-long-format (如果设置了,所有没有使用索引的查询也将被记录)
Windows:
在my.ini的[mysqld]添加如下语句:
log-slow-queries = E:\web\mysql\log\mysqlslowquery.log
long_query_time = 2(其他参数如上)
2,查看方式
Linux:
使用mysql自带命令mysqldumpslow查看
常用命令
-s ORDER what to sort by (t, at, l, al, r, ar etc), 'at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string
eg:
s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序 -t,是top n的意思,即为返回前面多少条的数据 -g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log这个是按照时间返回前10条里面含有左连接的sql语句。
mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢?
其实打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加上如下代码:
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=2
注:
log-slow-queries 设置把日志写在那里,为空的时候,系统会给慢查询日志赋予主机名,并被附加slow.log. /var/lib/mysql/slowquery.log为日志存放的文件的位置,一般这个目录要有mysql的运行帐号的可写权限,一般都将这个目录设置为mysql的数据存放目录
long_query_time=2中的2表示查询超过两秒才记录.
如果设置了参数log-long-format,那么所有没有使用索引的查询也将被记录。在文件my.cnf或my.ini中加入下面这一行可以记录这些查询
这是一个有用的日志。它对于性能的影响不大(假设所有查询都很快),并且强调了那些最需要注意的查询(丢失了索引或索引没有得到最佳应用)
# Time: 070927 8:08:52
# User@Host: root[root] @ [192.168.0.20]
# Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630
select id, name from manager where id in (66,10135);
这是慢查询日志中的一条,用了372秒,锁了136秒,返回152行,一共查了263630行
如果日志内容很多,用眼睛一条一条去看会累死,mysql自带了分析的工具,使用方法如下:
命令行下,进入mysql/bin目录,输入mysqldumpslow –help或--help可以看到这个工具的参数,主要有
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
--verbose verbose
--debug debug
--help write this text to standard output
-v verbose
-d debug
-s ORDER what to sort by (t, at, l, al, r, ar etc), 'at' is default
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries
-a don't abstract all numbers to N and strings to 'S'
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
-i NAME name of server instance (if using mysql.server startup scrīpt)
-l don't subtract lock time from total time
-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。
Windows:
当你是第一次开启mysql的慢查询,会在你指定的目录下创建这个记录文件,本文就是mysqlslowquery.log,这个文件的内容大致如下(第一次开启MYSQL慢查询的情况下)
E:\web\mysql\bin\mysqld, Version: 5.4.3-beta-community-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
可以通过如下的命令来查看慢查询的记录数:
mysql> show global status like ‘%slow%’;
+———————+——-+
| Variable_name | Value |
+———————+——-+
| Slow_launch_threads | 0 |
| Slow_queries | 0 |
+———————+——-+
来自:http://www.cnblogs.com/lavandachen/articles/1929537.html
<div class="head_swf">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="900" height="181">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="/swf/menu.swf" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<embed src="/swf/menu.swf" width="900" height="181" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" wmode="transparent"></embed>
</object>
</div>