第九点:数据分割
数据分割可以加强本地表的检索分割,这使得大型的表和索引可以因此得到高效的管理。
第十点:增强复制功能
对于分布式的数据库而言,SQL Server提供了全面的方案修改复制、监控性能、从甲骨文到SQL Server内置复制功能、可以对多个超文本传输协议进行合并复制,还能就合并复制的进行了重大的改良。另外,新的对等交易式复制性能通过复制改进了功能对数据向外扩展的支持。
2.3    SQL的工作原理
SQL SERVER是C/S产品,所以SQL语句要让SQL SERVER执行,必须要传输到SQL SERVER的服务器端。传输,我们当然知道是需要NetBEUI、TCP/IP等等网络传输的协议。但是仅仅有这些还是不行的。客户端如何发出,服务器端如何接收,如何去确认发出的和接收的正确完整,如何去确定发出的和接收的已经结束,如何发出和接收能跨越各种网络协议,如何保证数据安全校验,如何保证数据收发是同步的还是异步的,就需要在网络传输协议上再构造一层协议。SQL SERVER既是支持IPC机制,也是支持RPC机制。现在消息服务器已经能够专业的提供这一机理,可靠、安全、高效、异步、消息的压缩、消息的拆分、智能的路由、集群,跨越不同操作系统、不同编程语言、不同通讯协议、不同硬件平台消息的数据传输。SQL语句能被可靠无误的发送到服务器端,SQL SERVER引擎中第一个模块就是用来接待该SQL数据。该模块的名字叫:Open Data Services。它是负责监听新的连接;清除失败的连接;将结果、消息和状态返回给客户端。SQL SERVER客户端与服务器端两者之间传输数据,数据包是有格式限制的。在SQL SERVER中被称为tabular data stream。这个数据流是使得令牌控制客户端和服务器端对话。我们往往不能够直接和Open Data Services打交道,使其把数据放进来。而是我们应该通过ODBC、ADO或DB-Library来发送tabular data stream。SQL SERVER返回数据结果,也是通过这些ODBC之类发回。Open Data Services监测客户端的连接。如果并发太多,它就会创建连接,如果服务完成,它就会自己文护连接归入池中。在池中保留小段生命期,它会自己释放该连接。如果有的客户端连接中途突然断掉,它在侦听后无回应,它会自己整理自己的连接。我们在SQL SERVER线程中看到的连接,就是Open Data Services创建的。Open Data Services有了连接,就把SQL接住了。这时,是接到Open Data Services的读缓冲区里面。SQL SERVER把检索到的数据,检索出来就立即放进写缓冲区,缓冲区一满就立即被Open Data Service发走。SQL语句放到缓冲区,SQL SERVER关系引擎这个时候就开始工作了。它总是侦听该缓冲区。SQL语句遇到的关系引擎第一个模块就是命令分析器。在SQL查询分析器中看到查询分析的结果就是它输出杰作。构造查询树。首先是将SQL语句规范化,否则以后步骤将不好操作,要规范SQL语句,首先要从SQL语法库中抽取SQL SERVER现有支持的各种语法和函数。一旦构造成功了,那么关系引擎第二个模块就是命令优化器,用来裁剪这棵树。SQL语句可以生成多种执行和优化方案,SQL SERVER会选择最节省的内存、CPU利用率、I/O次数的那种方案。优化器会根据每张表的数据统计。并且优化器也会根据查询树去选择合适索引,优化器也会根据查询树,知道应该先取哪些表的数据,然后在内存中如何合并数据,以得到用户想要的结果。规范化、优化完的SQL语句,就要产生执行的计划。SQL管理器就是负责执行计划的产生。优化完的SQL,具体要真正让SQL SERVER从内存或者硬盘上将数据找出来或更新回去,就需要很多细节的步骤。查询执行器是用来负责SQL的执行。SQL的执行是要涉及到事务、等待、锁、I/O存取影响、内存页失效影响等等,所以查询执行器就会协调很多其他的模块,但是各个模块来负责处理,而查询执行器并不是真正全部包办, 查询执行器是查询引擎的最后的模块,接下来模块都是属于存储引擎的范畴。所以,查询引擎最主要是用来构造SQL查询树、优化裁剪SQL查询树,根据查询树从而产生执行的计划,协调执行查询树,把结果返回去。真正要把数据取出来或者存进去,就需要存储引擎来工作了。首先是根据执行计划,将要存取哪些数据页和索引页。就通知让缓冲区管理器来做。如果数据没有在内存中,就让缓冲区管理器来读入,如果数据已经在内存中了,缓冲区管理器只有返回即可。这个过程是被缓冲区管理器屏蔽的,对于访问方法管理器应当是透明的。因为SQL SERVER要确保高速处理,必须预先预测好哪些数据页,索引页是要处理的。这就应当需要一个统一的调度。而且这个统以一的调度也是影响着缓冲区管理器的。缓冲区管理器必须预先知道将在不久要有一个大数据,所以在并行运算时候就会有独立线程用来扩展缓冲区。因为扩大缓冲区还和操作系统是有关联的。数据页包含数据行,索引页包含索引行,数据行就会由行管理器来控制。而索引行会由索引管理器来负责。而检索、修改、执行,又是被事务管理器和锁管理器影响着的。事务,有显性事务和隐性事务两种情况。锁又是有共享锁、排它锁、更新锁、意向锁等。而且锁,还分为行锁、页锁、表锁、数据库锁等。锁,又是有死锁的可能性的存在。锁的不同加上事务影响,这个行是否能读、能修改,能读一致还是脏读,是等待事务和锁还是可以进行就受了很多影响。因为一张数据页上放的行是有限的,尤其是在还有填充度的影响。除了SQL SERVER这些内核涉及精妙以外,SQL SERVER的外围工具也是设计的相当好。如SQL SERVER的用户安全性的管理方法、对象分类如表、列、约束、默认、索引、触发器、存储过程、视图、主键等、对象权限等方法、SQL语言、SQL查询分析器、SQL跟踪器、SQL性能分析器、SQL数据库等等。
上一篇:C#虚拟二叉树图形化程序设计
下一篇:VC++贪吃蛇游戏设计+流程图

电子商务對中小贸易公司...

电子商务茬玉林中药材销...

B2C电子商务企业网络营销...

jsp+mysql网上商品销售系统

射频识别技术的公司会议...

射频识别技术的公司会议...

java+mysql电脑彩票销售与管理系统设计

承德市事业单位档案管理...

神经外科重症监护病房患...

公寓空调设计任务书

中国学术生态细节考察《...

C#学校科研管理系统的设计

志愿者活动的调查问卷表

AT89C52单片机的超声波测距...

10万元能开儿童乐园吗,我...

国内外图像分割技术研究现状

医院财务风险因素分析及管理措施【2367字】