Archive for May, 2008

人蚊大战

Friday, May 30th, 2008

睡梦中,一架B-52隐形轰炸机离我越来越近,然后在我身上,射了两下。
唉··~··就这样,被迫醒了!!

When Rebuild INDEX?

Monday, May 26th, 2008

大家都知道analyze来分析统计信息,但是很少用来分析表或者索引是否有坏块。(主要是指逻辑坏块,不是介质坏块)。
其实analyze index?xx validate structure;对于DBA来说,还有另外的作用,就是何时该REBUILD INDEX;
范例如下:
@>analyze index ZEUS_CUSTOMER_AI1_OI_IND validate structure;
Index analyzed.
@>select name,height,lf_rows,del_lf_rows from index_stats;
NAME?????????????????????????????? HEIGHT??? LF_ROWS DEL_LF_ROWS
—————————— ———- ———- ———–
ZEUS_CUSTOMER_AI1_OI_IND??????????????? 3???? 941235???????? 691
@>
lf_rows表示这个INDEX有多少的叶子节点;
del_lf_rows表示有多少个叶子节点被删除了。
PS:说实话,在我管的几个系统里,物理删除真的很少,很少。

Earthquake

Monday, May 26th, 2008

5月12日下午地震,杭州也有感觉。那时候我正在敲数据库代码,忽然感觉脑子晃了两下。当时第一反应,我感冒药吃多了,下午犯困了。
看到对面的Jacky第一时间,跑到窗口看看,发生了什么。大家有点惊慌,有人说是地震了。我心理在想,是不是旁边国家电网在施工啊,这个也太夸张了,用那么大的力。后来大家都陆陆续续的下楼了,此时不得不佩服冷静的旺旺,还在分析情况。嘴里嘟囔着:“按道理说,杭州不是地震高发地带,不会发生地震的。”
到了创业楼下,抽了两根烟。看大家都陆续上楼了,我也上去了。看了新闻,确认真的是地震了!!!然后马上去1楼开会了,心想“我在1楼,不怕地震!”。最搞笑的是后面和吴笛他们开会,居然在后面的停车场开露天会议了。
晚上睡觉前,看了新闻,才知道是在四川,影响了很多人。发了封Mail给大师和奶妈,询问他们家怎么样(12点半了,怕打电话影响人家)。
还好我们TEAM的每个人,包括家人在这次地震中都平安!
希望大家都献出自己的爱心,捐款地址:
http://auction1.taobao.com/auction/item_detail-0db1-cdf1fe8d749b04ba0ac5ca3cdfe6ba6c.jhtml

大记录集驱动hash join导致额外物理读

Monday, May 26th, 2008

以前对hash join时应该用大记录集做驱动表还是用小记录集做驱动表一直存在疑虑, 直到最近做了一个实验, 才真正体会到其间的差别.实验过程如下.
用大记录集做驱动的执行计划如下:

———————————————————————————————————————————————————
| Id  | Operation              |  Name                | Rows  | Bytes |TempSpc| Cost  |
———————————————————————————————————————————————————
|   0 | SELECT STATEMENT       |                      |     1 |    12 |       |  1784 |
|   1 |  SORT AGGREGATE        |                      |     1 |    12 |       |       |
|*  2 |   HASH JOIN            |                      |  1820K|    20M|    31M|  1784 |
|   3 |    INDEX [...]

记一次BT的数据订正

Monday, May 26th, 2008

最近业务部门提出一个需求, 数据库里有些字段中保存的信息里全角和半角字符参杂, 影响市容, 要求做数据订正, 全部统一.
其中英文/数字/英文标点符号 都统一用半角字符, 而日文字符都统一用全角字符. 而且提出订正的字段中还包含一些clob字段.
 
那就函数+游标, 慢慢订正吧, 分析了一下, 要写四个函数:
1. varchar2数据类型的, 全角英文变半角.
2. clob数据类型的, 全角英文变半角.
3. varchar2数据类型的, 半角日文变全角.
4. clob数据类型的, 半角日文变全角.
 
开工:
第一个, 还好, 有现成函数: to_single_byte.
TO_SINGLE_BYTE returns char with all of its multibyte characters converted to their corresponding single-byte characters. char can be of datatype CHAR, VARCHAR2, NCHAR, or NVARCHAR2. The value returned is in the same datatype as [...]

一条Mysql上的Sql优化经历

Saturday, May 24th, 2008

前段时间一位同事收到某开发部门一位同事求助,希望帮忙优化一条Mysql的sql语句,大体如下:
select n.id ,nc.content
from news n force index (category1_status,category2_status,category3_status),news_content nc
where n.id=nc.id
and n.status=2 and (n.category_id_1 in (5003107,5003108)
or n.category_id_2 in (5003107,5003108)
or n.category_id_3 in (5003107,5003108)
调试的时候发现怎么都不能走index_merge的执行计划(我们所期望的),后来临时给他们一个union的解决方案。后来下班吃完晚饭后一起找问题,发现即使只有单个表,也没办法走到index_merge的执行计划,不管是加提示还是不加提示,调试过程如下:
mysql> explain select n.id ,nc.content
-> from news n force index (category1_status,category2_status,category3_status),news_content nc
-> where n.id=nc.id
-> [...]

test 代码高亮

Friday, May 23rd, 2008

select * from test where id=1005;
declare
begin
for c in ( select * from test) loop
dbms_output.put_line(’test’);
end loop;
end;
/
function test(){  alert(’test javascript code’);}

用法是在要格式化的文本中前后分别加入<coolcode lang=”"> 和</coolcode>
只要你在输入了脚本后选中脚本区域,在编辑器的html输入模式中按c-code按钮会自动生成
lang支持的格式有:
cpp
CSS
diff
DTD
HTML
java
javascript
mysql
perl
PHP
python
ruby
SQL
XML

网站终于恢复了

Thursday, May 22nd, 2008

网站总算重新可以访问了,感谢江枫同学提供的空间。不过因为备份不够及时,还是丢失了一些数据,请各位dx重新发帖。看来要加强对回帖内容的检查,避免一些不必要的麻烦。

阿里巴巴DBA出品