1、关于回滚段的使用,下列哪种分配方法比较合适?给长事务分配大回滚段。
解析: 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。
回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。 回滚段的数量规划。 对于OLTP系统,存在大量的小事务处理,一般建议: 数量多的小回滚段;每四个事务一个回滚段;每个回滚段不要超过十个事务。 对于批处理,一般建议:少的大回滚段;每个事务一个回滚段。
一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。短事务应该不是一个事务占用一个段,应该是多个事务在一个段。
2、mysql_pconnect() ??
解析:mysql_pconnect() 函数打开一个到 MySQL 服务器的持久连接。
mysql_pconnect() 和 mysql_connect() 非常相似,但有两个主要区别:
①当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。
②其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接)。
3、mysql数据库中一张user表中,其中包含字段A,B,C,字段类型如下:A:int,B:int,C:int根据字段A,B,C按照ABC顺序建立复合索引idx_A_B_C,以下查询语句中使用到索引idx_A_B_C的语句有哪些? ABD
A. select *from user where A=1 and B=1
B. select *from user where 1=1 and A=1 and B=1
C. select *from user where B=1 and C=1
D. select *from user where A=1 and C=1
因复合索引为idx_A_B_C,所以查询条件只能是在a,ab,abc,ac才算 使用到索引idx_A_B_C
复合索引: Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。 例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效
4、数据库系统的最大特点是(数据的三级模式和二级映象)。
5、( 存储模式)是数据库物理结构和存储方式的描述
解析:外模式又称子模式,对应于用户级。
内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述。
模式又称概念模式或逻辑模式,对应于概念级。
6、下面(DECLARE @count SELECT @count=1)组命令,将变量count值赋值为1。
解析:@表示声明一个局部变量,@@表示声明一个全局变量(比如已经定义好的系统变量)
声明局部变量语法:declare @变量名 数据类型;例如:declare @num int;
赋值:有两种方法式(@num为变量名,value为值)
set @num=value; 或 select @num=value;
解析:DECLARE @count表示选定变量,SELECT @count=1表示为count赋值;
这里的赋值语句还可以使用SET @count=1;
但是select和set在赋值语句中有些区别:
SELECT可以在一条语句里对多个变量同时赋值,
而SET只能一次对一个变量赋值,即如果数据表中存在多个count变量,则不能使用SET赋值;
7、一个关系相当于一张二维表,二维表中的各栏目相当于该关系的_属性_____。 求解答????
8、在Access数据库中,对数据表进行删除的是(操作查询)。
操作查询包括生成表查询、删除查询、更新查询和追加查询等4种。
生成表查询就是利用一个或多个表中的全部或部分数据创建新表;
删除查询可以从一个或多个表中删除一组记录,删除查询将删除整个记录,而不是只是记录所选择的字段;更新查询对一个或多个表中的一组记录作全部更新;
追加查询从一个表中将一组记录添加到一个或多个表的尾部。
9、NoSQL
10、事务
NoSQL数据库的四大分类
键值(Key-Value)存储数据库
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。
举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.,Google BigTable ,Amazon DynamoDB
列存储数据库。
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.
文档型数据库
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。
文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。
图形(Graph)数据库
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。
NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。 如:Neo4J, InfoGrid, Infinite Graph.
因此,我们总结NoSQL数据库在以下的这几种情况下比较适用:
1、数据模型比较简单;
2、需要灵活性更强的IT系统;
3、对数据库性能要求较高;
4、不需要高度的数据一致性;
5、对于给定key,比较容易映射复杂值的环境。
脏读(dirty read)
在讲解脏读前,我们先讲一个笑话:一个有结巴的人在饮料店柜台前转悠,老板很热情地迎上来:“喝一瓶?”,结巴连忙说:“我…喝…喝…”,老板麻利地打开易拉罐递给结巴,结巴终于憋出了他的那句话:“我…喝…喝…喝不起啊!”。在这个笑话中,饮料店老板就对结巴进行了脏读。A事务读取B事务尚未提交的更改数据,并在这个数据的基础上操作。如果恰巧B事务回滚,那么A事务读到的数据根本是不被承认的。
不可重复读(unrepeatable read)不可重复读是指A事务读取了B事务已经提交的更改数据。
幻象读(phantom read)A事务读取B事务提交的新增数据,这时A事务将出现幻象读的问题。
第一类丢失更新A事务撤销时,把已经提交的B事务的更新数据覆盖了。
第二类丢失更新A事务覆盖B事务已经提交的数据,造成B事务所做操作丢失
11、两段锁协议
两段锁协议(Two-Phase Locking――2PL)
两段锁协议规定所有的事务应遵守的规则:
① 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。
② 在释放一个封锁之后,事务不再申请和获得其它任何封锁。
即事务的执行分为两个阶段:
第一阶段是获得封锁的阶段,称为扩展阶段。
第二阶段是释放封锁的阶段,称为收缩阶段。
定理:若所有事务均遵守两段锁协议,则这些事务的所有交叉调度都是可串行化的。
对于遵守两段协议的事务,其交叉并发操作的执行结果一定是正确的。值得注意的是,上述定理是充分条件,不是必要条件。一个可串行化的并发调度的所有事务并不一定都符合两段锁协议,存在不全是2PL的事务的可串行化的并发调度。
同时我们必须指出,遵循两段锁协议的事务有可能发生死锁。
此时事务T1 、T2同时处于扩展阶段,两个事务都坚持请求加锁对方已经占有的数据,导致死锁。
为此,又有了一次封锁法。一次封锁法要求事务必须一次性将所有要使用的数据全部加锁,否则就不能继续执行。因此,一次封锁法遵守两段锁协议,但两段锁并不要求事务必须一次性将所有要使用的数据全部加锁,这一点与一次性封锁不同,这就是遵守两段锁协议仍可能发生死锁的原因所在。
12、字段就是属性,行是元组,关系模式即是二维表,表格表示实体类型和实体之间的联系。
13、SQL绑定变量
绑定变量是相对文本变量来讲的
所谓文本变量是指在SQL直接书写查询条件,这样的SQL在不同条件下需要反复解析
绑定变量是指使用变量来代替直接书写条件,查询bind value在运行时传递,然后绑定执行。
优点是减少硬解析,降低CPU的争用,节省shared_pool ;
缺点是不能使用histogram,sql优化比较困难
绑定变量是指在SQL语句中使用变量,改变变量的值来改变SQL语句的执行结果使用绑定变量,可以减少SQL语句的解析,能减少数据库引擎消耗在SQL语句解析上的资源
14、