业界 | 信息 | 基础 | 配置 | 安全 | 系统 | 方案 | 协议 | 硬件 | 下载 | 制度 | 漏洞 | 解密 | 群集 | 论文 | 导购 | 数据库 | 反病毒 | 反黑客 | 白皮书 | 负载均衡 | Windows | Linux | Unix |
热门搜索:  安全  ?务器  IIS  VMWare  微软  企业  网络  黑客  win  sql RSS订阅
服务器安全资讯网

服安最新信息资讯

服务器安全资讯网

服安资讯热点推荐

服务器安全资讯网

服安资讯阅览排行

信息安全法律法规

服务器安全技术资讯

服安解决方案

INFORMIX FAQ大全

来源:服安资讯收集整理   时间:2008-09-07  作者:  点击:次  责任编辑:Flyfox
TAG:   文件 大全 可以 使用 这个 一个   服务器安全应急处理中心:让您的服务器更安全!  进入安全讨论社区 

摘要:
如何加快查询的速度? Question:为什么在一个有30000条记录并且建立有索引的表进行操作很慢,怎么办? 30000条记录并不是太多,你会感觉有慢不应该是记录数太
如何加快查询的速度?

Question:为什么在一个有30000条记录并且建立有索引的表进行操作很慢,怎么办?

30000条记录并不是太多,你会感觉有慢不应该是记录数太多的缘故,原因可能是每条记录太长,或者你的机器的性能十分低,不过还是有一些方法可能会对性能有所帮助:

1.更新统计信息(update satistics on tablename),这很容易作,并且有可能会带来性能的提高。

2.删除,然后再重新创建索引。这样作能够增加索引的连续性。但是要求是DBA或者有创建索引的权限。

3.ALTER INDEX idxname TO CLUSTER:这样作的目的是重新创建表并且通过索引来重新排列记录。结果是强制使记录在逻辑上连续,并且提高物理上的连续性。这样作的代价最大,但是效果最好。但是,一个表中只能有一个cluster index,并且,重新排列记录可能会强迫其他的查询使用其他的索引。作这种工作,你必须要为DBA或者有alter table 的权限。并且请注意,在你运行cluster index的时候,你必须要有足够的空间,因为在为一个表创建cluster index的时候,会拷贝表中所有的记录到一个临时表中,在临时表中进行排序操作,然后会删除原来的表,然后将临时表的名字改为原始表的名字。因此,如果这个表中的数据变化很大,如经常要进行大量的插入/删除的操作,这样作的好处就体现不出来。

应该使用online的mirroring功能吗?

Question:应该使用online的mirroring功能吗?

informix6.0以上的版本开始支持镜像(mirroring),镜像可以将相同的数据复制到多个磁盘上,当一个磁盘坏掉,online可以继续使用镜像磁盘来代替坏掉的磁盘。

一些操作系统(如HP-UX)也提供镜像的功能,还有硬件方式的镜像,三种镜像方式哪一种更好呢?


通常硬件镜像更好。因为它最快,然后是操作系统的镜像,最后才是ONLINE镜像。ONLINE镜像需要作一些逻辑上的运算,用于判断如何处理down掉的chunk。而是使用HP-UX或者硬件上的镜像不会出现这种情况。

HP的逻辑卷管理可以让你以“stripe"的方式将extents以轮转的方式分别存储在多个磁盘上。如果你使用数据分片策略,这也许会/也许不会带来性能的提高。

如果你使用HP-UX的磁盘镜像,在主磁盘繁忙的时候,读盘操作会被转移到镜像盘上,在磁盘负载很重的情况下,这会带来很大的性能提高。


关于NFS?

1.我们可以在远程主机上运行应用程序吗?(如C程序,shell scripts,perl scripts等等)运行的性能和在本地运行同样的程序相比如何?

由于NFS mounts远程主机上的文件系统到你的本地计算机,你可以象存取本地磁盘一样存取远程文件系统。这对性能的影响不大。

2.运行NFS需要什么软件?

只需要NFS和TCP/IP。

3.管理NFS是否困难?

主要的困难来自你必须要维护你的分布式文件的UID和GID必须要同步。使用NIS会使这项工作变得容易一点。


如何使用cron自动进行数据库备份?

echo '\n0' | tbtape -s 1 | head -100


如何知道一个表存在在哪些dbspace上?

以下是一些sql语句:

SELECT TRUNC(partnum/16777216) dbspace, COUNT(*) tables,

SUM(nrows) tot_rows, SUM(nrows*rowsize) bytes FROM systables

WHERE tabtype = 'T' GROUP BY 1 ORDER BY 1;


如果你在你的数据库中创建一个叫做'dbspaces'的表,然后将onstat -D的输出的dbspace名称放入这个表中,然后你就可以用:

SELECT dbs_name[1,12] dbspace,

COUNT(*) tables, SUM(nrows) tot_rows,

SUM(nrows*rowsize) bytes

FROM systables, dbspaces

WHERE tabtype = 'T'

AND dbs_no = trunc(partnum/16777216)

GROUP BY 1 ORDER BY 1;

输出为:

dbspace    tables  tot_rows  bytes

mcs_aaaaa   28    51     3715

mcs_catalog  22    2695    114810

mcs_eeeee   25    224     45446

mcs_fffff   32    1412    201445

mcs_mmmmm   35    165     262599

mcs_wwwww   28    449     79385


注意:(“byte"仅仅为数据的字节数,不包括索引和其他的开销)


怎样使用“informix”用户和"informix"组?

1.是否应该使用informix帐号来管理数据库,例如:grant/revoke权限,创建/删除表,dbload等等。

2.应该创建一个单独的帐号来作这些事情吗?为什么? 3.是否应该用informix帐号来管理数据库应用程序,并且将所有的用户置于这个组内,?

我们仅仅使用informix帐号来进行DBA的管理工作,而不是用它来做所有的事情,你应该有一个informix帐号和一个informix组,帐号和组都是唯一的。在informix组中只应该有informix一个用户。

我们有一个“应用”帐号,这个帐号是所有的非系统表的属主,并且用它设置所有的权限,拥有所有的资源,数据,和可执行目录和代码。这样做的目的是隔离数据管理和服务器管理两种不同的工作。DBA的功能是独立的,(并且只有一个人可以执行这个工作),如果你的数据库规模很大或者即将变得很大,你会体会到这样作的好处。如果你脱离这个原则,会出现严重的安全隐患。informix组内的其他用户可以执行INFORMIXDIR目录下的很多应用程序,而这些应用程序你一定不希望由他去执行。所以没有必要去冒险将所有的用户放在informix组中。    

如何知道数据库应用使用CPU的时间

通常在UNIX下面,可以使用time命令来得出一个进程说所占用的CPU的时间:

$ /bin/time test.4ge

real 9.0

user 1.6

sys .14

在这里,1.6+1.4 就是程序test.4ge所消耗的所有的CPU的时间。而“real”在这里不是特别重要。

然而在informix的环境中,time命令忽略了一个重要的方面,sqlturbo(数据库引擎)所使用的CPU时间。而且,如果你在一个应用程序中使用一个RUN语句,还要增加命令被RUN语句触发的时间。
顶一下
(0)
0%
踩一下
(0)
0%
服务器安全维护网:为您的服务器安全、稳定运行助航,提供服务器全方面的技术支持服务! 服务器安全资讯网(Fuancn.CN)登载此文仅为传递更多信息之目的,并不意味着赞同其观点或证实其描述。
  • 本文引用地址:双击复制发送给您的朋友!
  • 上一篇:Informix入门之---日志分析 下一篇:INFORMIX 培训教材

    - 关于本站 - 网站地图 - 百度新闻 - 版权申明 - 合作伙伴 - 安全服务 - 服安公告 - 常见问题 - 技术Q群 - 在线留言 - 联系我们 -