科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道专家点评:如何选择数据库的分割方式(1)

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

分割是将表分散到可能位于不同的数据库或者服务器上的多个子表中,这样做的目的是改善读写性能。

作者:Hilary Cotter 来源:互联网 2007年9月12日

关键字: 分割 数据库 SQL Server SQL Server 各版本

  • 评论
  • 分享微博
  • 分享邮件
 

选择数据库分割方式

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

  纵向分割改善数据的访问

  在纵向分割的表中,字段从主表中删除,并且通过一个名为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表选项将文本数据存储在一个单个的数据库页面上,如果文本的数量少于配置的限制的话。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章