五个月

五个月,原由 Hello DBA 上載。

口水宝宝

口水宝宝,原由 Hello DBA 上載。

备份很重要

公司新发的DELL430笔记本还没用两周,硬盘就坏了,费劲周折才把数据备份出来,笔记本中的很多资料都是我很多年工作积累起来的,如果丢失的话,损失惨重。

这件事情发生后才发现,对于日常生活中的很多数据,基本上没有数据备份的意识,比如拍的照片,平时积累的学习资料,包括我的blog,好像从来都没作过任何备份。吃一堑长一智,从今天开始,所有重要的数据都保存两份。

关于wordpress的备份,今天在网上找了一个插件,wp database backup,可以定期备份wordpress数据库,并发送到你的邮箱中,挺方便的。不过好像备份出来的都是sql语句,没做过验证,不知道是不是可以真正恢复回去。

自娱自乐

今天把wordpress升级到2.6,并且把模板换成了K2,发现自己还是喜欢这种简单的风格。

我知道没人看我的blog,也没关系啦,就当是自娱自乐吧。

轩轩

最近鼠仔回老家避暑去了,杭州实在太热。照片是lp在家拍的,特可爱。

 

欢迎访问我的flickr:http://www.flickr.com/photos/hellodba

买了D40 肠子都悔青了

后悔买了nikon的D40,买的时候觉得自己刚入门,D40比较便宜。但是我忽略了D40最大的一个缺陷,没有机身对焦马达,现在才知道这个影响有多大,好多镜头不能用,只能使用nikon的AF-S或者适马的HSM镜头才能自动对焦,而nikon的AF-S镜头都不便宜,而且很多镜头根本就没有AF-S,比如定焦的50mm 1.8.

天下镜头,唯大(光圈)不破,套头的光圈确实太小了,用来拍拍风景还行,但是我的主要目的是给我们家宝宝拍照,想买一个定焦的大光圈镜头,50mm f1.8才700块,便宜量又足,准备买的时候才发现,镜头不带马达,用在D40上不能自动对焦,真是郁闷死我了,当时买的时候,怎么就没人告诉我呢。找了半天,只有适马的30mm f1.4可以用,要3000多块不说,而且适马的这个镜头有很多质量问题,不敢买。

发现腾龙出了一个17-50 f2.8的马达版本,或者适马有18-50 f2.8,D40都可以用,恒定光圈,焦段实用,拍人物和风景都不错,但是焦段和套头重复,觉得有点浪费,毕竟我还只是个初学者。

有时候,真想把我这个D40给砸了,nikon的脑子锈了吗?既然出了D40,D60,难道出个AF-S的定焦头那么难吗?

ORACLE 10g CBO的问题

第一个问题是bind peeking,很容易造成执行计划不稳定,SQL的执行计划可能会突然会变得很差,造成系统瞬间LOAD很高。
第二个问题是recost for order by,oracle往往会过高的估计排序的成本,从而忽略了索引的选择性,而选择一个避免排序的执行计划,通常这个执行计划都很差。

今天又碰到了这个问题,差点造成故障。由于应用的某个功能,需要对一个时间列gmt_create创建索引,当索引创建后(创建时带着compute statistics参数),一条sql的执行计划就发生了改变:

select * from
(select * from table where member_id=:1 order by member_id,gmt_create desc) where rownum<=100

oracle为了避免排序忽略了member_id上的索引,反而使用gmt_create时间列上的索引,走full index scan来避免排序。

我尝试对索引和列进行分析,都无法使这个sql走到正确的执行计划上,最终只好将这个索引删除。

相比较而言,9i的数据库几乎没有出现过这样的问题,应该是10g在CBO的计算上做了很多改变。

oracle提供了隐含参数,通过设置隐含参数_optim_peek_user_binds=FALSE,可以关掉bind peeking功能。

另外一个隐含参数,_sort_elimination_cost_ratio,描述是:cost ratio for sort eimination under first_rows mode.将这个参数修改为1,降低ORACLE计算order by的成本。这个参数默认是0。看解释有点恐怖:A value of 0 would mean that an execution plan with ORDER BY sort elimination be chosen even if it is more expensive than queries that do a final sorting.不知道ORACLE怎么想的,这个解释表明ORACLE认为排序的成本非常大,只要有机会都会尽量避免排序。

对于我们这种在线系统来说,一旦执行计划走错,系统不会给你太多时间作调整和尝试,负载通常在几秒钟就飙升到100以上,如果不迅速处理,系统很快就会宕掉。可能ORACLE也意识了这个问题,11g提供了Invisible Indexes和SQL Plan Management的特性,这样DBA在尝试做调整时,就算出现问题,我们也可以控制数据库,并有机会作尝试和调整,这对于OLTP系统来说,太重要了。

11g new features

我总结了一些看起来对我们有用的新特性

#PL/SQL
可直接定义序列变量 DECLARE n NUMBER := Seq.Nextval;
增强的正则表达式
PL/SQL CONTINUE statement:循环中,跳过本次循环,继续下次循环

Continue reading ‘11g new features’

人生四行

1.自己得行

2.别人说你行

3.说你行的人必须得行

4.身体得行

重新开始

今天接到了浙大工程硕士的录取通知书。有人问我:原来你不是读过研究生了吗?说起来实在不好意思,原来曾经读过北京理工大学的软件工程硕士,后来因为来杭州工作的关系,实在没精力两地跑了,只好放弃,当时虽然觉得挺可惜,但是并不后悔,毕竟还是工作的机会重要些。而且这种在职的研究生,也没学到什么东西,纯粹是学校骗钱的,一怒就给退了。

去年公司出了一个政策,可以送员工去浙大读书,学费4万由公司负担。虽然学不到什么东西,就当是混个学位,说不定以后有用,所以今年我就报名了。还好通过了考试,以后每周要去宁波读书了,希望这次不要半途而废。