目前网络时间服务有哪几种协议?

目前网络时间服务有哪几种协议?,第1张

展开全部
新建C#应用程序,命名为OPC
Client,将OPCAutomationdll引用,如图。
using
OPCAutomation;
2
定义OPC的三个接口类OPCServer类、OPCGroup类和OPCItem类;
OPCServer
KepServer;
OPCGroups
KepGroups;
OPCGroup
KepGroup;
OPCItems
KepItems;
OPCItem
KepItem;
3
枚举网络OPC服务器
枚举OPC服务器用到GetOPCServers()函数
//获取计算机IP,计算机名称
IPHostEntry
IPHost
=
DnsResolve(EnvironmentMachineName);
if
(IPHostAddressListLength
>
0)
{
strHostIP
=
IPHostAddressList[0]ToString();
}
else
{
return;
}
//通过IP来获取计算机名称,可用在局域网内
IPHostEntry
ipHostEntry
=
DnsGetHostByAddress(strHostIP);
strHostName
=
ipHostEntryHostNameToString();//获取本地计算机上的OPCServerName
try
{
KepServer
=
new
OPCServer();
object
serverList
=
KepServerGetOPCServers(strHostName);
//枚举网络所有OPC服务器并写入ComboBox控件
foreach
(string
turn
in
(Array)serverList)
{
cmbServerNameItemsAdd(turn);
}
cmbServerNameSelectedIndex
=
0;
btnConnServerEnabled
=
true;
}
catch
(Exception
err)
{
MessageBoxShow("枚举本地OPC服务器出错:"
+
errMessage,
"提示信息",
MessageBoxButtonsOK,
MessageBoxIconWarning);
}
4
连接OPC服务器
try
{
KepServerConnect(remoteServerName,
remoteServerIP);
if
(KepServerServerState
==
(int)OPCServerStateOPCRunning)
{
tsslServerStateText
=
"已连接到-"
+
KepServerServerName
+
"
";
}
else
{
//这里你可以根据返回的状态来自定义显示信息,请查看自动化接口API文档
tsslServerStateText
=
"状态:"
+
KepServerServerStateToString()
+
"
";
}
}
catch
(Exception
err)
{
MessageBoxShow("连接远程服务器出现错误:"
+
errMessage,
"提示信息",
MessageBoxButtonsOK,
MessageBoxIconWarning);
return
false;
}
5
创建组和列出OPC服务器中所有节点
//创建组
try
{
KepGroups
=
KepServerOPCGroups;
KepGroup
=
KepGroupsAdd("OPCDOTNETGROUP");
SetGroupProperty();
KepGroupDataChange
+=
new
DIOPCGroupEvent_DataChangeEventHandler(KepGroup_DataChange);
KepGroupAsyncWriteComplete
+=
new
DIOPCGroupEvent_AsyncWriteCompleteEventHandler(KepGroup_AsyncWriteComplete);
KepItems
=
KepGroupOPCItems;
}
catch
(Exception
err)
{
MessageBoxShow("创建组出现错误:"+errMessage,"提示信息",MessageBoxButtonsOK,MessageBoxIconWarning);
return
false;
}
//列出OPC服务器中所有节点
//展开分支
oPCBrowserShowBranches();
//展开叶子
oPCBrowserShowLeafs(true);
foreach
(object
turn
in
oPCBrowser)
{
listBox1ItemsAdd(turnToString());
}

问题一:节点在电脑中什么意思 你是说网络中的节点吧节点(Node),也可称为结点或网点;节点可以是工作站、客户、网络用户或个人计算机,还可以是服务器、打印机和其他网络连接的设备。

问题二:在计算机网络中,节点和结点各指什么意思,请举几个例子,多谢啦 节点即使结点,不专业的说法就是结点。
交换机、路由器、PC机,服务器、网络打印机、IP电话、无线终端等供算是一个网络节点。

问题三:我们通常说的计算机网络中的节点的度是什么意思 节点是一个术语,代指一类设备。他们可以是主机(pc),服务器,也可以是构成传输网络的交换机,路由器,防火墙等等。
这么说,加入你访问百度,其实的数据就是先从你的pc,即第一个节点,发到交换机,第二个节点,再到网关,第三个节点,然后穿越isp的网络到达百度服务器。即沿途的所有设备都能称作节点,这是个抽闲的说法,是一个概述。
其实没必要纠结这个问题,他就是指设备,你就可以这么理解
结点的孩子结点个数即为该结点的度
度为0的结点叫叶子结点
总结点=叶子节点数+度为1的节点数+度为2的节点数

问题四:网络中的节点是什么意思 每一台连上网络的计算机都是一个网络节点
整个网络就是由这许许多多的网络节点组成的

问题五:电脑常识:节点的定义是?它的功能? 中文名称:节点 英文名称:node,panel point;pitch point;node 定义1:塔的若干部件的汇合点。 所属学科: 电力(一级学科) ;输电线路(二级学科) 定义2:在一对相啮合的齿轮上,其两节圆的切点。 所属学科: 机械工程(一级学科) ;传动(二级学科) ;齿轮传动(三级学科) 定义3:在网络拓扑中,网络任何支路的终端或网络中两个或更多支路的互连公共点。 所属学科: 通信科技(一级学科) ;通信原理与基本技术(二级学科) 在装修构造中,那些以一种或多种材料组合并通过某种造型所形成的连接点,常称作节点。它是交待设计造型的重要环节,同时也是体现设计细部的重要因素。在图纸中常以局部剖面的形式体现,重点交待尺寸、构造、材质等具体细节。 在CorelDraw等软件中,线段的两端为节点,节点以小方块表示。 在网络中,任何计算机或其它设备(如打印机)。 Internet上的任何计算机,一个主机(host)。 每一个工作站�网络传真机�网络打印机�档案服务器�或任何其它拥有自己唯一网络地址的设备都是节点。它们是怎样获得网络地址的呢�从网络卡那里获得。每一张网络卡在出厂的时候都会被厂家分配一个地址�使用者是不可能变更此地址的。 这样的地址安排就如我们日常的家庭地址一样�是用来区分各自的身份的。您的网络必须有能力去区别这一个地址有别于其它的地址。在网络里面�有很多资料封包会由一个节点传送到另一个节点�同时要确定封包会被正确的传达目的地�而这个目的地就必须依靠这个网络卡地址来认定了。 节点是一个很抽象和应用很广泛的概念,通俗的说就是某个大环境中的一个点或者一段,好比公交车线路中的一个站台。 [编辑本段]在程序语言中一、在XML语言中 节点是XML文件中有效而完整的结构的最小单元。内含标示组的节点,加上必要属性、属性值及内容,便可构成一个元素。节点的标志符。 例如: <Addresses> <Entry Type=Personal> <FirstName>Andy</FirstName> <LastName>Fickle</LastName> <Street>1234 Programmer Place</Street> <City>Bugsville</City> <State>CO</State> <Zip>82379</Zip> <Phone Type=Home>354-493-9489</Phone> </Entry> <Entry Type=Work> <FirstName>Betty</FirstName> <LastName>Masterson</LastName> <Phone Type=Work>937-878-4958</Phone> <Phone Type=WorkFax>937-878-4900</Phone> </Entry> </Addresses> 在这里Addresses是根节点,Entry是Addresses的子节点,在XML中节点的名称是区分大小写的。如上面的>

问题六:计算机网络中端节点的定义是什么 每一台连上网络的计算机都是一个网络节点 整个网络就是由这许许多多的网络节点组成的

问题七:计算机性能64个节点什么意思 64位计算机是指整机的硬件、软件性能�须均达到,一次能够并行处理的64位数据,这样的计算机才能称得上64位计算机。
CPU是计算机的大脑,它的运算速度,对整个机子起到至关重要的作出了用,CPU运算使用的是二进位制,O和1,一个O或一个1叫一位,8个位组成一个字节,2个字节组成一个标准汉字,处理的位数越高,表明其运算速度越快,通常我们说的64位 32位是指的处理器(CBU)一次能够并行处理的数据位数,目前8位、16位已很少用了,大多数使用的是是32位处理器,64位CPU也已陆续粉墨登场,但与之配套的其它的硬件和软件,目前上市的并不太多,急待开发,所说的64位计算机也只能是准64位计算机了。

问题八:计算机上联节点怎么知道!? 怎样查看本机到一个网站经过多少路由节点?一般路由节点数的多少决定了网络的稳定性,所以查询节点数能让我们及时了解到自己网络的情况。比如说我等百度没登上,我们可以通过节点数的反应请款来确定哪些节点链接超时。我们就以前百度的为例baidu *** 作如下
首先进入运行在里面输入cmd 然后回车进入命令指示符如图所示:
在上面的图中我们可以看见命令指示符的界面我们在此界面中输入相关文字就可以查看相关信息了。
在命令指示符里输入tracert baidu回车就可以看见自己的机器到百度的节点数,以及各个节点的情况是链接超时还是其他的情况,如图所示:
通过上图就可以看到节点数,一共有11个节点数其中有九个对应了不同的ip地址,其中还有两个链接超时,这其实也是一种对网络的跟踪, *** 作很简单的!

问题九:网络信息节点数是什么意思 信息点其实是这个网络能够搜网线钉那个插口的数目,如一栋楼,有四层,每层五个房间,每个房间有两个网线插口来算,那就有40个信息节点。说白一点就是我们可以插网线的那些插座的数目。

问题十:计算机二级中的根节点是什么 在计算机科学中,二叉树是每个节点最多有两个子树的树结构。有根二叉树还要满足根结点的度不大于2。根结点(root)是树的一个组成部分,也叫树根。所有非空的二叉树中,都有且仅有一个根结点。它是同一棵树中除本身外所有结点的祖先,没有父结点。根结点的深度为1。

DHCP地址数据库设计为树型模式,树根是自动分配到所有网段的地址池,树枝是子网的地址池,分到的IP就相当于叶子(这个比喻不错)。
配置DHCP服务器的具体 *** 作步骤如下:
Router:
router> en
router# conf t
Enter configuration commands one per line End with CNTL/Z
Router (config) #ip dhcp excluded-address 19216821 19216822
Router (config) #ip dhcp excluded-address 19216831 19216832//不用于动态地址分配的地址
route(config)# ip dhcp pool ipku //配置一个根地址池,IPku是地址池的名称,你可以采用有意义的字符串来表示
Router (dhcp-config) #network 19216800 25525500 //为所有客户机动态分配的地址段Router (dhcp-config) #domain-name Testcom //为客户机配置域后缀
Router (dhcp-config) #dns-server 19216811 //为客户机配置DNS服务器
Router (dhcp-config) #netbios-name-server 19216811 //为客户机配置wins服务器,没有可以不用配置
Router (dhcp-config) #lease 10 //地址租用期为10天,10天后地址被收回
Router (dhcp-config) #ip dhcp pool vlan1 //为VLAN1配置地址池,本池是ipku池的子池,将从ipku继承域后缀、DNS服务器、wins服务器等参数
Router (dhcp-config) #network 19216820 2552552550 //VLAN1动态分配1921682这个网段内可以被分配的地址
Router (dhcp-config)#default-router 19216821 //为客户机配置默认的网关,即VLAN1的IP地址
Router (dhcp-config) #ip dhcp pool vlan2 //为VLAN2配置地址池,本池是ipku池的子池,将从ipku继承域后缀、DNS服务器、wins服务器等可继承的参数
Router (dhcp-config)#network 19216830 2552552550
Router (dhcp-config) #default-router 19216831 //为客户机默认的网关,VLAN2的IP地址DHCP服务器就配置好了。
如何让PC机获得IP呢?
接下来配置单臂路由让Vlan之间通信。
Router(config)#inter fa0/01 //进入子接口
Router(config-subif)#encap dot1q 1 //封装Vlan1
Router(config-subif)#ip add 19216822 2552552550
Router(config-subif)#inter fa0/02
Router(config-subif)#encap dot1q 2
Router(config-subif)#ip ad 19216832 2552552550
Switch:
Switch> en
Switch# conf t
Switch(config)#inter fa0/0
Switch(config-if)#switchport mode trunk //配置成Trunk,因为要允许多个Vlan通过
Switch(config-if)#switchport trunk encap dot1q
Switch(config-if)#no shut
Switch(config-if)#inter fa0/1
Switch(config-if)#switchport mode access //配置成Access,并绑定Vlan1
Switch(config-if)#switch access vlan 1
Switch(config-if)#no shut
Switch(config-if)#switchport mode access
Switch(config-if)#swith access vlan 2
Switch(config-if)#no shut
Switch(config-if)#inter vlan 1 //配置Vlan的IP
Switch(config-if)#ip add 19216821 2552552550
Switch(config-if)#inter vlan 2
Switch(config-if)#ip add 19216831 2552552550
PC机:
在运行中用Cmd进入 MS-DOS
如果IP是自动获取,用
ipconfig /all //查看详细的配置
ipconfig /release //释放IP 变成0000
ipconfig /renew //租得IP
结果:Ipconfig /all
Ethernet adapter 本地连接:
Connection-specific DNS Suffix : write
Description : NVIDIA nForce Networking Controller
Physical Address : 00-16-EC-1F-A8-0B
Dhcp Enabled : Yes
Autoconfiguration Enabled : Yes
IP Address : 19216833
Subnet Mask : 2552552550
Default Gateway : 19216831
DHCP Server : 19216832
DNS Servers : 19216811
Lease Obtained : 2007年1月13日 17:37:09
Lease Expires : 2007年1月23日 17:37:09
可以在DHCP服务器上看到
sh ip dhcp binding //显示地址分配情况
Router(config)#do show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
Hardware address/
User name
192168266 01000c290a4163 Jan 13 2007 05:50 PM Automatic
19216833 010016ec1fa80b Jan 14 2007 05:37 PM Automatic
Router(config)#
相关的DHCP调试命令:

no service dhcp //停止DHCP服务[默认为启用DHCP服务]

sh ip dhcp binding //显示地址分配情况

show ip dhcp conflict //显示地址冲突情况

debug ip dhcp server {events | packets | linkage} //观察DHCP服务器工作情况

#说明:由csdn下载,原版为doc格式,有对应的xml表,不过还是应该对每个服务的数据库单独考虑需要的检查表格。
DB2维护手册
目录
DB2维护手册 1
一、 DB2日常维护日 *** 作 3
1、 检查管理服务器是否启动 3
2、 检查DB2实例是否已经启动 3
3、 查看表空间状态是否正常 3
4、 查看表的状态 4
5、 查看磁盘空间 4
6、 检查存储管理软件是否正常 4
7、 检查数据库备份是否正常 5
8、 检查归档日志是否正确归档了 5
9、 查看缓冲池的命中率 5
10、 查看当前运行最频繁的SQL,其命中率是否正常 5
11、 查看当前连接的应用程序,有没有非法连接 5
12、 检查有没有死锁 6
13、 对表和索引进行RUNSTATS 6
14、 检查表是否需要重组 6
15、 对需要重组的表进行重组 7
二、 DB2日常维护月 *** 作 7
1、 查看DB2日志 7
2、 检查备份和日志是否都保存好了 7
三、 DB2日常维护季度 *** 作 7
1、 通过快照监控器,查看系统性能如何 7
2、 数据库补丁级别 8
四、 注意事项 8
1、 不要删除活动日志文件 8
2、 注意交易日志存储空间 8
3、 按照系统的实际工作量配置日志空间 8
4、 设置正确数据库代码页 9
5、 检查许可证(LICENSE)安装情况 9
6、 创建数据库前调整好系统时间 9
7、 不要随便执行 CHOWN (CHMOD) –R (UNIX/LINUX) 9
8、 在归档日志模式下使用LOAD记得加NONRECOVERABLE参数 9
五、 附:以脱机方式重组表 9
六、 附:索引重组 10
七、 附:收集和更新统计信息的准则 11
八、 附:使用 CLP 捕获数据库运行状况快照 13

一、 DB2日常维护日 *** 作
1、 检查管理服务器是否启动
用ps命令查看是否有dasusr1后台进程
#ps -ef | dasusr1
请确保管理服务器已经启动,如果没有启动,则按以下步骤启动管理服务器:
 以管理服务器用户(UNIX默认是DASUSR1)登录
 发出db2admin start命令
 如果是HA环境,则要保证在脚本中正确配置了启动命令
2、 检查DB2实例是否已经启动
用ps命令查看是否有db2sysc后台进程
#ps -ef | db2sysc
也可以以DB2实例所有者登录,通过发出db2start命令来确保启动了实例(如果实例已经启动,则会告知SQL1026N 数据库管理器已激活;否则,将把实例启动起来)
3、 查看表空间状态是否正常
以db2实例所有者登录
#db2 list tablespaces show detail //在单分区上查看表空间的状态,正常返回0x0000
# db2_all list tablespaces show detail //在所有分区上查看表空间的状态
可以使用LIST TABLESPACES 命令确定连接数据库中表空间的当前状态,可以使用SHOW DETAIL选项查看表空间的详细信息。比如,我们连上SAMPLE数据库,执行list tablespaces show detail ,可以看到状态返回值是0x0000,此时,使用db2tbst可以查看状态编号对于的状态含义,具体语法如下:
db2tbst <tablespace state> 可以查看编号所代表的状态
db2tbst 命令接收十六进制的状态值,并返回相应的表空间状态。例如,命令 db2tbst 0x0008 返回 State = Load Pending 。而该十六进制的状态值反过来又是 LIST TABLESPACES 命令输出的组成部分。表空间的外部可见状态是由单个状态值的十六进制总和构成的。例如,如果表空间的状态是 Backup Pending和 Load in Progress,那么所返回的十六进制值就是 0x20020(0x00020 + 0x20000)
4、 查看表的状态
查询系统目录视图以获得关于数据库的有用信息。例如,下面的语句使用 NOT LIKE 断言,返回在 SYSCATTABLES 中有项的所有用户定义的表的名称,以及每个表的列数和表的状态(N = 正常;C = 待审核(check pending))
#db2 select tabname, colcount, status FROM syscattables WHERE tabschema NOT LIKE 'SYS%' ORDER BY tabname
也可以使用load query命令查看单个表的状态,比如对表TEST1,我们可以发出如下命令:
#db2 load query table test1
5、 查看磁盘空间
查看数据库活动日志目录是否已满,活动日志目录可以使用get db cfg查看,注意一定不要手工删除活动日志
#df -k
查看SMS表空间对应的容器目录空间是否满了
#df -k
查看DMS表空间中是否还有可用页
#db2 list tablespaces show detail //在单分区上查看表空间的是否还有可用页
# db2_all list tablespaces show detail //在所有分区上查看表空间是否还有可用页
6、 检查存储管理软件是否正常
请检查TSM或其他存储管理软件是否正常,以及磁带机是否运行正常。
7、 检查数据库备份是否正常
请查看TSM或第三方存储管理软件,看备份映像文件是否完整的保存到了磁带机上了,想在DB2上查看备份情况,可以使用LIST命令
# db2 list history backup all for 数据库名
8、 检查归档日志是否正确归档了
请确保活动日志目录下没有的日志文件都已经正确归档到了带机上(查看TSM或第三方存储管理软件)。
查看活动目录里的日志文件:
#ls -l
9、 查看缓冲池的命中率
# db2 get snapshot for bufferpools on 数据库名
查看缓冲池的命中率,看其是否低于95%(命中率越高越好)
10、 查看当前运行最频繁的SQL,其命中率是否正常
# db2 get snapshot for bufferpools on 数据库名 > logtxt
用grep命令查看" Number of executions"执行次数最频繁的语句,看其命中率是否正常。
比如:
grep -n " Number of executions" snapout | grep -v "= 0" | sort -k 5,5rn | more
11、 查看当前连接的应用程序,有没有非法连接
#db2 list applications show detail
看这些连接的情况,看有没有不合适的IP连上来,或者不被允许的第三方工具连上来,比如一些第三方工具连上来会对表进行锁定,影响业务系统正常运行,这个时候可以用FORCE APPLICATIONS (应用程序句柄)停下来。
12、 检查有没有死锁
# db2 get snapshot for all on 数据库名 > logtxt
用grep命令查看输出的文件中是否有死锁的记录,比如
grep -n "Deadlocks detected" logtxt | grep -v "= 0" | more
13、 对表和索引进行runstats
#db2 runstats on table 表名 and index all
对系统表以及变化比较频繁的表运行统计信息,建议写成shell脚本自动运行。
14、 检查表是否需要重组
使用REORGCHK命令,通过统计数据检查表是否需要重组,语法如下:
REORGCHK [UPDATE | CURRENT ]STATISTICS ON [TABLE SYSTEM| TABLE USER | TABLE ALL | TABLE table_name | SCHEMA schema_name]
UPDATE STATISTICS: 更新表的统计数据,根据该统计数据判断是否需要重组表
CURRENT STATISTICS:根据当前表统计数据判断是否需要重组表
TABLE table_name : 对单个表进行分析
TABLE ALL: 对数据库所有的表进行分析
TABLE SYSTEM: 对系统表进行分析
TABLE USER : 对当前用户模式下的所有表进行分析
#db2 reorgchk update statistics on table all
15、 对需要重组的表进行重组
#db2 reorg table 表名 //通过重构行来消除“碎片”数据
#db2 reorg indexes all for table 表名 //只重组索引
比如:
reorg table db2inst1org index by_id
将根据索引by_id,如果不加INDEX选项将重组表和所有的索引
reorg table db2inst1org index by_id use tempspace1
使用指定的临时表空间重组表

表重组完成后需要进行RUNSTATS。另外,记住在分区数据库环境中,如果想在所有节点运行命令,需要使用db2_all命令。
二、 DB2日常维护月 *** 作
1、 查看DB2日志
请至少每月查看一次db2diaglog文件,看其中是否有异常。
2、 检查备份和日志是否都保存好了
通过TSM或第三方存储管理软件,查看备份和归档日志是否都保存好了,在数据库级别查看备份,可以使用:
# db2 list history backup all for 数据库名
三、 DB2日常维护季度 *** 作
1、 通过快照监控器,查看系统性能如何
通过快照监控器,抓取数据库的信息,分析数据库性能是否合理:
# db2 get snapshot for all on 数据库名 > logtxt
2、 数据库补丁级别
# db2level
四、 注意事项
1、 不要删除活动日志文件
DB2 的活动日志文件不能被删除。一旦 DB2 的活动日志文件被删除,或者所在的存储设备出现问题,则不可避免地造成 DB2 数据库系统宕机。
2、 注意交易日志存储空间
在归档日志模式下,如果没有使用自动归档方式,则存储的日志文件会不断增多,有可能造成日志所在的文件系统空间满。 当这种情况发生时,会根据参数 BLK_LOG_DSK_FUL 的配置而有不同的现象:
1)如果该参数启用,则 DB2 数据库可继续读 *** 作,但是写 *** 作会挂起
2)如果该参数没有启用,则 DB2 数据库会停止工作
两种情况下,都需要到日志所在的文件系统添加了空间才恢复正常。
3、 按照系统的实际工作量配置日志空间
DB2数据库通过日志文件维护数据的完整性和一致性。DB2 数据库的日志空间可通过如下公式计算:
日志空间 = (主日志文件 + 二级日志文件) 日志文件尺寸
其中:
1) 主日志文件由参数 LOGPRIMARY 控制,
2) 二级日志文件由参数 LOGSECOND 控制
3) 日志文件尺寸由参数 LOGFILSIZ 控制
4) LOGPRIMARY + LOGSECOND < 256 (不同的 DB2 版本略有不同,请参看相同版本的 DB2 手册确认)
4、 设置正确数据库代码页
由于数据库的代码页在数据库创建之后是无法修改的,所以在创建数据库时一定要选择正确的代码页。
错误的数据库代码页会造成 JDBC/ODBC 访问时中文字段被截断(包括控制中心),这种情况需要重建数据库以修改数据库代码页。
从全局规划来说,如果应用需要访问多个数据库,那么这多个数据库的代码页应该是一致的。
5、 检查许可证(License)安装情况
许可证过期会造成不必要的服务中断,所以在 DB2 安装完毕后,建议检察许可的安装情况
6、 创建数据库前调整好系统时间
在数据库创建好之后,调整系统时间会造成数据库内部时间戳的异常。数据库中一些对象和时间相关,一旦时间不准确要调整需要很小心。错误的时间调整可能会造成很多问题,如:
1)某些对象失效,例如 :
SQL0440N,找不到具有兼容自变量的类型为 “<例程类型>” 的名为 “<例程名>” 的已授权例程
2)数据库日志逻辑错误 -> 宕机
3)常见错误 – 只调整时间,未调整时区
7、 不要随便执行 chown (chmod) –R (UNIX/Linux)
在实例目录下chown (chmod) -R 会造成
1) 在数据库服务器上 db2 connect to <dbname> 能连接上数据库
2) db2 connect to <dbname> user using 连接不上
8、 在归档日志模式下使用LOAD记得加NONRECOVERABLE参数
五、 附:以脱机方式重组表
以脱机方式重组表是整理表碎片的最快方法。重组可减少表所需的空间量并提高数据访问和查询性能。
必须具有 SYSADM、SYSCTRL、SYSMAINT 或 DBADM 权限,或者必须具有对表的 CONTROL 权限才能重组表。必须具有数据库连接才能重组表。
标识需要重组的表之后,可以对这些表运行 REORG 实用程序,并且可以选择对在这些表上定义的任何索引运行该实用程序。
1 要使用 CLP 重组表,请发出 REORG TABLE 命令:
db2 reorg table testemployee
要使用临时表空间 mytemp 重组表,请输入:
db2 reorg table testemployee use mytemp
要重组表并根据索引 myindex 对行进行重新排序,请输入:
db2 reorg table testemployee index myindex
2 要使用 SQL 调用语句重组表,请使用 ADMIN_CMD 过程发出 REORG TABLE 命令:
call sysprocadmin_cmd ('reorg table employee index myindex')
3 要使用 DB2 管理 API 重组表,请使用 db2REORG API。
在重组表之后,应收集有关表的统计信息,以便优化器具有最准确的数据来评估查询访问方案。
六、 附:索引重组
通过删除和插入 *** 作对表进行更新后,索引的性能会降低,其表现方式如下:
• 叶子页分段
叶子页被分段之后,由于必须读取更多的叶子页才能访存表页,因此 I/O *** 作成本会增加。
• 物理索引页的顺序不再与这些页上的键顺序相匹配(此称为不良集群索引)。
叶子页出现不良集群情况后,顺序预取 *** 作的效率将降低,因此会导致更多的 I/O 等待。
• 形成的索引大于其最有效的级别数。
在此情况下应重组索引。
如果在创建索引时设置了 MINPCTUSED 参数,则在删除某个键且可用空间小于指定的百分比时,数据库服务器会自动合并索引叶子页。此过程称为联机索引整理碎片。但是,要复原索引集群和可用空间以及降低叶级别,请使用下列其中一种方法:
• 删除并重新创建索引。
• 使用 REORG INDEXES 命令联机重组索引。
因为此方法允许用户在重建表索引期间对表进行读写 *** 作,所以在生产环境中可能需要选择此方法。
• 使用允许脱机重组表及其索引的选项运行 REORG TABLE 命令。
联机索引重组
在使用 ALLOW WRITE ACCESS 选项运行 REORG INDEXES 命令时,如果同时允许对指定的表进行读写访问,则会重建该表的所有索引。进行重组时,对基础表所作的任何将会影响到索引的更改都将记录在 DB2® 日志中。另外,如果有任何内部内存缓冲区空间可供使用,则还将这些更改放在这样的内存空间中。重组将处理所记录的更改以便在重建索引时与当前写活动保持同步更新。内部内存缓冲区空间是根据需要从实用程序堆中分配的指定内存区域,它用来存储对正在创建或重组的索引所作的更改。使用内存缓冲区空间使索引重组 *** 作能够通过这样的方式来处理更改,即先直接从内存读取,然后读取日志(如有必要),但读取日志的时间要晚得多。在重组 *** 作完成后,将释放所分配的内存。重组完成后,重建的索引可能不是最佳集群的索引。如果为索引指定 PCTFREE,则在重组期间,每页上均会保留相应百分比的空间。
对于分区表,支持对各个索引进行联机索引重组和清除。要对各个索引进行重组,指定索引名:REORG INDEX index_name for TABLE table_name
对于空间索引或多维集群(MDC)表,不支持采用 ALLOW WRITE 方式的联机索引重组。
注: REORG INDEXES 命令的 CLEANUP ONLY 选项不能完全重组索引。CLEANUP ONLY ALL 选项将除去那些标记为“删除”且被认为要落实的键。此外,它还将释放所有标记为“删除”且被认为要落实的键所在的页。在释放页后,相邻的叶子页将会合并,前提是这样做可以在合并页上至少留出 PCTFREE 可用空间。PCTFREE 是指在创建索引时为其定义的可用空间百分比。CLEANUP ONLY PAGES 选项仅删除那些标记为“删除”且被认为要落实的所有键所在的页。
使用 CLEANUP ONLY 选项对分区表的索引进行重组时,支持任何访问级别。如果未指定 CLEANUP ONLY 选项,则缺省访问级别 ALLOW NO ACCESS 是唯一支持的访问级别。
REORG INDEXES 具有下列要求:
• 对索引和表具有 SYSADM、SYSMAINT、SYSCTRL 或 DBADM 权限,或者具有 CONTROL 特权。
• 用于存储索引的表空间的可用空间数量等于索引的当前大小
在发出 CREATE TABLE 语句时,考虑在大型表空间中重组索引。
• 其他日志空间
REORG INDEXES 需要记录其活动。因此,重组可能会失败,尤其是在系统繁忙和记录其他并发活动时。
注: 如果具有 ALLOW NO ACCESS 选项的 REORG INDEXES ALL 命令运行失败,则会标记索引无效并且此项 *** 作不可撤销。但是,如果具有 ALLOW READ ACCESS 选项的 REORG 命令或具有 ALLOW WRITE ACCESS 选项的 REORG 命令运行失败,则可以复原原来的索引对象。
七、 附:收集和更新统计信息的准则
RUNSTATS 命令收集表、索引和统计信息视图的统计信息,以为优化器提供准确信息进行访问方案选择。
在下列情况下,使用 RUNSTATS 实用程序来收集统计信息:
• 当数据已装入表中且已创建适当的索引时。
• 当在表中创建新的索引时。如果自从上次在表中运行 RUNSTATS 以来尚未修改表,则只需要对新的索引执行 RUNSTATS。
• 当一个表已用 REORG 实用程序重组时。
• 当通过数据修改、删除和插入已大量更新表及其索引时。(此处所指的“大量”可能表示有 10% 到 20% 的表和索引数据受影响。)
• 在绑定性能非常重要的应用程序之前
• 当您想要比较当前和先前统计信息时。如果定期更新统计信息,则可以及早发现性能问题。
• 当预取量更改时。
• 当使用了 REDISTRIBUTE DATABASE PARTITION GROUP 实用程序时。
注:
在先前版本的 DB2® 中,此命令使用了 NODEGROUP 关键字,而不是 DATABASE PARTITION GROUP 关键字。
• 使用 RUNSTATS 实用程序来收集关于 XML 列的统计信息。 使用 RUNSTATS 仅收集 XML 列的统计信息时,将保留 LOAD 或上一次执行 RUNSTATS 实用程序已收集的非 XML 列的现有统计信息。如果先前已收集关于一些 XML 列的统计信息,则在当前命令未收集关于该 XML 列的统计信息时,将删除先前收集的 XML 列的统计信息;在当前命令收集了关于该 XML 列的统计信息时,将替换先前收集的 XML 列的统计信息。
要提高 RUNSTATS 性能并保存用来存储统计信息的磁盘空间,考虑仅指定应该收集其数据分布统计信息的列。
理论上,您应在运行统计信息之后重新绑定应用程序。如果查询优化器具有新的统计信息,则它可以选择不同的访问方案。
如果您没有足够的时间一次收集全部的统计信息,则可以运行 RUNSTATS 来每次仅更新几个表、索引或统计信息视图的统计信息,并轮流完成该组对象。如果对选择性部分更新运行 RUNSTATS 期间由于表上的活动而产生了不一致性,则在查询优化期间将发出警告消息(SQL0437W,原因码 6)。例如,如果执行 RUNSTATS 来收集表分布统计信息,以及在某个表活动后,再次执行 RUNSTATS 来收集该表的索引统计信息,则可能发生这种情况。如果由于表上的活动产生了不一致并且在查询优化期间检测到这些不一致,则发出该警告消息。当发生这种情况时,应再次运行 RUNSTATS 来更新分布统计信息。
要确保索引统计信息和表同步,执行 RUNSTATS 来同时收集表和索引统计信息。索引统计信息保留自上次运行 RUNSTATS 以来收集的大部分表和列的统计信息。如果自上次收集该表的统计信息以来已对该表做了大量修改,则只收集该表的索引统计信息将使两组统计信息不能在所有节点上都同步。
对生产系统调用 RUNSTATS 可能会对生产工作负载的性能产生负面影响。RUNSTATS 实用程序现在支持调速选项,在执行较高级别的数据库活动期间,可以使用调速选项来限制执行 RUNSTATS 的性能影响。
在分区数据库环境中收集表的统计信息时,RUNSTATS 仅收集执行该命令的数据库分区上的表的统计信息。将此数据库分区的 RUNSTATS 结果推广到其他数据库分区。如果执行 RUNSTATS 的数据库分区不包含特定表的一部分,则将请求发送到数据库分区组中包含该表一部分的第一个数据库分区。
收集统计信息视图的统计信息时,将收集所有包含该视图引用的基本表的数据库分区的统计信息。
考虑以下技巧来提高 RUNSTATS 的效率和已收集的统计信息的有效性:
• 仅对用来连接表的列或 WHERE、GROUP BY 以及查询的类似子句中的列收集统计信息。如果对这些列建立了索引,则可以用 RUNSTATS 命令的 ONLY ON KEY COLUMNS 子句指定列。
• 为特定表和表中特定列定制 num_freqvalues 和 num_quantiles 的值。
• 使用 SAMPLE DETAILED 子句收集 DETAILED 索引统计信息,以减少对详细的索引统计信息执行的后台计算量。SAMPLE DETAILED 子句减少收集统计信息所需要的时间,并在大多数情况下产生足够的精度。
• 当创建已填写的表的索引时,添加 COLLECT STATISTICS 子句来在创建索引时创建统计信息。
• 当添加或除去了大量表行时,或如果更新了收集其统计信息的列中的数据,则再次执行 RUNSTATS 来更新统计信息。
• 因为 RUNSTATS 仅收集单个数据库分区的统计信息,所以,如果数据不是在所有数据库分区中一致分发的,则统计信息将不太准确。如果您怀疑存在变形数据分发,则您可能想要在执行 RUNSTATS 之前使用 REDISTRIBUTE DATABASE PARTITION GROUP 命令来在各数据库分区之间再分发数据。
八、 附:使用 CLP 捕获数据库运行状况快照
可从 CLP 使用 GET HEALTH SNAPSHOT 命令来捕获运行状况快照。该命令语法支持检索运行状况监视器监视的不同对象类型的运行状况快照信息。
先决条件
必须具有实例连接才能捕获运行状况快照。如果没有实例连接,则创建缺省实例连接。要获取远程实例的快照,必须先连接至该实例。
过程
要使用 CLP 捕获数据库运行状况快照
1 从 CLP 发出带有期望参数的 GET HEALTH SNAPSHOT 命令。
在以下示例中,将在启动数据库管理器之后立即捕获数据库管理器级别运行状况快照。
db2 get health snapshot for dbm

2 对于分区数据库系统,可为特定分区捕获专门的数据库快照,或者为所有分区捕获全局的数据库快照。要对特定分区(如分区号 2)上的数据库捕获运行状况快照,请发出以下命令:
db2 get health snapshot for db on sample at dbpartitionnum 2
要对所有分区上的所有应用程序捕获数据库快照,请发出以下命令:
db2 get health snapshot for db on sample global
以下命令捕获的运行状况快照带有附加详细信息,包括公式、附加信息和运行状况指示器历史记录:
db2 get health snapshot for db on sample show detail

3 对于基于集合状态的运行状况指示器,可对所有集合对象捕获数据库快照,而不考虑这些对象的状态。常规 GET HEALTH SNAPSHOT FOR DB 命令返回所有集合对象,这些对象需要针对所有基于集合状态的运行状况指示器的警报。
要对列示了所有集合对象的数据库捕获运行状况快照,请发出以下命令:
db2 get health snapshot for db on sample with full collection


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13509206.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-21
下一篇 2023-08-21

发表评论

登录后才能评论

评论列表(0条)

保存