schame定义及用处
一、schame详解
http://www.cnblogs.com/Neo-ds/p/4790413.html
1、先明确一点,SQL Server中模式(schema)这个概念是在2005的版本里才提出来的,因此SQL Server2000不支持模式这个概念(本人曾在此处吃过亏)。
模式又称架构,架构的定义是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。在这里,我们可以将架构看成一个存放数据库中对象的一个容器。
上面的文字描述过于晦涩,举个简单的例子,平时要在电脑硬盘存放东西时,我们不会把所有的东西都存在一个文件夹里,而是会把不同的文件按照某一个标准分门别类,放到不同的文件夹里。而在数据库中,起到这个作用的就是架构,数据库对象(表、视图、存储过程,触发器等)按照一定的标准,存放在不同的架构里。有过java编程经验的同学都知道,命名空间名其实就是文件夹名,因此我们非常明确一点:一个对象只能属于一个架构,就像一个文件只能存放于一个文件夹中一样。与文件夹不同的是,架构是不能嵌套的,如此而已。因此,架构的好处非常明显——便于管理。
总结一下,其实我们的数据库就是一个数据的大仓库,而里面创建了很多很多模式,分别放着不同的数据库对象(包括表),而不同的模式有不同的权限,于是,不同的用户就有不同的访问权限来访问某个模式里的数据库对象。
http://blog.csdn.net/xuexiiphone/article/details/51252749
用户与架构的权限管理关系用上文中的小偷例子比较形象。
2、用户架构分离的好处:
将架构与数据库用户分离对管理员和开发人员而言有下列好处:
(1)多个用户可以通过角色成员身份或 Windows 组成员身份拥有一个架构。这扩展了允许角色和组拥有对象的用户熟悉的功能。
(2)极大地简化了删除数据库用户的操作。
(3)删除数据库用户不需要重命名该用户架构所包含的对象。因而,在删除创建架构所含对象的用户后,不再需要修改和测试显式引用这些对象的应用程序。
(4)多个用户可以共享一个默认架构以进行统一名称解析。
(5)开发人员通过共享默认架构可以将共享对象存储在为特定应用程序专门创建的架构中,而不是 DBO 架构中。
(6)可以用比早期版本中的粒度更大的粒度管理架构和架构包含的对象的权限。
二、 Sql Server需要架构(Schema)的真实原因
http://blog.csdn.net/hejisan/article/details/52292874
schema相当于一个数据库中的两个子数据库,事务回滚时能够保持数据一致性。
设想有一系统S1, 使用一数据库Db1, 另有一系统S2, 使用数据库Db1 和 Db2。S1 只操作 Db1;S2 同时操作 Db1 和Db2。系统S2知道系统S1的存在,并且需要自己的一些数据,所以创建了Db2以存放自己的数据。系统S1使用用户U1,系统S2使用用户U2,U1拥有Db1的访问权,U2拥有Db1和Db2的访问权,系统S1不知道Db2和系统S2的存在。S2 的日常操作也是在事务包装下的,并不会造成 Db1和Db2的数据不一致。S1和S2并行运行,工作良好。
直到有一天,硬件系统发生了严重故障,这时Db1 和 Db2进行日志回滚。单独检查Db1和Db2的数据,没有任何问题。
但是,Db1和Db2的数据一致性现在可能就有问题了,因为Db1 和Db2 的回滚之间没有任何同步机制。在一个涉及Db1和Db2的复杂事务中,Db1的数据可能已写入,没有被丢弃,而Db2中的数据可能在回滚时被丢弃了;反之亦然,于是产生了一致性问题。
这时,就轮到我们的主角,架构发挥用处的时候了,建立一个大的数据库Db,Db1和Db2改成为架构S1和S2,用户U1拥有架构S1的访问权,用户U2拥有架构S1和S2的访问权。你就会发现,现在任何时候都没有一致性问题了。当数据库需要回滚的时候,因为在同一数据库中,架构S1和S2之间没有任何一致性问题。
三、Sql server 2005中schema的用法总结
http://jizhonglee.blog.51cto.com/3003732/805201
用Schema 加快了查询的执行时间
在没有制定schema的情况下是按照如下的顺序执行查找的
首先搜寻sys.mytable (Sys Schema)
然后搜寻Sue.mytable (Default Schema)
最后搜寻 dbo.mytable (Dbo Schema)
如果指定schema的话就不用去扫描Sys Schema了,这样就加快了查询的时间,从而提高了执行效率。
对表的查询速度会有所提高,如果把索引跟表同在一个命名空间,那数据库表空间变小,因为索引是占空间的。这样就会影响到查询表速度。
schame定义及用处的更多相关文章
- .NET里简易实现AOP
.NET里简易实现AOP 前言 在MVC的过滤器章节中对于过滤器的使用就是AOP的一个实现了吧,时常在工作学习中遇到AOP对于它的运用可以说是很熟练了,就是没想过如果自己来实现的话是怎么实现的,性子比 ...
- 超文本传输协议-HTTP/1.1
超文本传输协议-HTTP/1.1(修订版) ---译者:孙超进本协议不限流传发布.版权声明Copyright (C) The Internet Society (1999). All Rights R ...
- Windows系统环境变量path优先级测试报告
转自:http://bluekylin.cnblogs.com/archive/2005/12/16/298797.html 总以为自己很已经会操作windows了,今天在它帮助中看到一大片还不知道的 ...
- mongoengine中collection名称自动生成机制浅探
项目碰到要使用mongodb的场景,以前只听过这一强大的文档数据库,但一直没有真正使用过,参考一下项目中已有的使用代码,是通过import mongoengine这一模块实现python服务对db中c ...
- 学以致用,通过字节码理解:Java的内部类与外部类之私有域访问
目录: 内部类的定义及用处 打开字节码理解内部类 一.内部类的定义及用处 内部类(inner class)是定义在另一个类中的类.使用内部类,我们可以: 访问该类定义所在的作用域中的数据,包括私有的数 ...
- XML--XML Schema Definition(一)
参考 https://blog.csdn.net/wangw2008/article/details/83195283 https://blog.csdn.net/lmj623565791/artic ...
- JavaScript编程入门
写在前面: 不管容易还是简单 总要尝试才知道答案 1.JavaScript初探 JavaScript:轻量级脚本语言,是可插入HTML页面的编程代码. 将JavaScript插入HTML页 ...
- 深入理解javascript函数定义与函数作用域
最近在学习javascript的函数,函数是javascript的一等对象,想要学好javascript,就必须深刻理解函数.本人把思路整理成文章,一是为了加深自己函数的理解,二是给读者提供学习的途径 ...
- jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}
笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...
随机推荐
- Go所提供的面向对象功能十分简洁,但却兼具了类型检查和鸭子类型两者的有点,这是何等优秀的设计啊!
Go所提供的面向对象功能十分简洁,但却兼具了类型检查和鸭子类型两者的有点,这是何等优秀的设计啊! <代码的未来>
- 分布式事务之TCC服务设计和实现注意事项
分布式事务之TCC服务设计和实现注意事项-云栖社区-阿里云 https://yq.aliyun.com/articles/609854 分布式事务之TCC事务丶一个站在Java后端设计之路的男青年个人 ...
- [未解决:快速滑动collectionveiw请求数据崩溃]:unable to allocate 6553600 bytes for bitmap data
崩溃:unable to allocate 6553600 bytes for bitmap data
- Java之旅_高级教程_实例_数组
摘自:http://www.runoob.com/java/java-examples.html 1.数组排序及元素查找 以下实例演示了如何使用sort()方法对Java数组进行排序,及如何使用 bi ...
- Celery的Web监控管理--Flower
Flower是Celery的一个实时监控和管理Web界面工具,目前仍在活跃的开发之中,但已经是一个很重要的可用工具了.这是推荐使用的Celery监控工具. 1,安装依赖 pip install flo ...
- javascript判断两个对象属性以及值是否相等
objIsEqual(obj1,obj2){//比较两个对象键值对是否相等 var o1 = obj1 instanceof Object; var o2 = obj2 instanceof Obje ...
- python解析VOC的xml文件并转成自己需要的txt格式
在进行神经网络训练的时候,自己标注的数据集往往会有数据量不够大以及代表性不强等问题,因此我们会采用开源数据集作为训练,开源数据集往往具有特定的格式,如果我们想将开源数据集为我们所用的话,就需要对其格式 ...
- 【数据库】left join(左关联)、right join(右关联)、inner join(自关联)的区别
left join(左关联).right join(右关联).inner join(自关联)的区别 用一张图说明三者的区别: 总结: left join(左联接) 返回包括左表中的所有记录和右表中关联 ...
- bat、sh等批处理文件(脚本文件)
批处理文件(batch file):也被称为批处理程序或脚本,可以简化日常或重复性任务.本质是无格式的文本文件,它包含一条或多条命令.(1).bat是dos下的批处理文件,在window系统上执行的文 ...
- OC动画:CAKeyframeAnimation
// 方法一 用法1 Value方式 //创建动画对象 CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyP ...