版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DBA数据库管理员JAVA程序员架构师必看数据库基础(ffi试常见题)_、数据库基础1. 数据抽彖:物理抽象、概念抽彖、视图级抽彖,内模式、模式、外模式2. SQL语苕包括数据定义、数据操纵(Data Manipulation),数据控制(Data Control)数据定义:Create Table,Alter Table.Drop Table, Craete/Drop Index 等数据操纵:Select Jnsert.update.delete,数据控制;grant.revoke3. SQL常用命令:CREATE TABLE Student(ID NUMBER PRIMARY KEY,NA
2、ME VARCHAR2(50) NOT NULL);/建农CREATE VIEW view_name ASSelect * FROM Tablename;/建视图Create UNIQUE INDEX index_name ON TableName(col name);建寃INSERT INTO tablename column 1 tcolumn2. values(exp 1 ,exp2,.);/frfi 入INSERT INTO Viewname column1.column2. values(exp 1 .exp2,.);/|rfi入视图实杯影响表UPDATE tablename SET
3、 name=*zang 3* condition;/更新数据DELETE FROM Tablename WHERE condition;/删除GRANT (Select,deleteJ ON (对象)TO USER_NAME Vi/ITH GRANT OPTION;授权REVOKE (权PU表)ON(对象)FROM USER_NAME WITH REVOKE OPTION 撇权 列出工作人员及其领导的名字:Select E.NAME, S.NAME FROM EMPLOYEE E SWHERE E.SUPERName=S.Name4. 视图:5. 完整性约束:实体完整性、参照完整性、用八定义完
4、整性6. 第三范式:1NF:毎个属性是不可分的.2NF:若关系R是1 NF,I.每个非匸朋性都完全喷数依赖于R的健.例SLC(SI D#. CourcelD#, SNAME.Grade),则不是2NF; 3NF:若R是2NF, 它的任何非键屈性都不传递依赖于任 何候选键。7. ER(实休/联系)模型8. 如作用9. 事务:是累列的数据库操作,是数据库应用的基本逻轲凶位。爭务性贋:子性、入顶子性。即不町分割性,事务耍么全部被执行,耍么就全部不被执行。入一致性或町玳性.审务的执行使得逆业从-种正确状态转换成另一种正确状态入隔骑性在事务正确提交之前.不允许把该那务对数据的任何改变提供给任何梵他爭务,
5、入持久性.爭务止确提交厉.其结果将永久保存在数据M中,即使在事务提交后有了其他故障,事务的处 理结果也会得到保存。10. 锁:共亨锁、互斥锁两段锁协议;阶段1:加锁阶段阶段2:解倾阶段11. 死锁及处理:事务循坏等待数据锁,则会死锁。死锁处理:预防死眦协议,死锁恢奴机制12. 存储过程:存储过程就是编译好了的-些sql语句.1. 存储过程因为SQL语句C经预编绳过了,因此运行的速度比较快。2可保证数据的安全性和完整性。通过”储过程町以使没有权限的用八在控制Z卜间接地心収数据!车,从 而保证数据的安全.通过"储过程町以使相关的动作在起发生,从而町以维护数据库的完整性。3町以降低网络的通
6、信虽.存储过程主要是在服务器上运行,减少对客戸机的压力.4:存储过程町以接受参数、输出参数、返何单个或多个结果集以及返冋值。可以向程序返何错误原因5:存储过程町以包含程序流、逻辑以及对型迪丄的査询。同討町以实体封装利隐藏了数据逻韓13-触发器:'*1满足触发器条件,则系统I'l动执疔触发器的鮭发体。触发时间:有before.after.触发事件:有insert,update,delete H种.触发类型:有行触发、语句触发14内联接,外联接区别?内连冬是保证两个衣中所灯的行都耍满足连接条件,而外连接则不然.在外连接中,某些不満条件的列也会显示出來.也就是说.只限制兀中-个衣的行
7、,而不限制另个衣的 行.分左连接、右连接、全连接三种SQL试题2一 %教师号 星期号是否有课1 2育1 3有2 1冇3 2有'12自 吗条sql i?v句让你变为这样的衣教师号 星期一星期二 星期三1212 13 1孑杲期卜的数字表示:对应的教师在用期儿(2经排的课数书表(books)bookJd.book_name.creatdate,Lastmodifydate.decription001. 7个人的世界t2005-02-02.2005-074)7.NULL作石衣(authors)A_idA_name01J:纷02,李尚03,点和部门表(dep ts)d id,d name001,
8、编辑一部002,编辑二部003,编输三部廿和作者关联表(bookmap)bookld.AJd001,01001,02001.03部门和作者关联农(depmap)dd,ad001.01002.02003.03找出毎个部门的所丐的总廿两,比如,-本忖仃3个人耳,如果三个人在不同的部门,则毎个部门的总数虽就是1 .最后结果如下:部门,书虽编辑一部编辑二部;I编鯨三部两个表惜况表名:wu_pla nIDplanmodelcorp_codeplannum prixis100001exx22nokia2000 0200002lc001sony30000衷名:wu_bomIDplanpactamount10
9、0001aa1300200001aa2200300002bbl5004 00002bb28005 00002bb3400査询这两个表中plan唯_,毎_个plan中,amount最少的,plannum大J prixis的记录结果是:IDplanmodelcorp_codeplannumprixispact amount100001exx22nokia2000 0a2200200002lc001sony30000bb3400从表1结构如卜:部门条码品名销售额销售数虽销售日期表2结构如卜课别部门要求;先按部门排序,再按销鲁额、销住数戢排序检索出某个课别毎个部门一个时期内的商品销伟额的旃 2名,如含
10、询01课别2007年4月15日到2007年4月22日每个部门 个周内的商品侑售合计的博三 名SQL面试题目汇总1。触发器的作用?答:触发器是-中特殊的存储过程,上耍是通过宦件來触发而被执行的。它町以強化约束,來维护数据的 完協性和-,致性,可以珈踪数抑席内的操作从而不允许未经许町的更新和变化町以联级运伴。如,某表 上的独发器卜包含对另一个表的数据操作,而该操作乂会导致该表触发器被触发。2。什么是存储过程?用什么来调用?答:存储过程是-个预编谦的SQLift句,优点是允许模块化的设计,就足说只需创俚-次,以后在该程序中就町以调用多次.如果某次操作需要执行多次SQL.使用存储过程比单纯SQL语句执
11、行耍快.可以用 一个命令对彖来调用疗储过程。3。索引的作用?和它的优点缺点是什么?答:索引就种特殊的査询表,数据库的搜索引華可以利用它加速对数据的检索。它很类似与现实生活中书的1录,不需耍責询弟木书内容就町以找到想耍的数据.索引可以是唯一的,创建索引允许指定单个列或者是多个列.缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。3。什么是内存泄漏?答:一般我们所说的内存泄漏指的是堆内存的泄漏.堆内存是程序从堆中为其分配的,大小任意的,使用完麻耍显示释放内存.为应用程序用关键字new等创建对彖时,就从堆中为它分配-块内存,使用完示程序调用free或者delete释放该内存,否则就说该内存
12、就不能被使用,我们就说该内存被泄涓4. 堆护數据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?答:我足这样做的,尽町能使用约束,如check,上键,外键,非空7段等來约束,这样做效率最高,也最 方便.英次是使用触发器,这种方法町以保证.无论什么业务系统访问数据库都町以保证数据的完於新和 一致性。最百考锻的是IT弓业务逻辑,但这样做麻烦,编程复杂,效率低K5。什么是事务?什么是锁?存:爭务就足被绑定在-起作为-个逻倚T作敢元的SQL评句分组,如果任何一个语句操作失败那么於 个操作就被失敗,以后操作就会冋滚到操作询状态,或者是卜有个节点.为了确保耍么执行.耍么不执行. 就可以使用事务
13、。耍将有组语句作为事务考就需耍通过ACID测试,即原子性,一致性,隔离性和持 久性.锁:在所以的DBMS中,锁是实现书务的关键,懺可以保证事务的完整性和并发性.与现实生活中锁一 样它可以使某叫数据的拥有者,在某段时间内不能使用某些数据或数据结构.肖然锁还分级别的。6=什么叫视图?游标是什么?答:视图是一种虚拟的表,具有和物理表相同的功能。町以对视图进行增,改,査,操作,试图通常是有 一个衣或怡多个表的行或列的子集。对视图的修改不彫响垄木农它使得我们获取数据更容易,相比多表 査询.游标:是对査询出來的结果集作为一个单元來有效的处理。游标町以泄在该单元中的特定行,从结果集 的-pniHj-检索行或
14、姜行町以对结果集十前行做修改. 般不便用游标,但是需耍逐条处理数据的时帧. 游标显得十分朿要.7。为管理业务培训信息,建立3个表:S(S#,SN,SD.SA)S#,SN,SD,SA分别代农学号,学加姓名,所屈单位,学协年龄C(C#,CN)C#,CN分别代表课程编号,课程名称SC(S#,C#,G) S#,C#,G分别代表学弓,所选的课程编号,学习成绩(1) 使用标准SQL I快套语句俺询选修课程名称为'税收慕础'的学员学号和姓名?答案:select s# ,sn from s where S# in(select S# from c.sc where c.c#=sc.c# and
15、 cn='税收基础')(2) 使用标准SQL腋套语句査询选修课程编1;为'C2'的学员姓名和所屈肢位?答:select sn.sd from s,sc where s.s#=sc.s# and sc.c#=,c2'(3) 使用标准SQL嵌套语句代询不选修课程编号为'C5'的学员姓名和所属单位?答:select sn.sd from s where s# not ln(select s# from sc where c#='c5*)(4) 査询选修了课程的学员人数答:select 学员人数=count(distinct s#) fr
16、om sc(5) 件询选修课程超过5门的学员学号和所屈单位?答:select sn.sd from s where s# in (select s# from sc group by s# havi ng coun t(disti net c# )>5)目前在职场中很难找到非常合格的数据库开发人员.有人说:-SQL开发是门语言,它很容易学,但是很 难节宛-华为 html在面试过程中多次碰到刚11 SQL査询的題II,是査询A(ID.Name)中第31至40条记录,ID作为上健可能是不是连续増长的列,完整的査询语句如下:select top 10 * from A where ID >
17、;(select max(ID) from (select top 30 ID from A order by A ) T) order by A另外一逍邇II的耍求是資询表A中存在ID朿复三次以上的记录,完鑒的杳询语句如氏select * from(select count(ID) as count from table group by ID)T where T.count>3以上两逍n ll;常冇代表总义,垫并位把I'lC碰到的冇代表的戏询都贴上來.create table testtablei(id int IDENTITY,department varchar(12)s
18、elect * from testtable 1insert into testtable 1 valuesC 设计') insert into testtable 1 valuesf 市场) insert into testtablel valuesC售后') r结果id department1设计2市场3使后7create table testtable2(id int IDENTITY,dptID varchar(12)insert into testtable2 values。张三') insert into testtable2 values
19、。,乍PT) insert into testtable2 values(2i, I 伍') insert into testtable2 values(3彭六') insert into testtable2 values(4;陈匕) r用一条SQL语句,怎么显示如下结果 id dptID department name1 1设计张三21设计李四32市场王五43售后54黑人陈七SELECT testtable2/ t ISNULL(department;黑人')FROM testtablel right join testtable2 on testtable2.dp
20、tID = testtablel .ID在面试应聘的SQL Server数据库开发人员时,我运用了一套标准的基准技术问观。卜啲这些问題是我觉 得能够真正有助丁洶汰不合格应聘者的问题。它们按照从易到难的顺序排列。当你问到关于主键和外键的 问建时,肩而的问題都卜分冇难度,因为答案可能会更难解种和说明,尤次足在而试的情形下。你能向我简要叙述一下SQL Server 2000中使用的一些效据库对象吗?你希里听到的答案包括这样一些对象:表格、视图、用八定义的函数,以及存储过程:如果他们还能够提到像 触发器这样的对彖就更好了。如果应舸者不能回答这个基木的何题,那么这不是i个好兆头。NULL是什么意思?NU
21、LL(空)这个值是数据库苗界世一个非常难缠的东两,所以有不少应称者会在这个问题卜跌典头您也不耍 觉得意外.NULL这个ft*衣示UNKNOWN(未知):它不表示"(空字符冷)假设您的SQL Server数据库里冇 ANSI_NULLS,当然在默认悄况卜会右,对NULL这个值的任何比较祁会生产一个NULL值。您不能把任 何值与一个UNKNOWN值进行比较,并在逻辑上希里获得一个答案。您必须使用IS NULL操作符。什么是索引?SQL Server 2000里有什么类型的索引7任何冇经验的数据海开发人员都应该能够很轻易地冋答这个问题。一些经验不太多的开发人员能够冋答这 个问题,但是有吐地
22、方会说不淸楚。简的地说,索引是个数据结构,用來快速访问数据廊农格或打视图壘的数据.在SQL Server 11,它们 冇两种形式:聚集索引和非聚集索引聚集索引在索引的叶级保存数据。这意味苕不论聚集索引甲.冇表格的 个(或哪些)7段,这些字段都会按顺序被保存在表格.由于存在这种排序,所以每个表格只会仃 个聚 集索引。非聚集索引在索引的叶级有一个行标识符.这个行标识符是一个指向離盘上数据的指针。它允许 每个农格有多个非聚集索引.什么是主健?什么是外犍?上键是表格里的(一个或多个)字段,只用来定义表格里的行;上键里的值总是唯一的.外键是一个用來建立 两个表格之间关糸的约東.这种关系般都涉及个决格里的
23、上键字段9另外 个衣格(尽骨町能是同 个 表格)里的-系列相连的字段。那么这些相连的字段就足外键。什么是触发器?SQL Strv«r 2000有什么不同类型的触发器?让未來的数据怦开发人员知道可用的触发器类空以及如何实现它们是非常右益的。触发器是-种方用类型的存储过尽它被捆绑到SQL Server 2000的农格或斤视图匕在SQL Server 2000 甲,们NSTEAD-OF和AFTER两种触发器.INSTEAD-OF触发器是韩代数据操控语伙Data Manipulation Language, DML)语句対表格执行语句的存储过程。例如,如果我有一个用J' TableA
24、的INSTEAD-OF-UPDATE触发器,同时対这个衣格执疔 个更新语句,那么INSTEAD-OF-UPDATE触发器 里的代码会执行,而不是我执行的更新语句则不会执行操作.AFTER触发器耍在DML谄句在数据库里使川Z后才执行。这些类型的触发器对监视发生在数据库衣格 里的数据变化十分好用.您如何确一个带有名为FW1字段的TibleB表格里只具有FM1字段里的那些值,而这些值同时在名为 TabltA的表格的FIE字段里?这个。关系相关的问题仃两个“J能的冷紀 第一个答案(而且是您希望听到的答案)是使用外键限制。外健 啾制用來给护引用的完整性-它峨用來确保衣格里的7段口保仃L1经在不同的(或咅
25、相同的)&格里的另 一个了段足定义了的值这个字段就是候选键(通常是另外一个表格的主键).另外i种答案是触发器。触发器町以被用來保证以另外一种方式实现与限制柑同的作川,但是它非常难设 程与地护,而11性能-般都很糟样。曲丁这个原【人I,微软建议开发人员使用外进限制而不是触发器來维护 引用的完整性.对一个投入使用的在线事务处理表格有过多第引需要有什么样的性能考虎?你正在寻找进行与数据操控何关的应聘人员.对一个表格的索引越多,数据库引擎用來更新、插入或者删 除数列所需耍的时何就越多,因为在数据操控发生的时帧索,;也必须耍维护。你可以用什么来确保表格里的字段只接受特定范围里的值?这个甸建町以用
26、多种方式來冋答,但是只冇i个答案是好”答架。您希电听到的冋答足Check限制它在 数据库表格里被定义,用来限制输入该列的值.触发器也町以破用來限制数捌库农格里的字段能够接受的侑,但是这种办法耍求触发器在农格也被运义, 这可能会在某些惜况卜影响到件能因此,微软建议使用Check限制而不是英他的方式來限制域的完帑牲.如果应聘占能级正确地回答这个问逆.那么他的机会就非常人了,因为这农明他们几冇使用存储过程的经 验.返回参数总是曲存储过程返回,它用來衣示心储过程是成功还是失败。返回参数总是INT数据类型。OUTPUT参数明确姿求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可
27、以用作输出参数的数据类空是仃-些限制的。)您町以在-个存储过程里使用多个OUTPUT参数.而您只 能够使用一个返冋参数.什么是相关子査询7如何使用这些査询?经验更加丰富的开发人员将能够准确地描述这种类型的資询=相关子杳询是一种包含子茂询的特殊类空的杳询.資询世包含的子杳询会真正请求外部資询的值,从而形 成一个类似于循坏的状况。数据库面试:SQL tuning 类1. 列举几种表连接方式Answer:等连接(内连接)、非等连接、“连接、外连接(左、右、全)Or hash join/merge join/nest loop(cluster joinyindex join ? ?ORACLE 8i9
28、i农连接方法.般的相等连接:select * from a, b where a.ld = b id;这个就属J内连接。对I外连接:Oracle 中可以使用-(+)"來表示,9i 町以使用 LEFT/RIGHT/FULL OUTER JOINLEFT OUTER JOIN:左外关联SELECT east_name, e.department_id, d.department_nameFROM employees eLEFT OUTER JOIN departments dON (e.departmentd = d.departme等价于SELECT east_name, e.depa
29、rtmentjd, d.department_nameFROM employees e, departments dWHERE e.departmentjd=d.departmentjd(+)结果为:所冇员丁及对应部门的记录,包括没冇对应部门编department_id的员丁记录.RIGHT OUTER JOIN:右外关联SELECT east_name. e.department_id, d.department_nameFROM employees eRIGHT OUTER JOIN departments dON (e.departmentd = d.departmentjd);等价rS
30、ELECT east_name, e.department_id, d.department_nameFROM employees e, departments dWHERE e.departmentjd(+)=d.departmentjd结果为:所冇员工及对应部门的记录,包括没冇任何员丁的部门记录.FULL OUTER JOIN.全外关联SELECT east_name. e.departmentjd. d.department_nameFROM employees eFULL OUTER JOIN departments dON (e.department_id = d.departmen
31、t_id);结果.为:所有员匸及对应部门的记录,包括没订对应部门编departmentjd的员I记录和没有任何於I. 的部门记录。ORACLE&是不直接支持完全外连接的语法,也就是说不能在左右两个表上同时加上(+),卜面是在ORA CLE8I町以参舟的完全外连接语法select t1.id,t2.id from tablel t1 .table t2 where t1.id=t2.id(+)unionselect t1.id,t2.id from tablel t1,table t2 where t1.id(+)=t2.id连接类熨定义图示例子内连搂只连復匹配的行select A.c1
32、,B.c2 from A join B on A.c3 = B.c3;左外连接包含左边表的全部行(不符右边的表中是否存在与它们匹配的行)以及右边表中金部匹配的行select A.c1,B.c2 from A left join B on A.c3 = B.c3;右外连接包倉右边衣的全部行(不管左边的衣中泉否"在与它们匹配的行)以及左边农中全部匹配的彳Fselect A.c1,B.c2 from A right join B on A.c3 = B.c3;全外连接包育左、右两个农的全部彳亍,不管在另边的农中足否存在与它们匹配的行select A.c1,B.c2 from A full
33、join B on A.c3 = B.c3;< theta)连接使用等值以外的条件來匹配左、右两个表中的行select A.c1,B.c2 from A join B on A.c3 != B.c3;交叉连接成笛代尔枳它不便用任何匹配或者 R条件,而墨直接将-个数据源中的毎个行与另个数据源的 毎个行一一匹配select A.c1.B.c2 from A.B;2. 不借助第三方工具.怎样査看sql的执行计划I) 使用 Explain Plan.査询 PLAN_TABLE;EXPLAIN PLANSET STATEMENTJD=*QUERY1 FORSELECT *FROM aWHERE a
34、a=1;SELECT operation, options, object_namet object_type, IDr pare ntJdFROM plan_tableWHERE STATEMENTJD = QUERY"ORDER BY ID;II) SQLPLUS 中的 SET TRACE 即町看到 Execution Plan StatisticsSET AUTOTRACE ON;3. 如何使用CBO.CBO与RULE的区别IF 初始化参数 OPTIMIZER_MODE = CHOOSE THEN (8I DEFAULT)IF做过表分析THEN 优化器 Optimizer=CB
35、O(COST);广高效TELSE优化器 Optimize二RBO(RULE);广高效冷END IF;END IF;区別:RBOHI据观则选择虽f上执彳J:路能來运行含询。CBO根据表统计找到最低成木的访问数据的方法确定执行计划.使用CBO需耍注意:I)需耍经常对衣进If ANALYZE命令进行分析统讣;II)需耍稳定执行计划:III)需耍使用提示(Hint);使用RULE需耍注意:I)选择最有效率的表名顺序II)血化_SQL的写法;在optimizer_mode=choose时,如果及仃统计倍息(分区衣外).优化盟将选择CBO,否则选RBO。RBO遵循简单的分级方法学,使用15种级别耍点,当接
36、收到査询,优化器将评佔使川到的耍点数II然后选 择最佳级别(虽少的数虽:)的执行路径來运行査询。CBO尝试找到最低成木的访问数据的方法,为了最人的呑叶吊:或最快的初始响应时fHj.il-使川不同的执行 计划的成本,并选择成本最低的一个,关丁农的数据内容的统讣被用丁确农执彳J:计划。4. 如何定位眾耍(消耗资源多)的SQL使用CPU多的用户sessionSELECT a.SID, spid, status, SUBSTR (gram, 1, 40) prog, a.terminal,a.SQL_TEXT, osuser, VALUE / 60 / 100 VALUEFROM v$ses
37、sion a, vSprocess b, v$sesstat cWHERE c.statistic# = 12 AND c.SID = a.SID AND a.paddr = b.addrORDER BY VALUE DESC;select sql_text from vSsql where disk_reads > 1000 or (executions > 0 and buffer_gets/executions > 30000);5. 如何跟踪某个session的SQL利用TRACE銀踪ALTER SESSION SET SQLTRACE ON;
38、COLUMN SQL format a200;SELECT machine, sqljext SQLFROM vSsqltext a. vSsession bWHERE address = sql_addressAND machine = *&A*ORDER BY hash_value, piece;exec dbms_system.set_sqljracejn_session(sid,serial#.&sqljrace);select sid.serial# from vSsession where sid = (select sid from v$mystat wh
39、ere rownum = 1);exec dbms_system.set_ev(&sid,&serial#,&event_10046,&level_12J);6. SQL调罄最关注的是什么检査系统的I/O问题sar-d 能检查整个系统的 iostat (IO statistics)竇看该 SQL 的 response time(db block gets/consistent gets/physical reads/sorts (disk)7. 说说你对索引的认iH (索引的纟人构、对dml响、对查询滋响、为什么提岛查询性能索引有
40、B-TREE、BIT, CLUSTER等类也 ORACLE使用了-个复杂的【'I平衞Btree结构:通常來说,在 表卜建立恰半的索引,責询时会改进貢询性能但在进行插入、刪除、條改时,同时会进行索引的修改, 在性能上有一定的影响。有索引M査询条件能使用索引时,迪生会先度取索引,根据索引内容和査询条 件,査询出ROWID,再根据ROW ID収出需要的数据。宙丁索引内容通常比全农内容耍少很芬,因此通过 先读索引,能减少I/O,提高査询性能。b-tree index/bitmap index/function index/patitional index(local/global)塞丄通常能捉
41、岛 select/update/del ete的性能,会降低insert的速度,8. 使用窒亘査询一定能提高査询的性能吗?为什么通常.通过索屮資询数据比全农扌I描耍快但足我们也必须注总到它的代价.索引需耍辿來«储,也需耍定期维护,毎当有记录在丧中增减或索引列被修改时,索引木身也会被修改.这 怠味首每条记录的INSERT,DELETE,UPDATE将为此多付出4,5次的磁盘I/O. W为索引需耍额外的心储 空间和处理,那些不必耍的索引反而会使金询反应时何变慢使用索引含询不一定能提高査询性能索引范阳査询(INDEX RANGE SCAN)适用两种悄况:基一个范禺的检索,一般査询返I叫结果
42、集小J:表中记录数的30%宜采用;基丁非唯-,性如的检索索引就是为了提高賁询性能而/":的,如果在査询小索引没仃提岛性能贝能说是用错了索引咸右讲是场介 不同9. 绑定变虽是什么?绑定变呈仃什么优缺点?绑定变吊是指在SQL 句中使用变战,改变变吊的值來改变SQL语句的执行结果.优点:使用绑定变虽可以减少SQL语句的解析,能减少数4:I牟引擎消耗在SQLiMj解析上的资源。提髙了編程效率和可靠性.减少访问数据库的次数,就能实际上减少ORACLE的工作虽.缺点:经常需要使用动态SQL的写法,由于参数的不同,可能SQL的执行效率不同:绑定变戢是相对文木变戳來讲的,所谓文木变虽是指在SQL克接
43、朽写資询条件,这样的SQL在不同条件下需要反块解析,绑定变鼠是指使用变员來代科11接书丐条件,ntiUbind value在 运行时传递,然后绑定执行.优点是减少皎解析,降低CPU的争用,节省' shared_pool缺点是不能使用histogram.sql优化比较闲燃10. 如何稳定(周定)执行计划可以在SQL语句中指定执行计划。使用HINTS;query_rewrrte_enabled = truestar_transformation_enabled = trueoptimizer_features_e nable = 9.2.0创建并便用stored outline11. 和排
44、序相关的内存在8i和9i分别怎样调帑.临时衣空何的作用是什么SORT_AREA_SIZE在进行排序操作时,如果排序的内容太多,内存里不能全部放卜,则需耍进行外部排序,此时需耍利用临时表空迥來存放排序的中何结果.8i中sort_area_size/sort_area_retained_size决定了排序所需耍的内存,如果排庁操作不能在sort_area _size中完成,就会用到temp表空间9i 中如果 wokaea_size_policy二日uto 时.拮序在pga内进行,通布pga_aggregatejarget的1/20町以用來进h disk sort;如果 workarea_size_
45、policy=manual 时排序需耍的内存由 sort_area_size 决定. 在执ij order by/group by/distinct/union/create index/index rebuild/minus 等操作时,如果在 pga 或 sort_area_size 中不能完成,IT 序将在临时表空迥进行(disk sort),临时表空何上要作用就是完成系统中的disk sort.12. 存在表T(a,Dc,d),耍根抓字段c排序后取第2130条记录显示请给出sqlSELECT *FROM (SELECT ROWNUM AS row_numt tmpjab/FROM (SE
46、LECT a, bt c, dFROM TORDER BY c) tmpjabWHERE ROWNUM <= 30)WHERE row num >= 20ORDER BYow_num;create table t(a number(,b number(,c number(,d number();/beginfor i in 1 . 300 loopinsert into t values(mod(i,2)”2,dbms_random.value(h300)4);end loop;end;/select * from (select c 二 row num as m from (se
47、lect * from t order by c desc) c) where m betwee n 21 and 30;select * from (select * from test order by c desc) x where rownum < 30minus select * from (select * from test order by c desc) y where rownum < 20 order by 3 desc相比Z minus性能较罡二:数据吟基木概念类1 Pctused and pctfree衣示什么含义仃什么作用pctused与
48、pctfree控制数据块足否出现在freelist中,pctfree控制数据块中保用用T update的空蝕为数 据块中的free space小F pctfree设置的空间时.该数据块从freelist中去掉,当块由J dml操作free space 大J - pct_used设置的空间时.该数据库块将被添加在freelist链表中。2 简单描述 tablespace / segment / extent / block 的关系tablespace: 一个数据丿4划分为一个或多个逻辑单位,该逻辑单位成为表空廻;毎一个表空间町能包含一个 或多个Segment,Segments: Segment指
49、点tablespace中为待定逻辑存储统构分配的空U毎一个段是由一个或务个exte nt组成。包括数据段、凯段、回滚段和临时段。Extents:个extent由一系列连续的Oracle blocks组成.ORACLE为通过extent來给segment分配空Data Blocks: Oracle故抓if虽小的I/O存储单位,一个data block对应一个或多个分配给data file的操 作系统块。table创建时,默认创建了一个data segment,毎个data segment含仃min extents指定的extents数,毎个 extent据据表空间的存储参数分配一定数呈的bloc
50、ks3描述tablespace和datafile Z间的关系一个衣空间可包含一个或多个数据文件。表空间利用增加或扩展数据文件扩人表空河,农空何的夫小为组 成该衣空间的数据文件人小的和。一个datafile只能屈丁-个衣空何;一个tablespace町以占 个或多个datafile,毎个datafile只能任一个tablespace内,table中的数据,通过h ash第法分布住tablespace屮的*个datafile *|',tablespace是逻弭上的概念,datafile则右物理上储了型 据库的种种对彖.4本地管理农辿和7典管理表空间的待点,ASSM有什么特点本地停理农空也1
51、:(9i巩认)空闲块列农存储在表空何的数据文件头。特点:减少数据7典农的竞争,当分配和收缩空蝕时会产生回滚,不需耍合并。字典管理表空回:(8i默认)空闲块列表存储在敌据咋中的字典表电.特点:片由数据?典理,可能适成字典表的争用.”储在衣空辿1的毎个段都会有不同的存储字句需 要合并相邻的块;本地管理衣空间(Locally Managed Tablespace 简称 LMT)&以后出现的种新的表空间的符理模式.通过位图來管理表空何的空间使用.字典管理表空间(Diction ary-Managed Tablespace 简称 DMT)&以祁包括以麻都还可以使用的一种表空迪1管理模式.
52、通过数据字典代理表空间的空间使用。动段空间管 理(ASSM),它首次出现在Oracle920里有了 ASSM,链接列表freelist被位图所取代,它是一个二进制 的数组,能够迅速有效地管理存储扩展和剩余区块(free block),因此能够改善分段存储本质,ASSM表空间卜.创 建的段还何另外一个称呼叫Bitmap Managed Segments (BMB段.5 I训滚段的作用是什么网滚段用保存数据修改询的映彖.这些信息用J:工成读 致性故抑M信息、在数据胯恢址和Rollback IH 便用.一个事务只能使用一个回滾段。爭务冋滚:半事务修改表中数据的时候.该数据修改询的值(即询影像会存放在
53、回滚段中,当用门回滚 爭务(ROLLBACK)时,ORACLE将会利川回滚段中的数据前影像來将修改的数据恢复到原來的值。事务恢复:当事务正在处理的时候,例程失敢,回滚段的信宜保存在undo表空何中,ORACLE将在下次 打开竝座时和用回滚來恢建耒提交的数据。读一致性:半一个会话正在修改数据时.其他的会话将看不到该会话未提交的修改。当一个语句正在执行 时,该语句将看不到从该语句开始执行后的未提交的修改(识句级读一致性)半ORACLE执行SELECT语句时,ORACLE依照半的的系统改变号(SYSTEM CHANGE NUMBER-S CN)來保证任何询当询SCN的未提交的改变不彼该语句处理。叮以
54、想彖:当 个长时间的査询正在执 厅时,若其他会话改变了该査询耍査询的某个数据块,ORACLE将利用回滾段的数据前影像來构造-个 读-致性视图6日志的作用是什么F1志文件(Log File)记录所冇对数抑;咋数据的修改,上要足保护数据库以防止故障,以及恢奴数据时使用 其特点如下:a) 每-个型逬至少包育两个口志文件组.每个口志文件纽至少包含两个n志文件成员.b) IJ志文件组以循环方式进疔写操作。c) 毎一个H志文件成员对应一个物理文件.记录故据咋專务履大限度地保证数据的一致性勺安金性巫做U出文件:會对数据汗所做的更改记录,这样力-出现故障可以川用数据恢父,一个数据库至少需要炳 个乘做n志文件
55、归档日志文件:是重做日志文件的脱机副本,这些副本町能对j从介质失败中进行恢复很必耍。7 SGA匸耍方那些部分,上要作用是什么系统全旭区(SGA) CORACLE为实例分配的组人7缓冲心储区,川J:"放数抑:M数据和控制信息, 以实现对数据库数据的管理和操作。SGA上耍包括:a) 共亨池(shared pool):用来存储最近执行的SQL语句和虽近使用的数据字典的数据.b) 数据缓冲区(database buffer cache):用來存储最近从数据文件中读勇过的数据.c) 巫作I志缓冲区(redo log buffer):川來记录脱务或后台进程对数据咋的操作。另外在SGA中还有两个町
56、选的内存结构:d) java pool:用來疗储Java代码.e) Large pool:用來存储不与SQL直接相关的大型内存竝.备份、恢复使用。GA: db cache/shared pool/larqe pool/iava pooldb_cache:敌卅咋缓存(Block Buffer)对F Oracle数据库的运转和性能起养非常关键的作用,它占据O racle数据库SGA (系统共享内存区)的】:耍部分。Oracle数据库通过使用LRU算法,将最近访问的数据 块心放到缓存中,从而优化对磁盘数据的访轲.shared_pool:共享池的大小对J - Oracle性能來说都是很疽耍的。共享池中保”数据字典岛速缓冲和完金 解析或编译的的PL/SQL块和SQL濟句及控制结构large_pool:使用MTS配胃时.因为耍在SGA中分配UGA来保持用户的会话,就是用Large_pool來保 持这个会话内存使用RMAN做备份的时候,耍使用Large_pool这个内存址抱來做磁盘I/O缓”器java pool:为java pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理护理循证医学教学法课件与教案分享
- 护理教学中的团队合作精神培养
- 金融前台职业规划
- 剖宫产术后引流管护理
- 护理教师竞赛培训课程
- 护理实验问题解决
- 快消品行业市场专员岗位全解
- 临床事务经理工作汇报总结
- 快递业务岗位的面试全解析
- 快消品销售员市场推广技巧培训
- 2025年苏州健雄职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 化工企业安全隐患排查表
- 2024届新高考语文高中古诗文必背72篇 【原文+注音+翻译】
- 第五讲铸牢中华民族共同体意识-2024年形势与政策
- 组织工程学(新)
- 2023年胎膜早破的诊断和处理指南
- 府谷县新民镇丈八崖联办煤矿矿山地质环境保护与土地复垦方案
- 部队保密安全教育课件
- 交通基础设施智能建造技术探索与发展交流
- 计算机网络实验指导(郑宏等编著 华为)课件PPT(计算机网络实验指导)
- 国家基本药物培训
评论
0/150
提交评论