2009-06-29 Mon
用oramon将数据库的主要负载信息收集到了性能数据库, 用DataReport去显示这些性能数据时, 发现要写很多个SQL语句, 要不同的列显示一次, 例如要显示三幅图片(平均Load值, 用户CPU消耗, SQL执行次数)就得执行三个SQL.
WEBCHART.QUERY_1=SELECT TIME, LOAD FROM DATABASE_LOAD ...
WEBCHART.QUERY_2=SELECT TIME, CPUUSR FROM DATABASE_LOAD ...
WEBCHART.QUERY_3=SELECT TIME, EXECS FROM DATABASE_LOAD ...
其实DATABASE_LOAD是一个宽表, 可以一次查询出多个列的数据来, 几个图片可以共享一次查询的结果, 就可以减少数据库的执行次数, 提高页面访问速度. 如下所示, 只需要指定某个查询的SQL语句为减号.
WEBCHART.XCOL=TIME
WEBCHART.QUERY_1=SELECT TIME, LOAD, CPUUSR, EXECS
FROM DATABASE LOAD ...
WEBCHART.YCOL_1=LOAD
WEBCHART.QUERY_2=-
WEBCHART.YCOL_2=CPUUSR
WEBCHART.QUERY_3=-
WEBCHART.YCOL_3=EXECS
最近做了一次大的数据库改造, 用DataReport分析性能数据比较繁烦, 因此才注意到这个方面的性能提升.
Relative Posts:
2009-06-26 Fri
Michael Joseph Jackson,1958年8月29日-2009年6月25日
他是一个传奇,他同时也创造了一个传奇。13首冠军单曲,13届葛莱美奖(中文维基有误),7亿5千万的专辑销量,永远并且唯一的King of Pop。
在他走后人们为他同样创造了一个传奇,Twitter热榜前10几乎全是有关消息,Amazon上音乐销售排行前15名全是他的专辑,众多音像销售店内他的专辑售空,网络甚至因为相关消息而阻塞,众多电视台开始循环播放相关信息。
昨天是属于历史的,明天是属于未来的,今天是属于Michael Jackson的。
相关日志
2009-06-25 Thu
新花样北京6月25日电 “救救孩子,不能再让替党说话不替人民说话的信息在网上大行其道了。”
“请有关部门下大力气,动真格,彻底铲除媒体毒瘤。”
“如果能形成更多曝光、评议的平台,发动群众对媒体的日常运营进行监督,相信创建和谐文明的社会环境指日可待。”
……
在匿名人士发起的关于肃清媒体文革遗风与极左思潮的调查和话题论坛互动中,这样的网民留言很多,坚决支持我国采取更加有力的措施还媒体一片绿色空间。
此前,针对CCTV、人民网、新华网存在大量传播极左思想以及误导和虚假的内容,广大中国网民连日来对其提出了强烈谴责,要求国家有关部门对其进行处罚,并责令其立即进行整改,彻底清理政治群殴和恶意误导内容。
6月25日,匿名人士发起调查,就如何肃清文革遗风与极左思潮请广大网友表态并发表意见建议。
调查一推出就受到了的网民关注,他们积极参与投票和留言。截至目前,33%的网民坚决支持打击、整顿这些媒体的文革遗风;更有54%的网民认为,这些媒体正在自绝于人民;48%的网友投票求有关部门“健全法制,严格监管,该罚罚,该关关”。
媒体文革遗风与极左思潮泛滥早已成为公害,特别是在我国大力倡导践行社会主义荣辱观的环境下,一些喉舌仍然道德丧失,忘记了自己的社会责任,其颠倒黑白的行为遭到了网民的鞭笞,40%的网民认为这些媒体腐蚀社会,特别是未成年人,腐蚀性大,必须严惩不怠。
如何构建一个健康文明、替百姓说话的媒体环境,网民建议除了采取更加有力的措施治理整顿外,也希望垂死的媒体尽早死去,同时还强烈要求媒体行业尤其要加强自律。
新浪、搜狐、腾讯等网站有关负责人在接受本网采访时强调了媒体社会责任的重要性。
投票结果截屏(截止到25日19点) >>>>>>点击进入投票
一位家长留言说:我很气愤,一些不良媒体为了压制人民群众的声音,真是无所不用其极,这对我们的孩子是多么大的伤害啊!思想被这些垃圾媒体严重影响,注意力被引到这些恶心的东西上面,他们如何健康成长?
网友“央视高也”表示,CCTV、人民网、新华网似乎完全继承了姚文元的衣钵,弄得我至今心神不宁。
在本月17日,逯军局长对记者发表的“是准备替党说话,还是准备替老百姓说话?”的重要讲话发表之后,这些无良媒体不但没有任何悔改,反而变本加厉,更加嚣张,疯狂篡改、伪造民意。在网上网下人们对文革遗风与极左思潮“一片喊打”的时候,这些媒体的可耻行径,也让我们感到治理文革遗风任重道远。
(本文可与该文对照阅读。)
基于等待事件的性能调优方法, 自从提出来后就一直很管用, 很快就替换掉了根据命中率来调优的老方法. 当然oramon也同样关于等待事件的数据, 同样以10秒钟的频率计算出10秒内发生的等待事件数据, 并用如下格式保存.
06/25-15:23:44 206-49792:416125:83, 203-18279:89351:48, 157-8436:47502:56, 21-153:1438:93, 4-397:1360:34, 195-10382:906:0, 209-128:726:56, 210-26:514:197, 372-1409:24:0, 233-111:15:1, 207-1:10:100, 234-50:0:0, 152-2:0:0,
06/25-15:23:54 206-49756:414376:83, 203-18221:90461:49, 157-10301:52368:50, 4-448:1543:34, 209-161:1007:62, 21-180:973:54, 195-10376:926:0, 210-36:566:157, 372-1343:21:0, 207-2:13:65, 233-61:0:0, 234-50:0:0, 152-3:0:0,
每一个时间点一行, 按总等待时间降序排列各个事件的数据, 单个事件的格式为"事件号-等待次数:等待时间:平均时长", 需要注意的是平均时长的单位是万分之一秒, 而不是千分之一秒(毫秒). 可以从目标库(不同版本会有差异)中根据事件号来查询等待事件名称.
SQL> select name from v$event_name where event#=206;
NAME
--------------------------------------------
db file sequential read
象上面的例子中, 可以看到平均单块读的时间为8毫秒, 这个值可以用来评价OLTP系统的存贮响应时间. 利用10秒钟的等待事件数据, 帮我们发现了Oracle中超长log file sync等待的问题, 并成功绕过这个Bug, 有利于保持数据库系统的稳定运行.
Relative Posts:
2009-06-24 Wed
当我们真正遇到数据库的负载问题时, 一般都会有大量的活动会话,处理执行或是处于等待状态, 要解决问题或找出问题的根源, 就要知道那时这些活动会话在做些什到或等待什么? 在Oracle 10g中我们可以查询V$SESSION获得这些信息, 在Oracle 9i及更早的版本中, 则需要将V$SESSION和V$SESSION_WAIT关联起来.
oramon中就记录了这些信息, 记录的数据如下, 格式为"事件号:SQL Hash Value-会话数". 表示在某个时间点有多少个会话在执行这个SQL, 这些会话处理什么样的等待状态.
......
10/30-20:02:37 205:2815233029:1, 372:4160993935:1
10/30-20:02:47 205:1623840268:1, 372:1569451005:1, 372:4160993935:1
10/30-20:02:57 205:374916427:1, 372:3179818757:1, 372:4160993935:1
10/30-20:03:07 205:1623840268:1, 372:860679981:1, 372:4160993935:1
10/30-20:03:17 372:4160993935:1
10/30-20:03:27 372:270817213:1, 372:4160993935:1
10/30-20:03:37 372:4160993935:1
......
oramon每10秒执行一次查询并记录数据, 因此遇到问题时, 可以用记录的数据进行跟踪分析, 或进行事后分析. 为解决突发类的负载问题, 提供了有力的数据支持, 从我的经验中, 这些信息是非常有用的, 帮我找出了很多性能问题的根本原因, 从而切实解决了很多的问题.
Relative Posts:
Google被封, 苦了IT工作者, 没有了好的搜索来查找技术上面的资料, 预计中国的软件业会受到一定的影响. 百度有什么? 有的只是能让他赚钱的广告, 虚假的也好, 骗人的也好, 交钱就能被搜索到. 要找技术上的资料时, 百度上不管输入什么关键字, 前几页总有不相关的广告, 象街头的治牛皮癣广告, 在每个页面上都有, 而Google则能给出更多更准确更干净的搜索结果.
Gmail被封, Google被封, flickr被封, WordPress被封, 不如有人网上建议的, 那么怕民众得到外面的信息, 直接断了中国到世界的网络出口算了, 搞一个彻底的局域网算了, 国外的公司要通过网络宣传产品, 请到中国来成立一个公司, 然后在局域网内受严格监控下架设一个站点, 还能让工商局多收点钱, 对GDP做些贡献.
如果美国主动将到中国的网络断了? 或者一些大公司因为这个GFW直接放弃中国的市场, 我们真的就得到很多吗?
大禹治水都重在疏导, 不在于堵, 不在于GFW. 一方面从小教育我们这方面的道理, 另一方面却在不停地封, 只是因为少部份人可以搜索到某些不太好的内容, 就认为所有的人都没有判断能力, 人民都是刁民, 从网上得到的最多的只是是一些很想掩别人的耳盗别人的铃的丑闻, 其实大部份年青人已经将下半生卖给房贷, 卖给银行了, 那就闲情去关注太多额外的东西呢. 有些事情过去十几年, 甚至二十年了, 还能怎么样呢? 更严重是因为权力和财富的线性关系引起的上上下下左左右右不同财团之间的内部争斗而已.
说白了谁让你是IT工作者呢? 谁让你一定要用国外那些最先进的服务呢? 不如国内所有的IT工作者, 集体改行吧! 以后中国会多一个职业, 专门介绍国外互联网服务产品的讲师, 因为GFW无法亲自体验, 只能从声音中得到一点享受了.
Relative Posts:
2009-06-23 Tue
Oracle系统级的性能统计数据对于解决性能问题十分有用, 因此在8, 8i, 9i, 10g, 11g的发展过程中, 性能统计项一直在不断增加. 要充分发挥这些数据的作用, 关键是如何展示这些性能数据, 以利于性能问题分析, 例如关于Oracle中物理读的一些统计值.
SQL> SELECT name, value FROM V$SYSSTAT WHERE STATISTIC# IN (54,120,56);
NAME VALUE
------------------------------ ----------
physical reads 2373
physical reads direct 39
physical reads direct (lob) 0
如果只看绝对值, 是没有多少作用的, 从中看不到什么有用的信息.
20:10:24 SQL> select name,value from v$sysstat where statistic#=54;
NAME VALUE
------------------------------ ----------
physical reads 3340
......
20:10:36 SQL> select name,value from v$sysstat where statistic#=54;
NAME VALUE
------------------------------ ----------
physical reads 6371
执行两次, 差值(6371 - 3340 = 3031)表示Oracle在两次收集的12秒时间(20:10:24 to 20:10:36)内总共从磁盘上读取了3031个数据块, 平均每秒钟303个块, 就很好地告诉了我们数据库的物理IO压力情况. 用oramon可以将不同的性能指标数据和时间显示成二维矩阵, 方便我们查看和分析问题.
www.AnySQL.net Exec BGets RReq Read Writ Redo ...
11/27-20:15:47 54 206 15 15 0 0 ...
11/27-20:15:57 196 718 41 41 0 664 ...
11/27-20:16:07 64 637 19 61 0 6192 ...
11/27-20:16:17 17 16 0 0 0 0 ...
11/27-20:16:27 17 13 0 0 0 0 ...
11/27-20:16:37 16 6 0 0 0 0 ...
用oramon工具可以较高频率(10秒一次)来收集数据, 更容易抓取瞬间的数据负载变化, 通过分析这段时间的各个性能数据, 如: Exec=执行次数, BGets=逻辑读, RReq=读请求, Read=特理读, Writ=物理写, Redo=日志量, 等等, 便可以知道负载升高的精确原因, 从而去采取有效措辞.




