存档

2009年5月 的存档

招聘数据仓库DBA(Oracle)一名,要求具备管理大型数据仓库的经验,工作地点:杭州。要求:
1.精通数据仓库数据库的性能优化。
2.熟悉RAC,ASM,10g,11g。
3.具备管理大型存储的经验。
4.必要的AIX和LINUX知识。
BTW:数据仓库的DBA还会接触到Greenplum数据库,还有我们自己搞的山寨存储系统。
有意向请发邮件到:freezr@gmail.com,并附上你的简历,我收到邮件后一般都会回复。招聘流程是:电话面试,公司笔试/面试,HR确认。
顺便说一句,MySQL DBA还在招聘中。
–EOF–
Before Sunrise The Family Stone divx

5 31st, 2009 | Filed under IT江湖
标签:

这篇文章的本意不是讨论logical standby,而是源于一个问题的讨论。最近,我们在做redo解析工具,目前redo已经解析得差不多了,现在需要把解析出的SQL应用的目标数据库中。我们知道,数据库在同一时刻,有很多事务在并发执行,而事务与事务之间是有相关性的。通过解析redo,我们实际上得到的是一个数据变化的“流”(或者可以看作一个SQL队列)。如果我们要保持在目标数据库上事务的顺序与主库完全一致,最简单的方法是用一个单一进程按照事务提交的顺序进行处理,假设有3个事务,commit的时间顺序为:T1,T2,T3,我们在解析redo的时候,如果没有发现commit,我们不会将SQL应用到目标数据库,当发现T1事务commit时,这时把T1事务的所有SQL全部应用并提交,然后是T2和T3。这种方法保证了事务提交的顺序与主库完全一致,而不用分析事务之间的相关性。但是这个方法的性能很差,由于只有单进程处理,而且只有在发现commit时,才能提交这个事务的所有SQL,如果T1事务很大,会堵塞T2和T3事务。看来这个方法行不通,我们先看看别人是怎么考虑这个问题的。
如何实现并行的SQL Apply系统?其实最关键的问题是分析事务之间的相关性,我们看看Oracle logical standby是如何实现的。

Reader:读取归档日志。
Preparer:将block change转换为LCR(logical change records),存放在shared pool的LCR cache中。
Builder:将LCR按照事务分组。
Analyzer:分析事务相关性。
Coordinator:为Applier分配事务。
Applier:应用LCR,commit。
从这张图,我们看到只有Preparer和Applier是并行的,其他都是单一进程处理。事务通过Preparer分析后,暂存在SGA的LCR cache中,通过Analyzer分析事务相关性,就可以把相关的事务分配给同一个Applier来应用,而不相关的事务就可以并行执行。
事务在应用时被分成两类:小事务和大事务,小事务在commit时一次执行,而大事务则被分成很多的Transaction Chunks,分批应用。这样做一是为了节省LCR cache,另外可以减少大事务在commit时等待的时间。
在SQL Apply的时候,也提出了检查点的概念。如果一个事务长时间不提交,而SQL Apply意外中止,那么要重新读取之前的archived redo log以获取这些信息,这是代价很高的,所以Oracle每隔一段时间会checkpoint这些未提交的事务,并记录SCN,如果这些事务最终回滚,则SQL Apply会将他们删除。
通过DBMS_LOGSTDBY.APPLY_SET(‘PRESERVE_COMMIT_ORDER’)可以设置事务执行的顺序,设置为true,则所有事务的提交顺序都与主库一致,设置为false,则只保证相关的事务的一致性。如果logical standby需要运行报表系统,对事务的一致性要求很高,需要设置为true。如果不要求事务的时间一致性,设置为false,性能会更好。
Oracle并没有详细介绍其内部实现细节,我们也无从得知,但是大致的原理应该大家都差不多。很明显,这套方案对于我们来说,尤其是分析事务的相关性和并发事务的分配,实现有些困难,毕竟我们还不是那么专业。所以我们实现了一个简单的方案,不分析事务的相关性,利用多个连接模拟SQL并发应用。还是刚才的例子,如果有T1,T2,T3三个事务并发执行,则我们通过三个并发连接根据SQL的执行时间顺序来处理,由于有多个进程同时处理,则不会出现大事务堵塞的情况,而且可以保证事务提交的时间一致性。但是在这个方案中,在同一时刻还是只有一个进程在处理,从宏观上看还是一个串行的系统,性能肯定要比完全并行的差一些。
从这个具体的问题跳开来看,其实解决问题的思路在很多地方都是相通的。这也是我一直倡导的从点到面,逆向思考的学习方法。学习知识,也许一开始我们关注的是某个命令,到后来我们关注其实现的原理,通过逆向思考的过程,理解其设计原理并不断得到启发,最终达到一通百通,无招胜有招的境界。
Kenny the movie
–EOF–

5 20th, 2009 | Filed under 大话技术
标签:

当我们碰到SQL的执行计划不正确的情况,可能会有几个选择:第一,通过调整统计信息来改变执行计划;第二,通过在SQL上加hint改变执行计划。但是某些情况下,系统中的SQL不能修改,调整统计信息也不能解决问题(分析统计信息也是一个风险比较大的操作,因为可能会影响到很多相关的SQL),这时我们就要用到一些调整或固化执行计划的方法,下面简要介绍以下三种方法:stored outline(9i),SQL profile(10g)和SQL plan baseline
Whisper rip
(11g)。 其实这三种方法从本质上说都差不多,Oracle根据SQL语句计算一个signature,用来标识这个SQL,然后为这个SQL施加一系列hint,以达到调整或固化执行计划的目的,并将其存入数据字典中。在SQL执行时,首先根据SQL的signature去数据字典中寻找对应的SQL,如果存在的话,则优化器会根据记录的hint来调整执行计划。 1.stored outline stored outline是Oracle 9i中提供的调整执行计划的方法。这里有一个小技巧:如果在生产环境中,我们不能通过调整统计信息让SQL生成正确的执行计划,这样就没有办法生成正确的outline,这时我们可以在SQL上添加hint,强制SQL走到正确的执行计划上,然后生成outline,由于此时SQL text发生了变化导致signature变化,需要直接修改outline的字典表ol$hints,交换两个hint的OL_NAME字段,用此方法来产生SQL的stored outline.
Before Sunrise movie download
2.SQL profile
Oracle 10g提出了SQL Tuning Advisor这个工具,其核心是Automatic Tuning Optimizer,它是Query Optimizer的一个扩展,我们都知道在SQL真实执行时,为了性能的考虑,优化器并不会分析所有可能的执行计划,而ATO则专门为了优化SQL而产生,其主要功能就是分析SQL语句,并给出一些提高性能的建议。
Oracle提供了一个包:dbms_sqltune,我们可以用这个包创建一个tuning task,通过Tuning Optimizer对SQL进行分析后,就可以产生一个SQL profile,用户可以选择接受这个profile,则SQL的执行计划会受到影响。SQL profile是影响SQL执行计划的一系列信息的集合,可能包括环境(参数)设置,统计信息,优化器估算的信息,hint等等。
我们可以看到相比stored outline,Oracle提供了dbms_sqltune这个包,通过Automatic Tuning Optimizer自动产生SQL profile,并且report_tuning_task可以为用户提供详细的报告,而且SQL profile中包含的信息也更多。但是SQL profile只能通过Oracle自动产生,没有办法“人工”创建。

3.SQL plan baseline
Oracle 11g推出了SQL plan baseline,最大的特点就是为SQL的执行计划加入了版本的概念,并且当执行计划发生变化时,允许用户对其进行控制,对于OLTP系统来说,这是个非常重要的特性。
首先系统需要收集SQL plan baseline,可以通过参数打开系统自动收集,Oracle提供了一个包,dbms_spm,也可以通过这个包从library cache中获取。每当SQL产生新的执行计划时,Oracle都会将其记录下来,但是这个执行计划并不会马上生效。每个SQL用SQL_ID标识,SQL plan baseline中包含这个SQL的若干个执行计划,SQL plan baseline用SQL_handle标识,每个PLAN都有plan_name和plan_hash_value。
Ferris Bueller’s [...]

5 13th, 2009 | Filed under 大话技术
标签:

Michael一周岁了,昨天爸爸妈妈带他去了动物园,晚上全家为宝宝开了一个生日party。
爸爸和妈妈希望宝宝永远健康快乐,快快长大!

Clownhouse movies

Memoirs of a Geisha dvdrip

–EOF–

5 6th, 2009 | Filed under 我的宝贝
标签:

关于如何选车这个话题,这是我的一位同事写的一篇文章。
一、文化篇
当前的主流有欧系、日系、美系三大阵营。其中欧系车以德系为主,辅以法国、意大利、英国、瑞典等分支派系。各有各的特点和风格,简述如下:
欧系车:
德国车代表了业界顶尖的造车工艺和科技,双B(BMW, Benz)、奥迪、大众、保时捷。除了大众,大都价格昂贵,非一般工薪所能企及。德国车总的来说,车身硬朗,结实,舍得用料,重视安全和科技含量,强调驾驶乐趣。但配置低,价格高,小毛病较日系车为多。
法国车以雷诺、雪铁龙、标致为代表,国内的雷诺不多,雪铁龙和标致已合为PSA集团,实为一家。法国车设计风格比较出位,浪漫,大胆,不拘一格。但工艺、技术、品牌等和德国车相去甚远,虽然也继承了一些欧系车硬朗的传统,但总的来说,除了外观设计,其他方面缺乏个性。当然,法国第一神车布加迪.威龙除外。
意大利盛产超跑,法拉利、兰博基尼、玛莎拉蒂,都是dream car。超跑离我们太遥远,和南汽分手后的菲亚特虽贴近老百姓,但菲亚特实在是不争气,在中国没造出一款好车来,不说也罢。
英国车成了没落的贵族,除了血统和品牌还在,都已落入人手。劳斯莱斯被宝马收了,宾利归了大众,路虎和捷豹居然成了印度车。英国车用料奢靡,质量一般,保有量少,维护成本高,发迹之前可不考虑。
瑞典的沃尔沃现为福特旗下,安全是其卖点,其他乏善可陈。萨博则属于快破产的通用,卖的是驾驶乐趣,但性价比不高,内饰粗糙,属极小众车型。
日系车:
总的来说,日系车性价比高,省油,配置高,做工精细,设计新潮,质量好,小毛病少。但很多国产的日系车喜欢偷工减料,做表面功夫,所以车身单薄、安全性差常为人诟病。日系车能在全球势如破竹,自有其过人之处。很多人选来选去还是选了日本车,为什么?性价比就是硬道理。
丰田已取代通用,稳居第一。丰田成本控制出色,性价比高,其最大的特点就是“中庸”,即没有特点就是丰田的特点,也许不能让所有人都喜欢,最起码大部分人都不讨厌。
尼桑(或日产)重视技术,早有“丰田的销售,尼桑的技术”一说。相比丰田,尼桑的价值取向有点不一样,就是对运动和技术的追求。这就是为何尼桑孜孜不倦的搞能干掉911 turbo的超跑GTR,而丰田就不乐意干这种低附加值的事情。
本田的设计是很有特点的,人性化,外观酷,内饰炫,实用,省油。但国内厂商偷工减料的恶习让人不敢恭维,断裂的雅阁、变成铁饼的飞度、两厢变一厢的CRV。。。
马自达秉承Zoom Zoom的造车理念,是日系车中的另类。硬朗的悬挂,犀利的转向,出色的过弯,对运动性的追求不遗余力,这点超过了大多数的欧系车。但车身单薄、车漆软还是日系车的通病,且发动机动力较弱有违其运动的本质——当然,这是国产化的必然结果。
三菱在中国比较失败,Lancer和Galant尤其是后者都卖的很不好。这和市场策略有关,不代表三菱不好,帕杰罗就是很经典的越野车,还有Lancer EVO更是经典中的经典,但过于暴力,且价格昂贵。
斯巴鲁的水平对置发动机和全时四驱是其法宝,运动诉求贯彻更加彻底,进口中国的车型也毫无保留,如经典的翼豹WRX STI。森林人在国内的销量不错,是一款各方面综合素质都不错的SUV。
顺便提一下韩系车,汽车发展史上不是主流,没有地位,但比美国车日子好过。靠抄袭模仿日本车起家,但很快也形成了了自己的风格。有日本车的优点,也有日本车的缺点,但缺乏个性。
美系车:
美国车已经日薄西山,但毕竟家大业大,收购兼并了众多厂家。美国人喜欢豪华,气派、舒适、大排量。但传统的美国车燃油经济性差,发动机技术落后,悬架软,缺乏驾驶乐趣等缺点直接导致其走向衰落。美国三大汽车家族体系和分支太庞大,不一一赘述。
市面上常见的销量不错的美系车,都是经过改良的。如福克斯整体上来看就是欧系风格,但内饰糙还是美国特色;别克凯越的原型车其实是韩国大宇的Nubira,韩系风格,比较契合东方人的价值取向;赛欧则是从德国欧宝的Corsa演变而来;福特的新蒙迪欧也采用了经济性和动力更好的马自达发动机。所以,美国车也在尽量与时俱进,也不乏很多可圈可点的车型。
二、进阶篇
1. 发动机
发动机是汽车的心脏,最重要的部件。购车者必须要了解参数有:
排量:排量就是发动机所有汽缸的工作容积之和,可作为区别汽车等级的重要标识,比如说1.6,就是1.6升,3.0就是3升;
汽缸数:常见的为4缸、6缸,更多的有8、12甚至16缸。汽缸排列方式一般为直列、V置、水平对置等,具体特点不再详述;
功率和扭矩:这是发动机最重要的两个指标。功率在中国的单位为KW(千瓦),某些国家使用PS(匹),1PS=0.746KW。功率好理解,即发动机的额定输出效能。扭矩的单位是N/M(牛/米),是发动机从曲轴端输出的力矩。
通俗点讲,功率决定了车子的极速,而扭矩决定了加速的快慢。在衡量发动机效率或优劣时,常用升功率来计算,如BMW 330发动机排量为3.0升,功率为190KW,扭矩为300NM,升功率则为190/3.0 = 63.3KW/L,这款发动机效率非常高,一般的车型通常在50左右,而本田S2000的发动机多年前就已达到了93KW/L。
发动机工况图:表示动机的特性,在哪些转速区间可输出最大扭矩。驾驶者掌握了其特性,就可以掌握合适的换挡时机,以获得最佳的加速体验。
涡轮增压(Turbo):涡轮增压发动机油耗低,功率和扭矩大,但平顺性不如普通自然吸气发动机,保养成本和故障率都略高。
总结:
发动机的选择最为重要。如市区代步,不追求极速和加速感受,可选择经济实惠的小排量,如小于1.6L还有购置税的减免;如追求驾驶乐趣,常跑高速,尽可能选择2.0以上排量,可以在各个速度区间获得较好的加速体验。
应尽可能避免选择技术陈旧低效率的发动机,如新宝来、速腾、帕萨特的2.0L那款,铸铁材质且不说,还是2气门,升功率只有44kw。
2. 变速箱
手动变速箱
手动变速箱重量轻,传动效率高,维护成本低,省油,有驾驶乐趣;但油离配合不好容易熄火,换档时机掌握不好容易导致发动机积碳或油耗增加;如遇堵车,频繁的起步会让驾驶者对手动档深恶痛绝。
自动变速箱
普通自动档
大部分车型使用普通自动档,从4速到8速不等。自动变速箱省心省力,容易驾驶,只需操控方向和油门即可;但其自重增加,传动效率低,油耗增加,无驾驶乐趣。对于少数初学者尤其是女性驾驶者,尤其要注意的是,千万不要误把油门当刹车,极度危险。
一般来说,档位越多,传动齿比越密,加速越平顺,油耗表现更好。在选车时,尽量避免选择只有4速的自动变速箱,至少要选5-AT。大众1.4的小Polo都装配了6速Tiptronic手自一体变速箱,相比之下,很多日系车太不厚道,刚上市的丰田RAV4,20多万的车价,居然还是4-AT。
CVT
CVT为无级变速,和普通自动变速箱不同的是,没有采用普通的齿轮传动,而是靠一个锥形的钢带传动,通过传动轮的直径可变来实现速比的变化。优点是无换档冲击,驾驶平顺,省油(相对自动档);但不适大扭矩的传递,容易打滑,且更加丧失了驾驶乐趣。多用于家庭型轿车,以舒适为主,在大马力的车型上极少采用。
双离合(DCT)
双离合综合了手动和自动的优势,换档速度极快,传动效率高,省油,在很多德系车上已经开始配备,如大众的DSG,宝马的SMG等。但价格昂贵,经济型车少有配备。目前国产迈腾是配备双离合的最便宜车型,年中将推出的6代Golf 1.4T+DSG也非常值得期待。其实双离合并非什么新技术,早在专业赛车上使用,近几年将其成本降低并民用化而已。
此外,手自一体变速器本质上还是自动档,可以一定范围内手动控制档位,但电脑还是会干预自动升降档位或断油保护,仅仅为乏味的自动档增加少许驾驶乐趣而已。
总结:
如选手动,一般都是5-MT,6-MT更好,但配备的车型不多;如选自动,则尽可能选择5-AT及以上的自动变速箱,最好有手动模式,如大众的Tiptronic 6-AT则比较经典;如在意驾驶的平顺感受,CVT也是不错的选择,如尼桑的轩逸和天籁。
3. 驱动方式
有两驱和四驱之分,两驱又分前驱和后驱。
一般车型以前驱为主,强调运动的车型和大型豪华车多使用后驱。普通驾驶过程中,无明显差异,激烈过弯时前驱容易转向不足,后驱则容易转向过度,四驱则比较均衡,稳定性好。
另外,在湿滑路面尤其是冰雪天,前驱相比后驱行使稳定性更好,后驱很容易甩尾,四驱最好。轿车采用四驱的不多,经典的有奥迪的Quattro,斯巴鲁的全系列车型,Acura的TL等。
如无明显偏好和特殊路况需求,如用来漂移或越野,则前驱足矣。
4. 制动及安全系统
ABS,EBD,ESP
如果ABS,EBD都没有的话,就不要出来混了,详细的原理和特点不讲了,大家可以Google一下。ESP(不同厂家名称有别)为车身稳定系统,一般在中级车上出现,尽量选择此装备,可以在失控的边缘拉你一把。但再好的安全装备都无法突破物理的极限,只是辅助性的被动安全措施。
碟刹和鼓刹
为降低成本,一般经济型轿车使用前碟后鼓,也有采用四轮碟刹的,如早期版本的Polo。鼓刹技术由来已久,成熟,成本低,制动力大,常用于大型货车。但散热不好,热衰减明显,响应慢;碟刹散热好,响应快,改装空间大,和ABS配合好,多用于轻型车辆。所以尽可能选择4轮都是碟刹的制动系统。
制动距离
100KM/h的时速到刹停,如果距离在40米左右是比较靠谱的数据。但厂商一般不会公布这个数字,除非以此为卖点,可以做到37米左右。
总结:
事关安全的装备,性命攸关,千万不能含糊。日系车往往在这些看不到的地方降低成本,往往在花哨的装备上下功夫。补充一点,安全驾驶最重要的就是养成好的驾驶习惯,练就过硬的驾驶技能,积累各种路况的行车经验。另外,安全带永远是最好的防护措施,比8个气囊更管用。
根据自己的经验,在8~40万区间,可推荐几款:
Polo、标致206/207 1.6(手动)、本田思域、本田锋范、福克斯(手动)、标致307(手动)、速腾1.8TSI、斯柯达明锐1.8TSI、丰田花冠、马6、马3 2.0(手动)、迈腾、锐志、BMW 325
(注:标注手动的车型,因其自动变速箱款为4-AT,故不做推荐AT)
作者背景:我们部门的老大,18年驾龄,曾驾车型逾百,追求速度和操控,热爱长途奔袭。

Elizabethtown release

–EOF–
我的汽车观和Dream car
Clownhouse dvdrip
爱车爱老婆的男人是好男人,Jacky也算一个吧。每天上爱卡论坛也是我的一大爱好,虽然没啥钱,折腾不起什么好车,每天开着我的206心情也挺舒畅的,但是自从有了Michael后,觉得车有点太小了,而且1.4的发动机动力太弱。
我的下一部车是什么?可以肯定的是一定不是日本车或者韩国车, 美国车几乎不可能,国产车的可能性也不大,选择欧系的可能性比较大,但是应该不会选择标志,看看206拉皮的207,还有老掉牙的307,其实法系车还是很有特色的,但是都让神龙给毁了,要不就是加个屁股,要不就是拉皮升级。为家人考虑,选择一辆SUV或者MPV是比较适合的,谁让我是顾家的好男人呢。看来看去,选择大众的可能性比较大,GOLF 6,Touran,Tiguan都是我喜欢的。大众的TSI的发动机不错,虽然在国产后去掉了机械增压,只保留了涡轮增压,但是在国产的发动机中还是非常优秀的一款。至于是选择MT还是AT,如果不考虑LP驾驶的问题,我还是会选择MT,因为在我的印象中,只有驾驶手动车才是真正的驾驶,而且手动变速箱几乎不需要维护,简单可靠。不可否认的是在拥堵的城市中开手动车确实有些累。所以如果你仅仅是城市代步,那AT要轻松很多。要纠正的一个观点是:手自一体变速器,只是在自动变速器上加入了“手动”档位的概念,本质还是自动变速箱,并不是AT+MT。大众的DSG双离合变速器,是最新的技术,动力反应直接,换挡迅速,不过价格估计比较高。如果不考虑价格,我会选择2.0T+DSG+四驱版本的Tiguan.
关于我的dream car,还是比较现实的,象法拉利这种超跑我都没敢想。如果有钱了,我一定会买一辆宝马,别说我俗,没有梦想的男人不是好男人,宝马不是暴发户的专利,DBA也可以开宝马(wanghai同学就开宝马),5系7系不考虑,宝马的精髓在3系,3系怎么也要到330吧,最好是敞篷的,此车适合我和LP出去兜风。越野车,我喜欢JEEP牧马人(曾经很冲动的想要买一辆怯懦机2500),可惜现在克莱斯勒就快要倒闭了,jeep也是前途未卜,此车用来和朋友们出去疯玩。SUV,选大众的Touareg,比宝马X5或者奥迪Q7低调,越野性能出色,安全性能好,此车用来跑长途旅游。再买一辆Mini Clubman S敞篷版,运动版本带涡轮增压的发动机,男人的大玩具,此车用来游西湖,吸引MM眼球,而且停车方便。最后选一辆上班专用车,Golf 6 GTI,把GTI三个字母抠掉,换成0.8,低调,还可以扮猪吃老虎。
这就是我,一个热爱技术也热爱生活的DBA。回到现实努力工作吧,为了梦想,拼了!

5 4th, 2009 | Filed under 一地鸡毛
标签: