Archive for May, 2009
C# 线程正被中止
Monday, May 18th, 2009
C# 线程正被中止
oracle count计数的优化
Wednesday, May 13th, 2009
在9i,我们知道count(*)的时候,如果表上有pk,那count(*) 一定会走pk的。count(column) ,如果column指定not null,那count(column) 可以走上索引(通过试验证明,必须还要加上index提示才能走上索引)。但如果列上有空值,不管如何加提示,都走不上列上的索引(组合索引的非引导列除外)
count是否应该走索引,主要取决于count是否应该把空值算进来。所以, count(column) ,不管字段是否有null,都可以走索引。进而我们可以推论,如果表上存在一not null的字段,而且这个字段上有索引,表上即使没有pk,count(*)也可以通过扫描整个索引完成计数。在11g里面,oracle改进了策略。测试如下:
>create table test (col1 varchar2(32),col2 varchar2(32));
Table created
>insert into test
2 select id,member_id
3 from b where rownum<=10;
>select * from test;
COL1 COL2
——————————– ——————————–
477234 shenzhenxiechang
291004 shenzhoutouzi
345045 hgyingzi
212170 ntdongyi
493284 ntfashion
200282 rebecca123
1199257 szjinshuipos
629740 nttg
1512060 rich228
772466 nxyk
>create index col_ind on test (col1);
>create index co2_ind on test (col2);
Index created.
Index created.
>select count(col1) from test;
COUNT(COL1)
———–
10
1 row selected.
Execution Plan
———————————————————-
Plan [...]
ORACLE 11G使用全文索引
Tuesday, May 12th, 2009
在9i的时候,我们继承了donny的衣钵,一直使用下面的脚本创建:
start ?/ctx/admin/dr0csys password DRSYS temp
connect ctxsys/password
start ?/ctx/admin/dr0inst ?/ctx/lib/libctxx9.so
start ?/ctx/admin/defaults/drdefus.sql;
今天在搞11G的数据库,发现这招不灵了。需要使用下面的脚本创建:
–sys do it
START ?/ctx/admin/catctx.sql password DRSYS TEMP nolock ;
原来创建用户,初始化都在两个脚本里面的。现在都在一个脚本里实现了。
–ctxsys do it
start ?/ctx/admin/defaults/drdeff.sql;
这个没有明显变化,只是比原来的老版本多了一些不需要分词的单词。
建完以后,有这么个感想:
我仔细看了建全文索引用户和初始化的脚本,发现从2005年开始,这些脚本内容就没怎么变化过,不知道是不是ORACLE对这块也没多大精力去研究。
nmon工具的使用
Thursday, May 7th, 2009
nmon工具的使用
nmon工具是一个收集AIX或Linux主机的性能数据,并分析的工具,使用简单易用。
下载地址:
http://www-941.haw.ibm.com/collaboration/wiki/display/Wikiptype/nmonanalyser
工具分两个,一个是nmon采集数据的工具,一般名称为nmon_,例如nmon_aix5.3,另一个是分析结果的工具,这个工具是一个excel的文件,名称为:nmon analyser v33A.xls。
建nmon目录/nmon,在目录下建两个子目录/nmon/bin和/nmon/data目录,
把下载下来的nmon程序放到bin目录下,aix下的nmon可执行文件名称可能为:
nmon_aix53
在/nmon/bin目录下建一个脚本文件nmon.sh,内容如下:
#!/bin/ksh
# written by tangcheng 20090506 for nmon
BINPATH=`dirname $0`
NPATH=$BINPATH/../data
$BINPATH/nmon_aix53 -s300 -c288 -f -m$NPATH
-s300表示每300秒采集一次数据,
-c288表示采集288次,300*288=86400秒,刚好是1天的数据,这样运行一次这个程序就会生成一个一天的数据文件,
-m$NPATH表示生成的数据文件的路径
-f表示生成的数据文件名中有时间。
然后在crontab 中增加一条记录:
0 0 * * * /sysmon/nmon/bin/nmon.sh >/dev/null 2>&1
这样每天凌晨都会运行nmon,这样每天都会生成一个nmon文件。
生成的文件名为:myhost _090507_0000.nmon,“myhost”是这台主机的hostname。
把 生成的数据文件传到Windows机器上,用Excel打开分析工具nmon analyser v33A.xls,如下图:
Excel可能禁止运行宏了,点“安全警告旁边的选项”,允许运行宏:
然后再点Excel文件中的“Analyze nmon data”按钮,选取那个性能数据文件,这样就会生成一个分析后的结果文件:myhost_090507_0000.nmon.xls,用Excel打开生成的Excel文件就可以看到结果了。
SSD盘的性能初步测试
Wednesday, May 6th, 2009
吞吐量使用dd工具,随机IO使用我写的一个工具iopress。
一款MLC的SSD测试结果:
随机读IOPS:7074,响应时间14ms,随机写IOPS:3065,响应时间33ms。
dd的吞吐量:读129Mbytes/s,写73Mbytes/s
一款SLC的 SSD:
随机读IOPS:17832,响应时间5.6ms,随机写IOPS:13152,响应时间7.60ms。
dd的吞吐量:读222Mbytes/s,写182Mbytes/s
结论:随机读的性能MLC SSD是SLC SSD的2.5倍左右,随机写SLC SSD是MLC SSD的4倍多,所以虽然MLC的价格比SLC价格便宜很多,但是性能也差很多。
MLC SSD盘的测试过程:
[root ]#iopress 0 100 60 8192 /dev/rdsk/c0t1d0p0
Start to read data test…
Large file is supported,file /dev/rdsk/c0t1d0p0 size is 47103 Mbytes,blocksize is 8192.
IO count is 426900,Times is 60.34seconds,IOPS is 7074,mean response time is 14.13ms,Cpu is 0.49%
[root ]#iopress 1 100 60 8192 /dev/rdsk/c0t1d0p0
Start to write data test…
Large file is supported,file /dev/rdsk/c0t1d0p0 size is [...]
火箭居然把湖人给干了!
Tuesday, May 5th, 2009
太意外了!而且是湖人主场,火箭赢了湖人,真的很意外!
以前觉得没了麦蒂,火箭废了一半。现在觉得麦蒂无关紧要了,希望他下赛季交换出去吧。毕竟姚明已经30了,在NBA干了7年了,估计他也希望有个总关键戒指吧。还是巴特尔好,在马刺好歹拿了个总冠军的戒指。亚洲人第一次拿到NBA总冠军戒指。
另外我觉得去年引进阿泰斯特太重要了!记住阿泰,认识阿泰是因为他和大本钟那场打架认识的,从此我觉得此人非常的血性,很man!还有顽强的作风,我喜欢!
觉得湖人走了奥尼尔后,内线就 不行了,光有科比也孤掌难鸣啊!现在终于来了加索尔,有所好转,但是也难和奥尼尔的篮下统治力,相提并论。
其实火箭和湖人,我真的都挺喜欢的,谁让他们都在西部,唉,,,天妒英才啊!!
BTW:
请允许在alidba上发些非技术的东西吧。
浅析执行计划失效
Tuesday, May 5th, 2009
[原文]
Parsing is the process of:
* Translating a SQL statement, verifying it to be a valid statement
* Performing data dictionary lookups to check table and column definitions
* Acquiring parse locks on required objects so that their definitions do not change during the statement’s parsing
* Checking privileges to access referenced schema objects
* Determining the optimal execution plan [...]


