本章讨论数据量增加时面对的特殊挑战,包括如何高效地搜索庞大的表,如何避免数据量稍有增长就可能出现的性能下降
在达到目标数据量之前,第一次严重的性能问题通常会出现。当数据量较少时,从最终用户的角度看不出糟糕的查询和糟糕的算法的影响。硬件本身的处理能力会隐藏巨大错误,完整扫描几十万条记录也不到一秒时间,我们可能严重地滥用硬件能力来弥补程序的错误,直到数据量变得相当可观时,真正的错误才被发现
当项目第一次出现性能危机时,通常会进行“专家调优”,增加几个本应一开始就有的索引。接下来的系统可能不太稳定,直到数据达到目标量。第二个性能危机通常会随着实际目标量的到来而出现。当系统投入生产环境,架构设计的弱点被重新评估,一些关键处理被积极重写,系统最后稳定下来
这些错误通常都会出现,也都能够得到解决,
不过造成无法挽回失败的,是数据库设计错误和架构选择错误。编程时我们必须预先考虑数据量的增加,而且面对逐渐增加的数据量时,必须尽快找出使性能快速恶化的查询并改写它们
不同数据库操作对数据量增加的敏感程度不同,要预先考虑查询对不同数据量的执行方式
受数据量增加的影响不大,比如基于主键的搜索,常见的B树索引,其结构趋于扁平,效率很高
受到数据量增加的线性影响,比如聚合函数,可以考虑对要处理的数据设定上限,让数据量保持在控制范围内
受到数据量增加的非线性影响,比如排序。读取较大的有序集合时,性能降低一点并不奇怪,而且通常较大型的排序需要将有序子集临时存储到慢得多的硬盘中。所以,通过调整分配给排序的内存数量来改善排序密集型操作的性能,是常见且有效的调优技巧
被排序的总数据量增加时,会导致显著的性能降低,所以攻取额外信息的join操作,应该延后到查询的最后阶段,即先对核心信息进行排序,再join其它的表。但要注意,由于排序是非关系层操作,这时优化器会比较保守,只尽量优化内层查询,排序聚合等操作阻止了优化器将内层查询与外层查询混合,最终,查询基本上按原始的编写方式执行
为了降低查询对数据量增加的敏感度,应该在较深层的查询中只操作绝对必要的数据,将辅助性的join操作留在外层
关联子查询在计算每一条返回记录时都被调用一次,应尽量减小关联子查询对外层查询元素的依赖性
当结果集在被检查记录中占的比例很高时,表扫描会较高效。如果使用分区,搜索条件就可以只操作表的一部分物理单元,从而使扫描效率极大提升。此时,对合理分区的部分进行大范围扫描,反而会比使用索引协助检查范围边界值更高效。当然,分区并不能解决所有大数据量的问题,分区必须注意分区键的分配均衡,数据范围的边界,包括上限和下限必须明确定义
归档并清除数据常被看作辅助手段,不过归档与清除数据是极敏感的操作,处理不好可能会造成性能上的问题
分享到:
相关推荐
第10章,集中兵力:应付大数据量 讲解如何应付大数据量 第11章,精于计谋:挽救响应时间 分享一些技巧,以挽救设计糟糕的数据库的性能 第12章,明察秋毫:监控性能 收尾,解释如何定义和监控性能
第10章,集中兵力:应付大数据量 讲解如何应付大数据量 第11章,精于计谋:挽救响应时间 分享一些技巧,以挽救设计糟糕的数据库的性能 第12章,明察秋毫:监控性能 收尾,解释如何定义和监控性能
T-SQL是微软为SQL Server数据库量身定做的数据库查询和编程语言。T-SQL以标准SQL为基础,增加了过程化编程的功能,使其能够处理更加复杂的数据库任务。 二、数据定义语言(DDL) DDL用于定义和管理数据库对象,包括...
10 集中兵力:应付大数据量 增长的数据量 数据仓库 11 精于计谋:挽救响应时间 数据的行列转换 基于变量列表的查询 基于范围的聚合 一般规则,最后使用 查询与列表中多个项目相符的记录 最佳匹配查询 优化器指令 12 ...
《SQL语言艺术+The Art of SQL》是一本深入探讨SQL语言和数据库性能优化的经典著作,适合数据库管理员、开发人员和数据分析师阅读。书中的内容既包括理论基础,也包含实践技巧,旨在帮助读者掌握如何有效地设计和...
本手册详细介绍了 DM SQL 语言的特点、保留字与标识符、功能及语句、数据类型、表达式等知识点,帮助用户更好地理解和掌握 DM SQL 语言的使用。 1. 结构化查询语言 DM_SQL 简介 DM_SQL 语言是达梦数据库管理系统的...
《SQL语言参考大全》是一本全面且权威的SQL学习资源,尤其以CHM版的形式,为读者提供了方便快捷的电子查阅体验。SQL,全称Structured Query Language,即结构化查询语言,是用于管理关系数据库的标准语言。这本书...
14. **SQL标准与方言**:了解SQL标准的不同版本(如SQL-92、SQL-99、SQL:2003等),并熟悉主要数据库系统(如MySQL、PostgreSQL、Oracle、SQL Server)对SQL的实现差异。 通过阅读《SQL语言参考大全》,你将能深入...
### SQL实现两张无关联表的数据列合并在一张结果集中 #### 实现思路及技术要点解析 在实际工作中,我们经常会遇到需要将两张无关联表的数据列合并到一个结果集中的需求。这种操作可以帮助我们更好地组织数据,使得...
它提供了使用Transact-SQL(T-SQL)的专家级指导,T-SQL是用于SQL Server的最常见的也是功能最强大的编程语言。该书由Itzik Ben-Gan权威执笔,重点关注语言特性以及它们如何被SQL Server引擎解释和处理。 通过本书...
在Java编程环境中,连接Microsoft SQL Server数据库通常需要特定的驱动程序,这就是所谓的JDBC驱动程序。`sqljdbc4-4.0.jar`是Microsoft提供的一个适用于Java的SQL Server JDBC驱动程序,它允许Java应用程序通过JDBC...
SQL数据生成器是一种工具,主要...通过使用SQL数据生成器,开发者和DBA可以更高效地进行数据库测试和准备,确保系统在真实数据量下的稳定性和性能。了解并掌握这些知识点将有助于更好地利用此类工具,提升工作效率。
本实验报告旨在让学生熟悉 Oracle 的 SQL * Plus 环境及使用方法,掌握 SQL 语言,能熟练运用 SQL 语言进行数据定义和数据操纵,并加深对关系数据模型的数据结构和约束的理解。 实验目的和要求 1. 通过上机实践,...
* 集中式管理:SQL语言支持集中式管理,所有的数据操作都可以在单个服务器上完成。 * 可扩展性:SQL语言支持多种数据类型和操作,易于扩展和修改。 SQL语言的应用非常广泛,包括: * 数据库管理:SQL语言是数据库...
在“labview写入数据到sql server2005”的场景中,LabVIEW被用来作为数据处理和控制工具,与SQL Server 2005数据库进行交互,实现数据的写入操作。SQL Server 2005是微软公司的关系型数据库管理系统,它提供了数据...