搜索
首页数据库mysql教程DB2面向OLTP环境的物理数据库设计:查询设计

在最基本的层面,包括选择、插入、更新和删除在内的 SQL 操作是应用程序与 DB2 数据库进行交互的方式。应用程序的总体性能和体验受到该应用程序所用的 SQL 操作的影响。 设计、维护、监视和调优 SQL 查询的完整处理超出了本文的范围。然而,我们从较高层次概

在最基本的层面,包括选择、插入、更新和删除在内的 SQL 操作是应用程序与 DB2 进行交互的方式。应用程序的总体性能和体验受到该应用程序所用的 SQL 操作的影响。 设计、维护、监视和调优 SQL 查询的完整处理超出了本文的范围。然而,我们从较高层次概述了查询设计的工具和一般准则,因为查询设计和物理设计彼此密切相关。

大多数物理数据库设计的特征对 SQL 语句并不明显,但为了更好地使用 DB2 特性,在编写查询时需要考虑到数据库的物理特征,如索引。例如,使用范围分区表时,选择查询即使没有包含谓词和范围分区键,也仍然可以正常工作。然而,它可能没有分区消除的性能优势。 另一方面,如果由于数据增长或其他任何原因,导致某个 SQL 操作无法满足业务服务水平协议,那么可能必须修改物理数据库设计。物理数据库设计变更的示例包括:增加索引、将常规表转换为范围分区表,或更改缓冲池的大小或关联,以达到预期的性能目标。

OLTP 工作负载查询

OLTP 工作负载中的查询通常较短,涉及极少的表,并返回较小的结果集。不过,相比其他类型的工作负载,在 OLTP 工作负载中有更多并发查询。 对于 OLTP 工作负载,设计可以快速返回结果的查询对于获得良好的性能是至关重要的。 此外,考虑到 OLTP 工作负载系统中一般有大量并发运行的查询。死锁、因超时等待锁定而回滚,甚至“死机”之类的事务可能会经常发生。导致较少的死锁和回滚的查询设计可以使查询性能有明显差异。

OLTP 应用程序对于使用范围分隔谓词的索引扫描是很好的候选者,因为它们往往只返回几个行,具有能够对一个键列使用平等谓词的资格。如果您的 OLTP 单查询使用表扫描,您可能想对解释设施 (explain facility) 数据进行分析,以确定不使用索引扫描的原因。

隔离级别

DB2 数据库管理器支持以下四种类型的隔离级别。它们按对性能的影响以降序排列,但在访问和更新数据时,它们需要的维护则是以升序排列的。

可重复读 (RR)

RR 隔离级别将锁定应用程序在某个工作单元内引用的所有行。使用此隔离级别,丢失更新、访问未提交的数据和幻像行 (phantom row) 是不可能的。

读稳定性 (RS)

RS 隔离级别只锁定应用程序在工作单元内检索的那些行。

游标稳定性 (CS)

CS 隔离级别锁定应用程序的事务所访问的任何行,同时将游标定位到该行上。 未提交的读 (UR) UR 隔离级别允许应用程序访问其他事务未提交的变更。未提交读对只读和可更新游标的工作方式不同。

应用程序死锁

死锁影响数据库系统的性能。当死锁发生时,数据库管理器会选出要停止或回滚哪些事务(受害者)。这种影响会导致用户获得不好的体验。如果数据库配置参数设置不正确,那么用户可能会遇到停留在死锁状态的情况,最终可能需要数据库管理员来解决死锁。

当您发出包含 WITH RELEASE 子句的 CLOSE CURSOR 语句来关闭游标时,数据库管理器会尝试释放游标持有的所有读锁。表读锁是 IS、S 和 U 表锁。行读锁是 S、NS 和 U 行锁。块读锁是 IS、S 和 U 块锁。 WITH RELEASE 子句对在 CS 或 UR 隔离级别下操作的游标没有影响。对于在 RS 或 RR 隔离级别下操作的游标,WITH RELEASE 子句取消了这些隔离级别的部分保证。具体来说,一个 RS 游标可能会遇到不可重复读现象,一个 RR 游标可能会遇到一个不可重复读或幻读。

如果在关闭原本在 RR 或 RS 隔离级别下操作的游标后,您通过 WITH RELEASE 子句重新打开它,那么您会获得新的读锁。 在某些情况下,在结果集关闭后会仍然保持锁定,并且提交事务。如果在发出 COMMIT 语句之前关闭 CURSOR WITH HOLD,可以确保锁定被释放。即使在使用动态 SQL 的未提交读应用程序中,也会获得目录锁。要释放目录锁,请显式发出 COMMIT 语句。

LOCK TABLE 语句锁定整个表。只锁定在 LOCK TABLE 语句中指定的表,没有锁定指定表的父表和依赖表。直到提交或回滚工作单元,才会释放锁定。您可以使用该语句防止锁升级。您必须确定是否锁定整个表及相关表是必要的,然后才能在并发性和性能方面实现想要的结果。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
MySQL中有哪些不同的存储引擎?MySQL中有哪些不同的存储引擎?Apr 26, 2025 am 12:27 AM

mysqloffersvariousStorageengines,每个suitedfordferentusecases:1)InnodBisidealForapplicationsNeedingingAcidComplianCeanDhighConcurncurnency,supportingtransactionsancions and foreignkeys.2)myisamisbestforread-Heavy-Heavywyworks,lackingtransactionsactionsacupport.3)记忆

MySQL中有哪些常见的安全漏洞?MySQL中有哪些常见的安全漏洞?Apr 26, 2025 am 12:27 AM

MySQL中常见的安全漏洞包括SQL注入、弱密码、权限配置不当和未更新的软件。1.SQL注入可以通过使用预处理语句防止。2.弱密码可以通过强制使用强密码策略避免。3.权限配置不当可以通过定期审查和调整用户权限解决。4.未更新的软件可以通过定期检查和更新MySQL版本来修补。

您如何确定MySQL中的慢速查询?您如何确定MySQL中的慢速查询?Apr 26, 2025 am 12:15 AM

在MySQL中识别慢查询可以通过启用慢查询日志并设置阈值来实现。1.启用慢查询日志并设置阈值。2.查看和分析慢查询日志文件,使用工具如mysqldumpslow或pt-query-digest进行深入分析。3.优化慢查询可以通过索引优化、查询重写和避免使用SELECT*来实现。

如何监视MySQL Server的健康和性能?如何监视MySQL Server的健康和性能?Apr 26, 2025 am 12:15 AM

要监控MySQL服务器的健康和性能,应关注系统健康、性能指标和查询执行。1)监控系统健康:使用top、htop或SHOWGLOBALSTATUS命令查看CPU、内存、磁盘I/O和网络活动。2)追踪性能指标:监控查询每秒数、平均查询时间和缓存命中率等关键指标。3)确保查询执行优化:启用慢查询日志,记录并优化执行时间超过设定阈值的查询。

比较和对比Mysql和Mariadb。比较和对比Mysql和Mariadb。Apr 26, 2025 am 12:08 AM

MySQL和MariaDB的主要区别在于性能、功能和许可证:1.MySQL由Oracle开发,MariaDB是其分支。2.MariaDB在高负载环境中性能可能更好。3.MariaDB提供了更多的存储引擎和功能。4.MySQL采用双重许可证,MariaDB完全开源。选择时应考虑现有基础设施、性能需求、功能需求和许可证成本。

MySQL的许可与其他数据库系统相比如何?MySQL的许可与其他数据库系统相比如何?Apr 25, 2025 am 12:26 AM

MySQL使用的是GPL许可证。1)GPL许可证允许自由使用、修改和分发MySQL,但修改后的分发需遵循GPL。2)商业许可证可避免公开修改,适合需要保密的商业应用。

您什么时候选择InnoDB而不是Myisam,反之亦然?您什么时候选择InnoDB而不是Myisam,反之亦然?Apr 25, 2025 am 12:22 AM

选择InnoDB而不是MyISAM的情况包括:1)需要事务支持,2)高并发环境,3)需要高数据一致性;反之,选择MyISAM的情况包括:1)主要是读操作,2)不需要事务支持。InnoDB适合需要高数据一致性和事务处理的应用,如电商平台,而MyISAM适合读密集型且无需事务的应用,如博客系统。

在MySQL中解释外键的目的。在MySQL中解释外键的目的。Apr 25, 2025 am 12:17 AM

在MySQL中,外键的作用是建立表与表之间的关系,确保数据的一致性和完整性。外键通过引用完整性检查和级联操作维护数据的有效性,使用时需注意性能优化和避免常见错误。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具