北大青鸟分享关于计算机知识讲解

北大青鸟分享关于计算机知识讲解,第1张

在计算机软件开发领域,如果不认识其他设计师写的开发文档,那么对于我们的工作来说,反而是更加麻烦。今天,我们就北大青鸟的老师给大家简单介绍一下关于开发系统的一些计算机基本知识。

1、服务器

Server,计算机的一种,是为客户机(client)提供服务的高性能的计算机。和普通电脑不同的是,服务器面向的整个网络的用户,24h不间断工作,在多用户多任务的环境下,所以需要极高的稳定性。此外,在处理能力、安全性、可靠性、可用性、可扩展性、可管理性方面也十分强悍。

此外,服务器有很多类型,按照应用功能来划分,服务器一般分为文件服务器、打印服务器、域控制服务器、数据库服务器、邮件服务器、WEB服务器等等。服务器价格一般比较昂贵,所以一般大型的公司都会自己搭建服务器,普通的企业一般租用服务器。

2、数据库

Database,简单说就是存放、管理数据的仓库。一般分为关系型数据库、非关系型数据库两种,前者最为常见。

关系型数据库,处理表与表间的结构,是由二维表(表的形式类似于excel)及其之间的联系组成的一个数据组织。常用的关系型数据库有MySql,Oracle等。MySql最基本的 *** 作:增删改查,大家可以自学,多多练习,灰常简单。

非关系型数据库:以对象为单位数据结构。这一类型,平时用的较少,所以大家可以专攻关系型的数据库哦~~

3、缓存

计算机处理数据时,考虑到数据存储空间的压力、查找速度、数据使用率等等,所以就有了缓存。

缓存(数据交换的缓冲区,即Cache),简单说就是存储数据的临时地方,存储一些高频数据的副本。可以这样理解,当某一硬件要读取数据时,首先从缓存中查找需要的数据,找到了就直接执行,找不到的话再从内存中找。由于CPU的缓存的运行速度比内存快得多,所以缓存的目的就是提高响应速度,减少服务器压力。

1Oracle 数据缓冲区块的状态有:Free、Pinned、Clean、Dirty。

2一般书中所谓的"灰数据缓冲区"是Dirty的翻译。也有称之为脏数据。

3服务器进程在缓冲区高速缓存中记录回退和数据块的更改,数据库写入进程(DBW0) 将灰数据缓冲区从数据库缓冲区高速缓存写入数据文件,它确保有足够数量的空闲缓冲区,即当服务器进程需要读取数据文件中的块时,可以覆盖的缓冲区在数据库缓冲区高速缓存中可用。由于服务器进程只在缓冲区高速缓存中进行更改,因此数据库性能得到改善,而且DBW0 延迟写入数据文件直到发生下列事件之一:

A灰数据缓冲区的数量达到阈值。

B当进行扫描而无法找到任何空闲缓冲区时进程扫描了指定数量的块。

C出现超时每三秒。

D 出现检查点。(检查点是使数据库缓冲区高速缓存与数据文件同步的一种方法)

ASP方法

<script language="vbs" src="spellcodevbs"> </script>

'获取客户简称的拼音缩写

<%

function getpy()

dim str

dim i

str=documentalltxtContactNamevalue

dim ret

for i=1 to len(str)

ret=ret&getpychar(mid(str,i,1))

next

documentalltxtSpellCodevalue=ret

end function

getpychar=char

end if

end function

spellCodevbs

'获取汉字拼音第一字母

function getpychar(char)

dim tmp

tmp=65536+asc(char)

if(tmp> =45217 and tmp <=45252) then

getpychar= "A"

elseif(tmp> =45253 and tmp <=45760) then

getpychar= "B"

elseif(tmp> =45761 and tmp <=46317) then

getpychar= "C"

elseif(tmp> =46318 and tmp <=46825) then

getpychar= "D"

elseif(tmp> =46826 and tmp <=47009) then

getpychar= "E"

elseif(tmp> =47010 and tmp <=47296) then

getpychar= "F"

elseif(tmp> =47297 and tmp <=47613) then

getpychar= "G"

elseif(tmp> =47614 and tmp <=48118) then

getpychar= "H"

elseif(tmp> =48119 and tmp <=49061) then

getpychar= "J"

elseif(tmp> =49062 and tmp <=49323) then

getpychar= "K"

elseif(tmp> =49324 and tmp <=49895) then

getpychar= "L"

elseif(tmp> =49896 and tmp <=50370) then

getpychar= "M"

elseif(tmp> =50371 and tmp <=50613) then

getpychar= "N"

elseif(tmp> =50614 and tmp <=50621) then

getpychar= "O"

elseif(tmp> =50622 and tmp <=50905) then

getpychar= "P"

elseif(tmp> =50906 and tmp <=51386) then

getpychar= "Q"

elseif(tmp> =51387 and tmp <=51445) then

getpychar= "R"

elseif(tmp> =51446 and tmp <=52217) then

getpychar= "S"

elseif(tmp> =52218 and tmp <=52697) then

getpychar= "T"

elseif(tmp> =52698 and tmp <=52979) then

getpychar= "W"

elseif(tmp> =52980 and tmp <=53688) then

getpychar= "X"

elseif(tmp> =53689 and tmp <=54480) then

getpychar= "Y"

elseif(tmp> =54481 and tmp <=62289) then

getpychar= "Z"

else '如果不是中文,则不处理

getpychar=char

end if

end function

%>

调用这段函数就可以了

日志缓冲区Log_buffer是Oracle专门用于存入重做日志的内存区域。

数据库启动时,可以看到:

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 85006980 bytes

Fixed Size 453252 bytes

Variable Size 46137344 bytes

Database Buffers 37748736 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

数据库已经打开。

Redo Buffers就是分配给Log_buffer的内存大小。

对日志缓冲区的大小,可以从下面的视图中查询的到:

SQL> select from v$parameter;

也可以

SQL> show parameter log_buffer

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

log_buffer integer 524288

从这儿查询出的数据,是在配置文件中配置的数据,配置文件有:SPFILEORA92ORA,INITora92ORA等。

这个值和真实的日志缓冲区的大小不同。如果要知道真实的Log_buffer的大小,可以用下面的方法查询:

SQL> select from v$sgastat where name ='log_buffer';

POOL NAME BYTES

----------- -------------------------- ----------

log_buffer 656384

上面的这个值,是Oracle的SGA实际分配给Log_buffer的大小。

另外,还可以从 v$sga中查询:

SQL> select from v$sga;

NAME VALUE

-------------------- ----------

Fixed Size 453252

Variable Size 46137344

Database Buffers 37748736

Redo Buffers 667648

这个值也就是Oracle启动时分配给Log_buffer的大小。

那这个值为什么和实际的大小有差别呢?

SQL> select (667648-656384)/1024 ||'K' from dual;

(66

---

11K

相差11K,那这11K干什么用呢?

这11K是Oracle为了保护Log_buffer,分配出来的日志保护页。

第一章

人类社会活动的三大要素是能源、物质和信息。

信息是现实世界各种事物的存在特征、运动形式以及不同事物间的相互联系等诸要素在人脑中的抽象反映,进而形成概念。是一个抽象的概念。信息源于客观事物,而后通过人们加工处理再控制客观事物,从而达到认识世界,改造世界的目的。数据本质上是对信息的一种符号化表示,即用一定的符号表示信息。符号是由人为而定,在计算机中通常使用0和1这两个符号。信息和数据,既有区别,又有联系,数据是信息的载体,用来载荷信息,信息是数据的内涵,数据处理本质上就是信息处理。

从已知数据出发,参照相关数据,进行加工计算,产生出一些新的数据,这些新的数据又表示了新的信息,可以作为某种决策的依据,这一过程就是数据处理过程。数据处理的任务不是计算,而是管理数据。数据处理本质上就是信息处理。数据的收集、整理、组织、存储、查询、维护和传送等各种 *** 作,是数据处理的基本环节,是任何数据处理任务必有的共性部分。

数据管理大体上可分为自由管理阶段、文件系统阶段和数据库系统阶段。

文件是 *** 作系统管理数据的基本单位,文件可以命名,通过文件名以记录为单位存取数据,不必关心数据的存储位置。若干记录的集合称为文件。

描述事物性质的最小数据单位是数据项。记录是若干数据的集合,一个记录能表达一个具体事物。

在数据库系统阶段,数据库技术具有以下五个特点:数据结构化、数据共享、减少了数据冗余、有较高的数据独立性和提供了方便的用户接口。文件系统与数据库系统的区别是数据结构化。

数据库系统由数据库、支持数据库运行的软硬件、数据库管理系统和应用程序等部分组成。

DB是存储在磁盘等外部直接存取设备上的数据集合,是按一定的数据结构组织起来的,数据库是一个结构化的数据集合,主要是通过综合各个用户的文件,除去不必要的冗余,使之相互联系所形成的数据结构。(结构化的、有联系的数据集合)

数据库系统中的硬件是数据库赖以存在的物理设备,包括CPU、存储器和其他外部设备。

数据库系统中的软件是指数据库管理系统。-用于数据管理的软件系统

数据库管理系统简称DBMS,是是数据库系统的关键组成部分,是专门用于数据管理的软件。任何数据 *** 作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在DBMS管理下进行的。DBMS是用户与数据库的接口,应用程序只有通过DBMS才能和数据库打交道。

DBA是指数据库管理员,其职责是维护和管理数据库,使之始终处于状态。

UWA:用户工作区,是用户程序与系统缓冲区交换数据的场所。用户只能对UWA中的数据进行处理,其数据是DBMS根据用户的请求装进去的。

DD:数据字典,其中存放着数据库三级结构的描述以及各数据项的类型、值域和关键字等,从结构上对数据的语言和数值范围加以约束。

计算机系统中任何软件必须在 *** 作系统的支持下才能工作。

1975年SPARC公布了数据库标准报告,提出了数据库三级组织结构,称SPARC分级结构,从内到外分三个层次描述,分别称为内模式、概念模式、外模式。

概念模式,简称模式,是对数据库的整体逻辑描述,并不涉及物理存储,故称为DBA视图。

内模式,又称存储模式,具体描述了数据是如何组织存储在存储介质上,是系统程序员用一定的文件形式组织起来的一个个存储文件和联系手段。故称内模式为系统程序员视图。只有内模式才是真正存储数据的。

外模式通常是模式的一个子集,又称子模式,外模式面向用户,是用户眼中的数据库,称外模式为用户视图。

数据库系统的三级结构中,总体观和存储观有一个,用户观有多个,一个应用对应一个用户观。三级结构的关系,可以概括为模式是内模式的逻辑表示,内模式是模式的物理实现,外模式是模式的部分抽取。

三个模式反映了对数据库的三种不同观点,模式表示了概念级数据库,体现了对数据库的总体观,内模式表示了物理级数据库,体现了对数据库的存储观,外模式表示了用户级数据库,体现了对数据库的用户观。

数据库三个模式之间存在两种映射,一是外模式/模式间的映射,另一映射是模式/内模式间的映射。

在数据库系统的组织结构中,模式/内模式映射把概念数据库与物理数据库联系起来,外模式/模式把用户数据库与概念数据库联系起来。

映射技术的好处:保证了数据的独立性、保证了数据共享、方便了用户使用数据库、有利于数据的安全和保密。

应用程序员和终端用户是数据库的用户。

DBMS通过DDL(数据描述语言)来定义三种模式,并将各种模式翻译成相应的目标代码。

DML数据 *** 纵语言实现对数据库的 *** 作,基本 *** 作有:插入、修改、删除、检索。

DBMS有两种类型的程序设计语言:如FORTRAN、C等属于宿主(HL)型,FoxPro则属于自主(SCL型。

DBMS对数据库运行的控制主要是通过数据安全性控制、完整性控制、故障恢复和并发 *** 作四个方面实现的。

关于信息和数据,下面的论述是正确的。D

(A)只有区别没有联系(B)信息是数据的载体(C)同一信息用同一数据表示形式(D)数据处理本质上就是信息处理

数据库是。B(A)单用户独享的(B)多用户共享的(C)多用户(D)单用户

下面关于数据库管理系统的论述,是正确的。B

(A)数据库管理系统是用户与应用程序的接口(B)应用程序只有通过数据库管理系统才能和数据库联系

(C)数据库管理系统用DML来定义三级模式(D)数据库管理系统用DDL来实现对数据库的各种 *** 作

数据库系统提供了多种语言,下面不是其中的一种。(A)DDL(B)SCL(C)DML(D)HL

oracle中是不区分系统缓冲区和用户缓冲区的。

(1)获取缓冲区活动情况

为了Oracle优化缓冲区,首先应了解缓冲区的活动情况。这可以通过查询动态性能表(需有SELECT ANY TABLE特权)V$SYSSTAT来获得。

1SVRMGR> select name ,value from v$sysstat

22> where name in('db block gets','consistent gets','physical reads');

3NAME VALUE

4db blockgets 3437

5consistent gets 30500

6physica reads 1963

73 rows selected

其中,“db block gets”和“consistent gets”的值是请求数据缓冲区中读的总次数。“physical reads”为请求数据时引起从盘中读文件的次数。

(2)缓冲区命中率

从缓冲区读的可能性的高低称为缓冲区命中率。它可用如下公式计算:Hot Ratio=1-(physical reads/(db block gets+consistent gets)

缓冲区命中率越高,其速度就越快。如果命中率低于60%或70%时。则应增加缓冲区(即DB_BLOCK_BUFFERS),以改进性能。根据公式可以计算出本例中的Hot Ratio=1-(1963/(3437+30500)=92%。如果缓冲区的命中率很高,希望在保持良好性能下适当减少缓冲区,这时可减少DB_BLOCK_BUFFERS的值,其最小值为4。

当一个文件上的输入/输出(I/O)请求干扰了第二个文件的输入/输出请求时,那么这两个文件就会发生争用。所以两个随机存取的文件只有在无可能同时存取它们时,才可以存放在同一设备中。由此可以分为两种类型的I/O争用:并行I/O争用和干扰争用。并行I/O争用多发生在同一时间对同一设备请求多种存取时,这种类型的争用可以通过分离与表相联系的索引的办法来消除。干扰争用发生在对一个顺序文件进行写 *** 作而同时进行读命令时中断而引起。

I/O优化的目的是解决I/O瓶颈问题,I/O的优化必须在内存优化之后进行,可以通过减少磁盘争用、有效分配数据块空间和避免动态空间管理三个方面来优化I/O。

减少磁盘争用

V$FILESTAT视图提供有关物理读写的信息。物理I/O针对磁盘,逻辑I/O针对内存。如果有多个进程同时访问同-磁盘,就产个磁盘争用。

监控Oracle的磁盘活动

要解决磁盘争用,首先应该知道磁盘的活动情况,确定是否发生争用。这可以通过查询动态性能表(需有SELECT ANY TABLE特权)V$FILESTAT和V$DATAFILE来确定。例如:

1SQL>SELECT Name,phyrds,phywrts

2FROM V$DATAFILE df,V$FILESTAT fs

3WHERE dffile#=fsfile#;

其中:

◆ phyrds:记录从盘上读每个数据库文件的次数。

◆ phywrts:记录往盘上写数据库文件的次数。

一个盘上总的I/O次数是该盘上所有数据库文件的phyrds和phywrts之和。必须把物理读写的总量控制在用户硬件和 *** 作系统的最优限制内。以上介绍Oracle优化缓冲区

但是,这种行为从Oracle 8i开始就变了:新数据缓冲区被放置在缓冲区链的中部。在调节数据库的时候,你的目标就是为数据缓冲区分配尽量多的内存,而不会导致数据库服务器在内存里分页。数据缓冲区每小时的命中率一旦低于90%,你就应该为数据块缓冲区增加缓冲区。

数据块的存活时间

在调入数据块之后,Oracle会不停地跟踪数据块的使用计数(touch count,也就是说,这个数据块被用户线程所访问的次数)。如果一个数据块被多次使用,它就被移动到最近使用过的数据列表的最前面,这样就能确保它会在内存里保存一段较长的时间。这种新的中点插入技术会确保最常使用的数据块被保留在最近使用过的数据列表的最前面,因为新的数据块只有在它们被重复使用的时候才会被移动到缓冲区链的最前面。

总而言之,Oracle 8i数据缓冲池的管理要比先前的版本更加有效。通过将新的数据块插入缓冲区的中部,并根据访问活动(频率)调整缓冲区链,每个数据缓冲区就被分割成两个部分:热区(hot section),代表数据缓冲区的最近使用的一半;冷区(cold section),代表数据缓冲区的最早使用的一半。只有那些被反复请求的数据块才会被移进每个缓冲池的热区,这就让每个数据缓冲区在缓冲常用数据块的时候效率更高。

热区的大小要用下面的隐藏参数来配置:

_db_percent_hot_default _db_percent_hot_keep _db_percent_hot_recycle

Oracle公司作为官方没有推荐更改这些隐藏参数。只有懂得内部机制和希望调节其数据缓冲区行为的有经验人员才应该使用这些参数。

找到热数据块

Oracle 8i保留着一个X$BH内部查看表,用来显示数据缓冲池的相对性能。X$BH查看表有下列数据列:

Tim:两次使用之间的时间差,和_db_aging_touch_time参数相关。

Tch:使用计数,它和被使用过_db_aging_hot_criteria次之后从冷区移入热区直接相关。

由于Tch数据列用来追踪特定数据块的使用次数,所以你就能够编写一个字典查询来显示缓冲区里的热数据块——使用计数大于10的数据块,就像下面这样:

SELECT obj object, dbarfil file#, dbablk block#, tch touchesFROM x$bhWHERE tch 10ORDER BY tch desc;

这项高级查询技术在用于追踪DEFAULT缓冲池里的对象时尤其有用。一旦定位了热数据块,你就能够把它们从DEFAULT缓冲池移动到KEEP缓冲池。[next]完全缓冲数据库

从Oracle 8i开始,随着64位寻址的出现,你就能够创建一个完全在数据缓冲区里缓冲的数据库。现今,任何数据库通常只用不到20G的内存就能够被完全缓冲,而更大的数据库仍然需要部分数据缓冲区。

要利用完全数据缓冲的优势,就要记住从内存取回数据块和从磁盘取回数据块的时间差。对磁盘的访问时间是以毫秒或者说千分之一秒来计算的,而内存的速度是以纳秒或者说十亿分之一秒来计算的。因此内存的访问速度要快三个数量级,即通常要比磁盘的访问速度块将近14,000倍。

在完全缓冲Oracle数据库的时候,你需要仔细制定缓冲的规划,并在需要的时候增加db_block_ buffers参数的值。在缓冲整个数据库的时候,多数据缓冲池就不再需要了,所以你可以在DEFAULT数据池里缓冲所有的数据块。

以上就是关于北大青鸟分享关于计算机知识讲解全部的内容,包括:北大青鸟分享关于计算机知识讲解、oracle中“灰数据缓冲区”是什么 在OCP教材 ”031-1 数据库管理基础I“ 中看到的、数据库缓冲区管理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9292151.html

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

发表评论

登录后才能评论

评论列表(0条)

保存