Tuesday, November 22, 2005

SQL Server 2000 数据库日志

SQL Server 2000 数据库对数据的事务会记录日志,并且能够根据日志回滚数据库操作,这个想必大家都知道。不过,如果日志变得很大,或者达到了限定的日志文件上限,就会对数据库产生较大的影响。

先来看看 SQL Server 2000 数据库日志文件的两种设定方式。


右下角可以设置日志文件的大小,上面一个选项是可以无限增大,后面一个选项是可以指定一个允许的最大值。数据库在运行过程中,这个日志文件会不断的增大,增大的速度视提供服务的压力而定。当这个文件达到预设的最大值时,任何数据库操作都会失败,会提示“无法写入日志”之类的报错信息;也可以允许这个文件无限增大,不过,当文件大到一定的程度,写入的效率会很低。笔者曾经遇到这个文件涨到 2.5 GB,在查明原因以前,整个系统莫名其妙效率降低很多,最后查到瓶颈在数据库。各种优化手段用上未果,最后发现日志是设置成无限增长的。把日志删除并把日志文件缩减后,问题解决。

因此,无论是让文件无限增长,还是设置文件最大值,都不可避免的遇到日志的删除和缩减问题。要缩减数据库日志,可以用查询分析工具 (SQL Query Analyzer) 运行如下命令:
DUMP TRANSACTION [db_name] WITH NO_LOG

然后如下图用“收缩数据库”(Shrink Database) 工具将删除后留下的空白空间收回。具体的:




然后选择“Files...”:


在“Database file”中选择日志对应的文件,一般是“[db_name]_Log”,“Shrink action”选择的第 4 项,将缩减的值设定为目前允许的最小值,然后点击“OK”即可。

Thursday, November 17, 2005

Tomcat 5.5 无法编译 Java 1.5 语法 JSP

Apache Jakarta Tomcat 5.5.x (笔者在 5.5.9 和 5.5.12 下遇到同样问题) 在安装过后,用默认配置,无法自动编译带有 Java 1.5 语法的 JSP,经过多方求证,问题是由其自带的 eclipse 编译器造成的。文档 http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jasper-howto.html 中说:
The Java compiler from Eclipse JDT in included as the default compiler. It is an advanced Java compiler which will load all dependencies from the Tomcat class loader, which will help tremendously when compiling on large installations with tens of JARs. On fast servers, this will allow sub-second recompilation cycles for even large JSP pages. This new compiler will be updated to support the Java 5 syntax as soon as possible.

Apache Ant, which was used in previous Tomcat releases, can be used instead instead of the new compiler by simply removing the common/lib/jasper-compiler-jdt.jar file, and placing the ant.jar file from the latest Ant distribution in the common/lib folder. If you do this, you also need to use the "javac" argument to catalina.sh.

由此可见,这个编译器 common/lib/jasper-compiler-jdt.jar 是不支持 Java 5 语法的,而 Apache Ant 工程中的编译器可以替代它解决这个问题,具体方法如下:
  • 将/common/lib/common/lib/jasper-compiler-jdt.jar 删除
  • 将 ant-1.6.x 发布的 ant.jar 拷贝到 /common/lib/
  • 修改 /conf/web.xml 文件,找到并修改如下内容,增加 compilerSourceVM 和 compilerTargetVM 两个设置:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

<init-param>
<param-name>compilerSourceVM</param-name>
<param-value>1.5</param-value>
</init-param>
<init-param>
<param-name>compilerTargetVM</param-name>
<param-value>1.5</param-value>
</init-param>

<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>

Sunday, November 13, 2005

建立“月蝎研究”分舵

上上个星期起心思想改版,今天终于抽空将技术方面的文章独立出来单独开了一个 Blog,名字暂且就叫“月蝎研究”,以后有灵感了再改。模板风格也没有换,现暂且这样吧,和“今日无大事”保持风格统一,也挺好的。

如果算上兼职的话,工作也有五、六年了,从一开始做纯静态 WEB,到后来研究 PHP (也做过一点 ASP,但不熟),到改行做 Java,同时分管配置管理 (SCM),到后来做系统设计,慢慢地还是积累了不少东西,也得到了不少同事朋友的帮助。做这个 Blog,一方面是想把平时觉得重要的东西总结出来和大家分享讨论,算是一个学习笔记;另一方面,也会摘抄一些相关的好的文章,以使得更多的人受益。

现在 blog.windia.net 这个域名在 Google 的 PageRank 已经达到了 5,很多关键词的搜索都非常靠前,从流量分析上来看,像“青城后山”、“石象湖”、“document.write()”、“月亮落在天蝎座”这些关键词的搜索结果都在第一页甚至第一位,因此为了巩固这个效果,让更多的人能够找到这里,让流量更加集中,所以没有单独开另外的二级域名,而是只开了一个子目录,用 http://blog.windia.net/tech/ 来访问,同时,RSS Feed 订阅的地址为 http://feeds.feedburner.com/gregtech,仍然是 Blogger 一贯的 ATOM 格式,新老朋友们多多支持哦…… ^_^