`
septem
  • 浏览: 54484 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL语言艺术(五)了如指掌:理解物理实现

    博客分类:
  • sql
阅读更多
本章探讨表中数据不同的存储方式,以及特殊的物理实现对性能的影响

尽管数据库的物理结构和SQL没有直接的关系,但如何使用SQL却受到这些底层结构的影响

在优化数据的物理布局常碰到两个冲突的目标,一个目标是尽量以紧凑的方式存储数据,这有助于查询尽快找到所有数据。另一个目标是尽量将数据分散存储,以便多个线程可以并发写入,不会造成资源争用而互相妨碍

索引

数据的物理布局与数据的特征及预期用途密切相关,所以表和索引的物理设计,需要数据库管理员和开发者合作,根据业务需求,结合既有DBMS的特性,使物理设计尽可能最佳

当待查的键值指向大量记录时,通常效率较高的做法是从头到尾扫描并忽略索引,当一个字段包含较多重复值时,即低区别度,为该字段建索引没什么用。作为复合索引的第一个字段,也没有必要单独加索引,无论如何都不需要对一个字段建立两个索引。即使没有完整的键值,只要确保前面几个字节足以分辨数据,就能高效地搜索常见的树状或层状索引

当索引已含有其它信息时,就没必要再访问它所指的原始数据,在索引中加入额外的字段,就能提高某个频繁运行的查询的速度,这是因为查询所需要的数据可以全部从索引中获取,而完全不必再访问原始数据源

分区

分区可以提高并发性和并行性,从而提高了系统的可伸缩性

循环分区是一种不受数据影响的内部机制,一个表存储在多个分区中,数据会按照某方法循环地加载到各个分区,以保持磁盘I/O操作的平衡。循环分区可以看做是随意散布数据的机制,它并不根据实际的逻辑数据相关性来分组数据

数据驱动分区是根据一个或多个字段的值来定义分区,每条记录插入相应的分区。多数非常大的表是因为它包含了历史数据,最常查询的是那些较新的数据,我们可以根据日期进行分区,把常用数据和不常用数据分别放在不同的分区中

真正的分区要求逻辑上有一个单独的表,即所谓的分区视图(partitioned views),它具有能被其它表参照的真正主键。此外,指定一个或多个字段作为分区键(partition key),该键决定记录将被保存在哪个分区。这样,我们就能利用分区视图的所有优势,即在操作表时具有透明性,而且可以把保证数据完整性的任务交回给DBMS。更重要的是由于DBMS核心知道分区,从而知道如何利用这种物理结构进行优化。但如果DBMS不支持分区视图,处理起来就会非常复杂

分区的具体实现可以采用多种方式,每种方法分别适合不同的情况

哈希分区(hash-partitioning)

对分区键进行hash运算,根据结果分区。完全基于hash运算的结果,完全不考虑数据值的分布。哈希分区能保证根据分区键快速找到记录,但对范围搜索没有优势,因为hash函数会将连续的键值转换为非连续的hash值,再根据hash值确定物理地址

范围分区(range-partitioning)
根据连续数据的范围对数据进行分组。范围分区非常适合处理历史性数据,同之前讨论的分区视图概念最为接近

列表分区(list-partitioning)
最具手工风格的分区类型,适合定制解决方案,必须明确指定分区键的可能取值以及每种键值对应的分区

分区内部还可以建立子分区,例如在一个范围分区内建立hash分区

数据驱动分区能将一个表中的数据分散到多个独立分区,但这并不能解决并发问题。如果大部分分区都无人访问,存储最新数据的分区访问却过于集中,这样的分区方式显然不够理想。对分区表进行查询,当数据分区键均匀分布时,收益最大

分区是把双刃剑,一方面,它通过分区键将数据聚集在一起,利于高速检索。另一方面,对于并发执行的操作,分散数据可以避免访问过于集中的问题。但在实践中,这两个目标可能彼此矛盾同,到底用数据分区来分散数据还是聚集数据,完全取决于需求,所以首先要明白需要解决的主要问题是什么,并针对主要问题设计分区。而且两方面得失都要检查,看结果是否能够接受。理想的情况是为select设计的数据聚焦方式,与为insert设计的数据散布方式是一致的,只可惜这并不常见
2
0
分享到:
评论

相关推荐

    MICROSOFT SQL SERVER 2008技术内幕:T-SQL语言基础.pdf

    不过,我可以根据标题和描述提供的信息,以及对SQL Server 2008和T-SQL语言基础知识的理解,为您构建一份关于Microsoft SQL Server 2008中T-SQL语言基础知识的知识点概要。 Microsoft SQL Server 2008是微软公司...

    SQL语言艺术pdf

    第4章,机动灵活:思考 SQL语句解释如何设计 SQL语句第5章,了如指掌:理解物理实现 揭示物理实现如何影响性能 第6章,锦囊妙计:认识经典 SQL模式包括经典的 SQL模式、以及如何处理第7章,变换战术:处理层次结构...

    SQL语言艺术(pdf格式)

    第5章,了如指掌:理解物理实现 揭示物理实现如何影响性能 第6章,锦囊妙计:认识经典SQL模式 包括经典的SQL模式、以及如何处理 第7章,变换战术:处理层次结构 说明如何处理层次数据 第8章,孰优孰劣:认识困难,...

    SQL语言艺术 PDF电纸书

    《SQL语言艺术》是一本深度探讨SQL编程技巧与实践的电纸书,由京华志与精华志联合出品。这本书旨在帮助读者提升SQL查询能力,理解数据库管理的核心概念,并掌握在实际开发中如何高效地使用SQL。对于标签中提到的"C#...

    SQL语言艺术-更好的理解SQL语言的魅力之所在

    SQL语言艺术,更好的理解SQL语言的魅力之所在。

    SQL语言艺术.txt

    ### SQL语言艺术知识点详解 #### 一、书籍概述与适用对象 - **书籍内容结构**:本书共计12章,每一章节围绕特定的原则或准则展开,并通过实例进行深入解析。这些示例通常来源于真实世界的应用场景,使得读者能够更...

    SQL语言艺术+The Art of SQL(双语)

    通过阅读《SQL语言艺术》的PDF版和《The Art of SQL》的CHM版,你可以对比两种语言的表述,深入理解和掌握SQL的艺术。 总之,《SQL语言艺术+The Art of SQL》是学习和提升SQL技能的宝贵资源,书中的知识将帮助你...

    Microsoft SQL SERVER 2008技术内幕:T-SQL语言基础

    《Microsoft SQL SERVER 2008技术内幕:T-SQL语言基础》这本书是SQL Server数据库管理员和开发者的宝贵资源,它深入介绍了SQL Server 2008中的T-SQL(Transact-SQL)语言,这是SQL Server的核心查询语言。T-SQL不仅...

    SQL 语言艺术TXT版本

    从给定的文件信息来看,这是一本关于SQL语言艺术的书籍介绍,主要涉及SQL语言的基础、技巧以及在数据库管理中的应用。以下是对该书所包含的重要知识点的详细阐述: ### SQL语言概述 SQL(Structured Query ...

    SQL语言艺术,学习SQL的好帮手

    1. **SQL语言艺术的全面解析**:《SQL语言艺术》是一本深入探讨SQL语言的著作,由资深SQL专家Stéphane Faroult撰写,旨在超越传统教程,传授深层次的SQL理解和性能优化技巧。 2. **内容结构与覆盖范围**:全书共12...

    SQL语言艺术

    5 了如指掌:理解物理实现 物理结构的类型 冲突的目标 把索引当成数据仓库 记录强制排序 数据自动分组(Grouping) 分区是双刃剑 分区与数据分布 数据分区的最佳方法 预连接表 神圣的简单性 6 锦囊妙计:认识经典SQL...

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解复杂的逻辑并掌握T-SQL。  本书适合于专业数据库开发者、BI开发者、DBA和以SQL Server...

    强烈推荐DBA SQL语言艺术 中文版

    根据提供的标题和描述,我们可以推断出这是一本关于数据库管理员(DBA)与SQL语言艺术的书籍。尽管部分内容没有提供具体的章节或知识点,我们仍可以从书名出发,结合DBA与SQL语言的重要知识点来进行详细阐述。 ### ...

    《SQL语言与数据库操作技术大全基于SQL Server实现》

    标题《SQL语言与数据库操作技术大全基于SQL Server实现》揭示了这本书的主题,是关于SQL语言以及利用SQL Server进行数据库操作的全面介绍。描述中的作者马军和李玉林可能是书的贡献者,而“SQL Server”指出了使用的...

    SQL_Server 面试笔试试题及答案

    * Transact-SQL:SQL Server 的存储过程语言 * Transact-SQL 命令:CASE、WAIT、BREAK、CONTINUE * Transact-SQL 数据类型:NUMERIC、DECIMAL、INTEGER、DATE SQL Server 面试题 * SQL Server 面试题涵盖了数据库...

    Microsoft SQL Server 2005技术内幕:T-SQ程序设计 【中文版】 1

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计 中文版本的 第一部分 第二部分地址:http://download.csdn.net/source/2680866

    sqlserver驱动包:sqljdbc4.jar

    SQL Server驱动包`sqljdbc4.jar`是微软官方提供的Java数据库连接器(JDBC),用于在Java应用程序中与Microsoft ...在开发过程中,正确理解和使用`sqljdbc4.jar`,可以极大地提升Java应用与SQL Server数据库的集成效率。

Global site tag (gtag.js) - Google Analytics