2008年5月28日 #

语录一

某天,停车,图方便随便停在路边,抱怨了两句,ld随即顶回一句:“只要有边就能停”

posted @ 2008-11-18 23:32 tacy lee 阅读(234) | 评论 (0)编辑 收藏

oracle 的lob & long

一直认为lob类型的性能要好过long,但是之前只了解到long的种种限制,oracle也是不推荐使用long类型,这几天由于一个项目问题,产品里面一个表字段用了long类型,分析下来操作long的时候,性能有所影响,想把它改成lob,就简单验证了一下

首先创建两个测试表:

create table test_long (a int primary key,b long);
create table test_clob (a int primary key,b clob);

用附件java代码,往两个表里面各插入100条数据,保证插入数据是一样的,lob字段长度为10k(如果小于4k,oracle可以把它保存到到表内,不会存储在表外,性能没有问题,这个我基本确定,而且我们应用中这个字段经常会超过4k)。

做一个简单查询对比一下:

SQL> set autotrace traceonly;
SQL> select * from test_clob where a=1;

统计信息
----------------------------------------------------------
        331  recursive calls
          0  db block gets
         69  consistent gets
          4  physical reads
          0  redo size
       1278  bytes sent via SQL*Net to client
        837  bytes received via SQL*Net from client
          5  SQL*Net roundtrips to/from client
         12  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL> select * from test_long where a=1;

统计信息
----------------------------------------------------------
        236  recursive calls
          0  db block gets
         43  consistent gets
          0  physical reads
          0  redo size
        675  bytes sent via SQL*Net to client
        531  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
          5  sorts (memory)
          0  sorts (disk)
          1  rows processed

对比一下,long开销比lob小,当然你可以把lob字段启用缓存,把4次物理读去掉,但还是多了(73-43)次逻辑读,update也试了一下,lob产生的redo比long大,就不列出来了,有兴趣的可以自己试试

测试下来,看来之前的认识不对,不确定的东西最好还是动手试试,当然对于新应用,还是不建议用long,毕竟oracle已经废弃它了。

testClobLong.java

posted @ 2008-06-24 01:18 tacy lee 阅读(443) | 评论 (0)编辑 收藏

杀掉服务器上的远程桌面连接

用远程桌面连接登入服务器的时候,你可能会经常碰到下面的情况:

mstsc-exceed-456x114

 

也就是说,服务器的连接数已经满了,很多时候,可能是别人异常断开连接,导致连接没有释放,一般这时候你需要去机房登入服务器断开连接,其实windows提供了tsdiscon命令来做这事情

posted @ 2008-06-22 17:12 tacy lee 阅读(454) | 评论 (0)编辑 收藏

通过保存错误页面到日志中解决一些后台看不到异常的错误

有时候,我们可能希望看到lr的出错页面:比如lr出错,但是后台服务器没有错误日志,这时候,我们希望能看到错误页面的内容来判断问题出在什么地方,但是lr没有提供类似的功能

我们可以通过一种变通的办法来实现:

首先找到你出错的页面,保存该页面到参数里面:

web_set_max_html_param_len(“2048”);

web_reg_save_param(“FILED”,”LB=”,”RB=”,”Search=Body”,LAST);

然后输出到日志里面: lr_output_message(”#######################################%s”,lr_eval_string(”{FILED}”));

修改lr run-time的几个设置:

1、Always send messages

2、continue on error (这样才能保证运行lr_output_message)

这样lr会把所有的lr_output_message输出保存到日志文件

当然你不要下载资源文件,否则保存到的就不是html页面了,可能是一个gif :(

最后,结合lr controller的错误信息,定位到出错的vuser id,查看该vuser的log文件就能看到错误页面了

非常有效的一个小技巧,用它解决了一个难缠的问题。

posted @ 2008-05-28 23:05 tacy lee 阅读(818) | 评论 (3)编辑 收藏