文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程数据库家点评:如何选择数据库的分割方式
精品推荐
特别推荐
·SQL数据库完全使用手册
·进阶:精妙SQL语句介绍
·sql删除记录
·学习SQL语句之SQL语句大全
·数据备份失败的五个原因及解决办法
·解决SQL Server常见的七个经典问题
·SQL存储过程的概念,创建,调用,管理,删除,优点
·带你轻松接触13个数据库术语
·如何恢复系统数据库如何恢复系统数据库?
·通过实例讲解由浅入深学会存储过程
·学会三个范式快速成为数据库设计的高手
·SQL数据库应聘人员面试时经常被问的问题
·问答:查询分析器不能单步调试的的原因
·数据库基础知识:SQL中的IIF语句详解
·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
·你知道吗?优化数据库前的十大问题
·自动备份注意事项让你远离误删数据噩梦
·关于MSSQL数据库日志满的快速解决办法
·SQL安全设置攻略
·SQL注入的不常见方法
热点TOP10
·学习SQL语句之SQL语句大全
·SQL数据库完全使用手册
·玩转Windows桌面图标
·精妙SQL语句收集
·Transact SQL 常用语句以及函数
·一个简单的酒店系统的数据库设计
·sqlldr使用小结
·使用DatabaseMetaDate获取数据库信息
·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
·Delphi程序执行时实时生成报表
·图片保存到数据库和从数据库读取图片并显示(c#)
·VB.NET的数据库基础编程(1)
·SQL查询语句精华使用简要
·如何实现将vsflexgrid中修改的数据反馈到数据库中
·SQL优化34条
·SQL 新增/修改 表字段列的类型等
·还原数据库的经典做法
·通过分析SQL语句的执行计划优化SQL(二)
·通过Remoting service上传文件
·sql删除记录

家点评:如何选择数据库的分割方式

日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]


选择数据库分割方式

  分割是将表分散到可能位于不同的数据库或者服务器上的多个子表中,这样做的目的是改善读写性能。分割通常是在表的级别上完成,还有当一组相关的表分散了的时候,也会考虑数据库的分割。表通常是横向或者纵向分割的。以下的文章可以帮助你理解那些分割方式,并且决定何时使用哪一种方式。

  纵向分割改善数据的访问

  在纵向分割的表中,字段从主表中删除,并且通过一个名为denormalization(反标准化)的进程放置在子表中。这种类型的分割允许你将更多的行放在一个数据库页面上,让表变得狭窄,以利于提高数据访问的性能。因此,单个的I/O操作会返回更多的行。通过纵向分割你的数据,你必须采用连接(join)的方式来返回被反标准化了的字段。仔细考虑纵向分割对你整体数据访问模式的影响。

  在默认情况下,SQL Server会在数据库页面上纵向分割文本和图像数据类型。使用文本和图像数据类型创建的字段会存储在独立的数据页面上,与非文本和非图像字段区别开。通过这种方式,他们可以占用更少的空间,比起你将文本数据存储在使用varchar数据类型创建的文本数据中。

  考虑如下的表:

Create Table Table1
(PK int not null identity constraint pk primary key,
Charcol1 char(10),
Charcol2 char(10),
Textcol text)

  你可以在每页上存储总数为8096/(4+10+10)=338行的数据,忽略每行的额外开销。如果你用varchar(8000)字段存储量文本数据,假设你在这个字段中有8KB的数据,那么你就可以在每页上存储一行。如果你的查询的主要内容就是返回文本字段,这个存储引擎优化会给你带来大大的好处。如果你的查询的主要内容是返回文本字段,那么你就会希望使用text in row选项了。text in row表选项将文本数据存储在一个单个的数据库页面上,如果文本的数量少于配置的限制的话。

\ 

  横向分割改善整体读写性能。

  一个横向定位的表将一些数据行根据某个标准,分散到了不同的表或者数据库(有时候是不同的服务器)中,这些标准包括主键值,日期字段或者位置标识符。

  考虑一下,当一个应用程序有10000个用户都必须访问同一个服务器上的某个表的时候:你可以预见到在这个表上会产生大量的读写冲突。要改善整体的读性能,你可以考虑缩小表的规模,然后将其分散到10个SQL Server上,然后再将负载均衡分配到这10个服务器上,每个数据库访问拥有1000个用户。这看起来是个不错的改善性能的方式——但是有以下几点不足:

  存储利用:与分散到每个节点上的数据同样的拷贝。

  数据分散:你如何保证所有的节点都同步具有同一个数据的拷贝?

  数据管理语言同步:你如何保证所有节点上的变化都保持同步?

  SQL Server 2005将会提供一个peer-to-peer (P2P)的复制模式,专为在多个服务器上分散统一的数据集合所用,并且保持他们的同步性。一个节点的更新将会复制到拓扑结构内所有其他节点中:当一个节点重新在线,它会以P2P的模式与其他节点中发生的更新同步。这种解决方案的设计目标是将位于不同地理位置的服务器的规模按照比例缩小。

  然而,在大多数的横向分割实现过程中,每个服务器或数据库都包含数据的子集。在SQL Server 7之前的版本上,这些实现是在应用程序的级别上完成的,在那里调用应用程序根据查询参数(SARG)来决定访问那个表。如果表在同一个数据库内分割,T-SQL逻辑就需要负责分割,这样每个正确的分割都可以参考或者更新。如果你创建了一个视图来表示一个完整的结果集,所有的潜在的基本表都需要参考到。

  分布式分割视图

  在SQL Server 7中,查询优化器将会考虑查看执行计划中的约束。如果你在某个字段上有检查约束,并且你的SARG参考了这个字段,那么只有正确的分割可以在执行计划中参考。考虑一个在姓者个字段上有检查约束的表,如下所示:

  CONSTRAINT [CK_Employee] CHECK ([LastName] > 'a' and [LastName] < 'b')

  这样的表只能接受姓以“A”开头的雇员。那么说你有一个分布式的拓扑结构,包含了26个字母,一个表包含一个字母,那么这些表需要在一个统一拥有这26个表的视图中参考。

  Select * from EmployeeTableView where LastName ='a'

  然而,插入、更新和删除都需要在正确的基本表上执行。在SQL Server 2000种,你需要执行数据管理语言来操作这个视图,以及参考的正确的基本表。

  SQL Server 2005中的分割

  SQL Server 2005,于2005年11月发布,引入了一些数据库分割方面的加强,改善了性能并减小了有关管理分布式数据集的管理负担。

  在SQL Server 之前的版本中,需要你手工创建表来形成分割。在我们上面举出的例子中,我们需要创建26个表(每个表代表一个字母)来形成雇员的分割。在SQL Server 2005中,你可以创建一个分割函数,然后通过这个函数来分割表,同时SQL Server 还会根据你的范围函数确定的不同分割内的数据分散。这看起来像是一个表。出于性能的原因,你也许还想要分割的表扩展到多个文件群(可能在不同的磁盘或者阵列中),每一个分割都分配到他自己的文件群中。要做到这一点,你就需要创建一个分割计划,其中包括了所有的文件群来形成你的分割,然后创建你的表来使用这个分割计划,代替普通的文件群。

  你还可以创建分割索引。在默认情况下,在一个分割上创建的索引可以与分个表使用同一个分割计划。有关如何使用SQL Server 2005的分割能力的最好资源就是Kimberly Tripp的白皮书。

  总结

  两种分割方式都具有其优势和弱点。SQL Server 2000为你的数据库分割提供了好几种选择:纵向分割通过非标准化和小心使用文本数据类型字段,用于缩小数据行的有效宽度。横向分割打破了VLDB(超大型数据库)表,根据范围形成了小一些代表。SQL Server 7中的查询优化器也意识到了检测约束,并且指挥参考符合条件的基本表。另一方面,SQL Server 2000还允许你通过P2P的复制模式来按照比例缩小规模,简化分割解决方案的创建和管理。

  作者简介:Hilary Cotter进入IT这一行已经超过20年了,现在是网络和数据库顾问。微软在2001年最先嘉奖Cotter为微软SQL Server MVP。Cotter在多伦多大学机械工程专业获得了应用科学学士学位,接着在卡尔加里大学学习经济,在伯克利学院学习计算机科学。他撰写了一本有关SQL Server事务复制的书,现在致力于一本有关合并复制和微软的查询技术的书。

(出处:清风网络学院






上一篇:详细介绍优化SQL Server 2000的设置

下一篇:专家教你优化你的SQL Server硬件性能

家点评:如何选择数据库的分割方式 相关文章:
·教你学习如何破解XP登陆密码
·教你如何复制别人的QQ空间
·“黑客”教你如何远程控制计算机
·将系统装到U盘中 如何自制XP@USB启动盘
·另类阴道玩弄方式
·如何显示输入法图标(输入法图标消失)
·Vista中硬盘分区合并分割全攻略
·如何建立一个网站?规划、设计、目的、原则、宣传
·如何在QQ空间加入播放器代码
·如何查出QQ好友精确地理位置
家点评:如何选择数据库的分割方式 相关软件:
·如何安装双系统
·视频分割专家 V5.83
·如何加固Windows XP 主机安全
·如何评估您的商机
·如何开公司
·ACCESS数据库教程 北京大学的ACCESS教程
·零起点教你如何破解软件和制作注册机 and 视频+程序
·爆出网站数据库路径
·Video Convert Master(转换,分割,合并视频)V8.0.5.20 汉化版
·Ultra RM Converter(Real文件转换分割,合并)V3.3.0916 汉化版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot