文章

StatPress

Today: 6
Total: 12644
since Feb 14, 2009

mysql的一个小小的SQL能力限制

一个小地方
Incorrectly used table in subquery:
Error 1093 (ER_UPDATE_TABLE_USED)
SQLSTATE = HY000
阅读全文——共509字

关于oracle中的临时表

以下资料来源自 http://www.hellodba.com/Doc/Oracle_tmp_table_cache.htm
Global Temporary Table是Oracle 8i中出现的特性,可以用于存储事务或会话中的临时数据。它的出现大大方便了开发人员。但是在使用上面,由于它本身的特性,一直存在一些问题。
简单说一下临时表,它的数据只对调用它的会话可见,一个会话是无法访问其他会话中的临时表的数据。可以在创建时指定它是事务级的还是会话级的。它被创建在用户的默认临时表空间上,在创建时不会分配段,而是在会话中第一次insert的时候从零时表空间分配数据段。DML时,不会产生redo log,但是会产生undo log。并且无法生成临时表或者临时表上索引的统计信息(势必会影响CBO下的查询计划)。
阅读全文——共676字

Oracle数据库优化实例

这两天为某个单位调整Oracle数据库。主要是效率(和index)问题。通过实践对有些问题有更深入的认识,比如:

oemapp有很多有用的组件,可以看Top Session, Top SQL
联合索引对于不按第一个字段查询是没有用的。
阅读全文——共667字

Oracle10g的instant客户端(及ODBC)安装

Oracle10g提供了一个真正轻量级的客户端(下载地址),相比于9i来说,是一个很大的进步。9i的客户端需要一张光盘(500兆),记得当时我为了减少安装程序的尺寸,使用虚拟光驱,增量地方式向里面添加文件,最后得到一个100多兆的安装包。

安装过程:

阅读全文——共860字

2005年度RDBMS公司利润排名

Garnter的数据
Based on Total Software Revenue (Millions of Dollars)
Source: Gartner Dataquest (May 2006)

阅读全文——共1564字

SQL集合运算的通用替代方式

SQL-3标准中提供了三种对检索结果进行集合运算的命令:并集UNION;交集INTERSECT;差集EXCEPT(在Oracle中叫做MINUS)。在有些数据库中对此的支持不够充分,如MySql中只有UNION,没有其他两种。实际上这些运算都可以通过普通的SQL来实现,虽然有时有些繁琐。
假设有两个表(或视图)s,t,s中有两个字段sa,sb;t中有两个字段ta,tb;
差集EXCEPT:
PLAIN TEXT
阅读全文——共1571字

一个似乎不能用SQL写出的查询

假定有一个表lessons, 其中有SID,表示学生号;LID表示学生所选的课程号。要查出这样的学生号对,两个学生所选的课程(的集合)是一样的。
想了很长时间,似乎一条SQL无法完成这个工作,虽然也是一个比较自然的查询要求。
如果大家谁能想出来,欢迎指点。

阅读全文——共883字

数据库中的TOP-N问题

TOP-N问题是一个在实践中经常遇到的典型问题。问题可以定义如下,假设有一个表RANKS,其中包含一个主键字段ID,一个值字段SCORE。我们的问题是,按照值字段的次序只查询出排名在某个范围的记录。具体区分有如下几种:

M1:按照SCORE(增序)排序,排在最前面N位的记录(基本的TOP-N问题)。如果值字段出现重复(并列)时,也要准确地取出N条记录。
M2:按照SCORE(增序)排序,排在最前面N位的记录,并且包含所有与第N条等值的记录(返回记录数目可能大于N)。
阅读全文——共1640字

对实体进行分类

 如何对数据库中某类实体进行分类也是值得探讨的。
对数据库中某一类实体(经常是主要的实体,如产品)进行分类,传统的分类方式是单视角,可能加上多层次的分类。如汽车厂的产品这种实体,可能按照用途分为卡车,轿车,半成品等,然后轿车继续分为各种型号的。
在数据库表设计时,如果是单视角一个层次,可以直接在主表中加入一个固定长度的分类字段即可,再加上一个分类的描述表(元数据)。如果是多层次的(树状的),分类字段需要变长的,分类描述表中需要将上下级关系表示出来。
最近发现可以使用多视角的方式对实体进行分类,应该在实际中有更友好方便的应用。如汽车类产品,还可以按照价格,利润,甚至颜色进行分类。各个侧面互相正交。用户可以按照不同分类方式浏览和统计。这有些类似于数据挖掘的方式。
阅读全文——共478字

oracle中的连接与断开

CG中心的BS结构的应用系统,但WEB端程序有很大问题,每次页面操作都新建一个数据库连接,因此数据库端未断开的连接很多,甚至持续一天以上。
可以考虑修改java程序,但代价太大;或者使用共享服务器模式,不过据说有一定问题,也没有试。另外,到底linux能够承担多少操作系统进程,数目也不确定,大致在200左右。
今天过去看了看,想起来一个简单方法,设置用户的profile,然后设定idle time。但需要将初始化参数 resource_limit 置为true。
据查资料,即使是这样,超时后的连接不一定会被立即kill掉,而是会被标记为killed或者snipe状态,等待pmon进程来真正kill。而一旦用户操作这个超时连接,此连接将立即断开。
阅读全文——共422字