建站之星官网登陆,男生跟男生做口视频网站,哈尔滨编程课哪个机构最好,为什么原网站建设公司不愿意透露域名管理权限给客户1、事务 事务是指一个工作单元#xff0c;它包含了一组数据操作命令#xff0c;并且所有的命令作为一个整体一起向系统提交或撤消请求操作#xff0c;即这组命令要么都执行#xff0c;要么都不执行。例如#xff0c;网上购物的交易过程至少包括以下几个步骤的操作它包含了一组数据操作命令并且所有的命令作为一个整体一起向系统提交或撤消请求操作即这组命令要么都执行要么都不执行。例如网上购物的交易过程至少包括以下几个步骤的操作 1更新客户所购商品的库存信息。 2保存客户付款信息。 3生成订单井且保存到数据库中。 4更新用户相关信息如购物数量等 。 在正常的情况下这些操作都将顺利进行最终交易成功与交易相关的所有数据库信息也成功地更新。但是如果遇到突然掉电或是其他意外情况导致这一系列过程中任何一个环节出了差错如在更新商品库存信息时发生异常、顾客银行账户余额不足等都将导致整个交易过程失败。而一旦交易失败数据库中所有信息都必须保持交易前的状态不变比如最后一步更新用户信息时失败而导致交易失败那么必须保证这笔失败的交易不影响数据库的状态即原有的库存信息没有被更新、用户也没有付款、订单也没有生成。否则数据库的信息将会不一致或者出现更为严重的不可预测的后果数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。 事务必须满足4个属性即原子性atomicity、一致性consistency 、隔离性(isolation、持久性 durability)即ACID 4种属性。 2、什么是存储过程与函数有什么区别 SQL语句执行的叶候要先编译然后再被执行。在大型数据库系统中为了提高效率将为了完成特定功能的SQL语句集进行编译优化后存储在数据库服务器中用户通过指定的存储过程的名字来调用执行。存储程是一组予编译的SQL语句。 使用存储过程可以增强SQL语言的功能和灵活性由于可以用流程控制语句编写存储过程有很强的灵活性所以可以完成复杂的判断和运算且可以保证数据的安全性和完整性同时存储过程可以使没有权限的用户在控制之下间接地存取数据库也保证了数据的安全。但存储过程不等于函数两者虽然本质上没有区别但具体而言有以下几个方面的区别 1存储过程一般是作为个独立的部分来执行的而函数可以作为查询语句的一个部分来调用。由于函数可以返回一个对象因此它一般在查询语句中位于From关键字的后面。 2一般而言存储过程实现的功能较复杂而函数实现的功能针对性比较强。 3函数需要用括号包住输入的参数且只能返回一个值或表对象存储过程可以返回多个参数。 4函数可以嵌入在SQL中使用可以在select中调用存储过程不行。 5函数不能直接操作实体表只能操作内建表 6存储过程在创建时即在服务器上进行了编译执行速度更快。 3、什么是死锁 在操作系统中有若干程序并发执行它们不断地申请、释放资源在此过程中由于争夺资源而处于无限期的等待状态造成程序无法继续执行若无外力作用它们都将无法推进下去这时称系统处于死锁状态或系统产生了死锁。此时便只能通过外来打破这种状态。 产生死锁的原因有以下3点。 1首先系统资源不足在系统中常常有多个进程共享资源的情况如打印机这些资源在同一时刻只能被一个进程使用。当资源数目不能满足进程时便可能因为抢夺资源产生死锁。 2其次进程运行推进顺序不对进程在运行中具有异步性当进程推进顺序不当时便产生死锁。例如进程P1和P2两进程同时具有R1和R2两个资源时才能执行当两进程并发执行时若P1保持资源R1,P2保持资源R2双方都在等待对方释放资源此时便发生了死锁。 3最后资源分配不当如果系统资源充足进程的资源请求都能得到满足死锁的可能性会被大大降低而进程推进顺序与速度不同也可能会产生死锁。总的来说产生死锁有4个必要条件1 互斥每个资源每次只能被一个进程使用2请求与保持等待一个进程因请求资源而被阻塞时对已获得的资源保持不放3不可剥夺进程已获得的资源在未使用完之前不能强制剥夺4环路等待若干进程之间形成首尾相接的等待资源关系。 所以为了预防死锁就要打破产生死锁的4个条件中的一个或多个网此需要最大限度地增加系统资源合理地安排进程的顺序井确定合理的分配资源的算法。避免死锁是在资源的动态分配过程中采取有效的方法防止系统进入不安全状态达到预防死锁的目的其中最具代表性的方法就是银行家算法。 4、什么是共享锁互斥锁 在数据库中锁主要是对数据进行读/写的一种保护机制从数据库系统的角度来看一般可以将锁分为共享锁和互斥锁。共享锁简称S锁也叫读锁。用于不更改或不更新数据的操作只读操作如select语句。如果事务T对数据A加上共享锁后则其他事务只能对A再加共享锁不能加排他锁。共享锁可阻止其他并发运行的程序获取重叠的独占锁定但是允许该程序获取重叠的共享锁定。其他用户可以获取共享锁锁定的资源但是不能进行修改该共事锁。在执行select命令时SQL Server 通常会对对象进行共享锁锁定。若事务T对数据D加S锁则其他事务只能对D加S 锁而不能加X锁直至T释放D上的S锁一般要求在读取数据前要向该数据加共享锁所以共享锁又称为读锁。通常加共享锁的数据页被读取完毕后 共享锁就会立即被释放。互斥锁简称X锁也叫排他锁用于数据修改操作如insert、update或delete。确保不会同时对同一资源进行多重更新。为了保证数据操作的完整性引入了互斥锁。用互斥锁来保证在任意时刻只能有一个线程访问对象。若事务T对数据D加X锁则其他任何事务都不能再对D加任何类型的锁直至T释放D上的X锁一般要求在修改数据前要向该数据加排他锁所以排他锁又称为写锁。 而对于锁的使用也有一定的限制需要遵守两个事项1先锁后操作2事务结束之后必须解锁。 5、什么是CHECK约束 CHECK约束是指限制表中某一列或某些列中可接受的数据值或数据格式它用于限制列的取值范围使用形式为CHECK约束表达式如果是对单列定义CHECK 约束那么该列只允许特定的值如果是对一个表定义CHECK约束那么此约束会在特定的列中对值进行限制。例如对于一个员工信息表给员工的年龄属性添加了一个约束即年龄必须大于0且小于等于120那么用户在输入年龄的时候就必须遵守该约束输入负数或者121就无法输入。 6、什么是试图 视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口不同于基本表。它是一个虚表在数据库中存放的只是视图的定义而己不存放视图包含的数据项这些项目仍然存放在原来的基本表结构中。 视图的作用非常多主要有以下几点首先可以简化数据查询语句其次可以使用户能从多角度看待同一数据然后通过引入视图可以提高数据的安全性最后视图提供了一定程度的逻辑独立性等 。 通过引入视图机制用户可以将注意力集中在其关心的数据上而非全部数据这样就大大提高了用户效率与用户满意度而且如果这些数据来源于多个基本表结构或者数据不仅来自于基本表结构还有一部分数据来源于其他视图井且搜索条件又比较复杂时需要编写的查询语句就会比较繁琐此时定义视图就可以便数据的查询语句变得简单可行。定义视图可以将表与表之间复杂的操作连接和搜索条件对用户不可见用户只需要简单地对一个视图进行查询即可所以增加了数据的安全性但是不能提高查询的效率。 7、什么是触发器 触发器是一种特殊类型的存储过程它由事件触发而不是程序调用或手工启动。当数据库有特殊自操作时对这些操作由数据库中的事件来触来自动完成这些SQL语句。使用触发器可以月来保证数据的有效性和完整性完成比约束更复杂的数据约束。根据SQL语句的不同触发器可分为两类DML触发器和DLL触发器。 DML触发器是当数据库服务器发生数据操作语言事件时执行的存储过程有After和Instead Of两种触发器。After触发器被激活触发是在记录改变之后进行的一种触发器。Instead Of触发器是在记录变更之前去执行触发器本身所定义的操作而不是执行原来SQL语句里的操作。DLL触发器是在响应数据定义语言事件时执行的存储过程。 触发器的主要作用表现在以下几个方面 1增加安全性。 2利用触发器记录所进行的修改以及相关信息跟踪用户对数据库的操作实现审计。 3维护那些通过创建表时的声明约束不可能实现的复杂的完整性约束以及对数据库中特定事件进行监控与响应。 4实现复杂的非标准的数据库相关完整性规则、同步实时地复制表中的数据。 5触发器是自动的它们在对表的数据做了任何修改之后就会被激活。例如可以自动计算数据值如果数据的值达到了一定的要求则进行特定的处理。以某企业财务管理为例如果企业的资金链出现短缺并且达到某种程度时则发送警告信息。 引申触发器分为事前触发和事后触发两者有什么区别语旬组触发和行组触发有什么区别 事前触发发生在事件发生之前验证一些条件或进行有一些准备工作事后触发器发生在事件发生之后做收尾工作保证事务的完整性。而事前触发可以获得之前和新的字段值。语句级触发器可以在语句执行之前或之后执行而行级触发在触发器所影响的每一行触发一次。 8、什么是索引 索引是一种提高数据库查询速度的机制它是一个在数据库的表或视图上按照某个关键字段的值升序或降序排序创建的对象。当用户查询索引字段时它可以快速地执行检索操作借助索引在执行查询的时候不需要扫描整个表就可以快速地找到所需要的数据。索引是与表或视图关联的磁盘上结构即对表中列值排序的一种结构 可以加快从表或视图中检索行的速度执行查询时不必扫描整个表就能更快速的访问数据库中的信息。 一条索引记录包含键值和逻辅指针。创建索引时系统分配一个索引页。在表中插入一行 数据同时也向该索引页中插入一行索引记录。索引记录包含的索引字段值比真 实数据量小节省了空间。 索引的类型有聚焦索引和非聚焦索引。聚集索引是表中的行的物理顺序与键值的逻辑顺序一样 一个表只能有一个聚焦索引。与非聚焦索引相比聚焦索引一般情况下可以获得更快的数据访问速度。非聚焦索引是数据存储与索引存储不在同一个地方。索引中有指针该指针指向数据的存储位置索引中的项目按索引之前的顺序存储而表中的信息技另一种顺序存储。 创建索引可以大大提高系统的性能主要表现在以下几个方面1通过创建唯一性索引可以保证数据库表中每一行数据的唯一性2通过索引可以大大加快数据的检索速度3通过索引可以加速表和表之间的连接从而有效实现数据的参考完整性4在使用分组和排序子句进行数据检索时可以显著减少查询中分组和排序的时间5通过使用索引可以在查询的过程中使用优化隐藏器提高系统的性能。 索引可以有效地提高查询效率那为什么不将所有的列都建立索引呢其实索引尽管可以带来方便但并非越多越好过多的索引也会带来许多不利的问题。首先创建索引和维护索 引要耗费时间、空间。当数据量比较小时这种问题还不够突出而当数据量比较大时这种 缺陷会比较明显效率会非常低下。其次除了数据表 占数据空间之外每一个索引还需要占用一定的物理空间。如果要建立聚簇索引那么需要的空间就会更大从而造成不必要的空间浪费。最后当对表中的数据进行增加、删除和修改的时候索引也要动态地维护从而降低了数据的维护速度。 9、什么是回滚 为了保证在应用程序、数据库或系统出现错误后数据库能够被还原以保证数据库的完整性 所以需要进行回滚。回滚rollback就是在事务提交之前将数据库数据恢复到事务修改之前数据库数据状态。 需要注意回楼与撤销的区别。回滚是指将数据库的状态恢复到执行事务之前的状态其中可能会使用UNDO日志进行回漆。撤销是一种记录日志的方式并不是主要服务于事务回滚而是主要用于系统从故障中恢复。例如系统突然断电系统要根据UNDO日志对未完成的事务进行处理保证数据库的状态为执行这些事务前的状态。 10、数据备份有哪些种类 在网络运行与维护过程中经常有一些难以预料的因素会导致数据的丢失如硬件损坏、 操作失误等而且丢失的数据通常又会对企业的业务产生非常不利的影响所以必须不定期地对在据进行及时备份以便在灾难发生后能够迅速地恢复数据 。数据备份就是保存数据的备份目的是为了预防灾难造成的数据损失。它一般分为完全备份、差异备份、事务日志备份 、增量备份几大类。 1完全备份是将数据库中的全部信息进行备份它是恢复的基线在进行完全备份时不但备份数据库的数据文件、日志文件还需要备份文件的存储位置信息以及数据库中的全部对象和相关信息。在对数据库进行完全备份时所有未完成 的事务或发生在备份过程 中的事务部将 被忽略如果使用完全数据库备份类型那么从开始备份到开始恢复这段时间内发生的任何针对数据库的修改都将无法恢复。所以只有在一定的要求或条件下才使用这种备份类型。 2差异备份是备份从最近的完全备份之后对数据所作的修改它以完全备份为基准点备份完全各份之后变化了的数据文件、日志文件以及数据库中其他被修改的内容。差异备份耗费的时间比完全备份少但也会占用一些时间同完全备份一样差异备份过程中也允许用户访问数据库井对数据进行操作并且在差异备份过程中会把这些操作也一起备份起来。 3事务日志备份是备份从上次备份之后的日志记录而且在默认情况下事务日志备份完成后要截断日志事务日志备份记录了用户对数据进行的修改操作。随着时间的推移日志中的记录数会越来越多容量有时比数据库备份大这样势必会占满整个磁盘空间。因此为了避免这种情况的发生必须定期地将日志记录中不必要的记录清除掉以节省空间。清除掉无用日志记录的过程叫做截断日志。 4增量备份是针对于上一次备份的备份上一次备份后所有发生变化的文件。在增量备份过程中只备份有标记的选中的文件和文件夹它清除标记即备份后标记文件。 例如对于数据库而言 按照生活规律一般应该在星期一进行完全备份在星期二至星期五进行差异备份。如果在星期五数据被破坏了则只需要还原星期一完全的备份和星期四的差异备份。这种策略备份数据需要较多的时间但还原数据使用较少的时间。 再例如在星期一进行完全备份在星期二至星期五进行增量备份。如果在星期五数据被破坏了则需要还原星期一正常的备份和从星期二至星期五的所有增量备份。这种策略备份数 据需要较多的时间但还原数据使用较少的时间。 与数据备份相对应的就是数据恢复数据恢复是指将数据恢复到事故之前的状态可以将其看成数据备份操作的逆过程。数据备份是数据恢复的前提数据恢复是数据备份的目的无法恢复的数据备份是没有任何意义的。 11、什么是游标 在数据库中游标提供了一种对从表中检索出的数据进行操作的灵活手段。它实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。 游标总是与一条SQL选择语句相关联因为游标由结果集可以是零条、一条或由相关的选择语句检索出的多条记录和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时必须声明一个指向该结果集的游标。 游标允许应用程序对查询语句select返回的行结果集中每一行进行相同或不同的操作而不是一次对整个结果集进行同一种操作。它还提供对基于游标位置而对表中数据进行删除或更新的能力。而且正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来使两个数据处理方式能够进行沟通。 游标的优点有以下两个方面的内容 1在使用游标的表中对行提供删除和更新的能力。 2游标将面向集合的数据库管理系统和面向行的程序设计连接了起来。 12、并发环境下如何保证数据的一致性 并发一般是指多用户间时访问相同的数据。数据一致性是指系统中每个用户都能够取得具备一致性的数据同时还能够看到自己或其他用户所提交的事务对数据的修改。 在并发环境下一般可以采用多种机制来保证数据的一致性。例旧Oracle系统提供的事务级的一致性、行级锁、表级锁等。下面只介绍行级锁。 提交读和串行性事务都使用行级锁都会在试图修改一个没有提交的并行事务更新的行时的产生等待。第二个事务等待其他事务提交或者撤销来释放它的锁才能更新给定的行。不管等待的是什么级别的隔离事务若其他事务回滚了都可以对以前锁定的行进行修改。 13、如果数据库日志满了会出现什么情况 日志文件Log File记录所装对数据库数据的修改主要是保户数据库以防止故障以及复数据时使恢复用。其特点如下 1每一个数据库至少包含两个日志文件组。每个日志文件组至少包含两个日志文件成员 2日志文件组以循环方式进行写操作 3每一个日志文件成员对应一个物理文件。 通过日志文件来记录数据库事务可以最大限度地保证数据的一致性与安全性但一旦数据库中日志满了就只能执行查询等读操作不能执行更改、备份等操作。其原因是任何写操作都要记录日志也就是说基本上处干不能使用的状态。 14、如何判断谁往数据库中插入了一行数据 可以通过以下3种方法来达到这个目的事先打开审计功能、表上建立触发器或者查看logmnr等。 1审计功能。 先设置audit_trail参数决定审计结果的保存地点然后执行audit insert on schema.table_name whenever successful当有执行insert 操作的动作后根据 audit_trail参数到相应位置去看审计结果即可。 2触发器。 create or replace trigger tgname after insert on tbname →判断此表是否被插入记录 for each row begin insert into ta(日期) values(sysdate); commrt; end; 只需要将代码中的bname换成实际的表的名称即可。需要注意的是建立触发器实质上也是审计只是它是基于值的审计比数据库审计慢。 3通过logmnr日志查看。 logmnr是Oracle公司提供的分析工具该工具轻巧实用使用该工具可以轻松获得Oracle重作日志文件 归档日志文件中的具体内容而且该工具可以分析出所有对于数据库操作的 DML(insert、update、delete等语句、DDL语句等另外还可分析得到一些必要的回滚语句。所以该工具特别适用于调试、审计或者回滚某个特定的事务。