当前位置: 首页 > news >正文

读书笔记:分区不一定能让查询更快——关键要看使用场景

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

分区不一定能让查询更快——关键要看使用场景

很多人对分区有个误解:只要把大表分区,性能就能提升。但实际情况要复杂得多。分区可能带来三种结果:

  1. ✅ 查询变快
  2. ➡️ 查询性能不变
  3. ❌ 查询变慢,资源消耗倍增

数据仓库:分区的理想场景

在数据仓库中,分区确实能大幅提升性能。举个例子:

  • 你有张10亿行的表,包含10年数据
  • 查询只需要其中1年的数据
  • 如果按月分区,查询只需扫描1/10的数据
  • 其他90%的数据会被自动“跳过”

这就好比在图书馆里:如果你知道想要的书在“2023年”区域,就直接去那个区域找,不用翻遍整个图书馆。

OLTP系统:分区要格外小心

在OLTP系统(比如银行交易系统)中,情况完全不同:

  • 通常不会一次性查询海量数据
  • 分区的主要价值在于提高可用性和便于管理
  • 目标应该是:不影响现有查询性能

一个真实的分区陷阱

某团队有个1亿行的表,决定按主键哈希分区(分成16个分区),并在(所有者,对象类型,对象名)上创建了本地索引。

结果发现问题:

-- 这个查询性能很好(用了主键)
SELECT * FROM T WHERE PRIMARY_KEY = :X-- 但这些查询变慢了!
SELECT * FROM T WHERE OWNER = 'SCOTT'
SELECT * FROM T WHERE OWNER = 'SCOTT' AND OBJECT_TYPE = 'TABLE'

为什么变慢了?

  • 本地索引按主键分区,但查询条件用的是OWNER
  • 系统要扫描所有16个索引分区才能找到数据
  • 原本只需要7次逻辑读取,现在需要36次

解决方案:改用全局分区索引

-- 删除本地索引,创建全局哈希分区索引
CREATE INDEX t_idx ON t(owner,object_type,object_name)
GLOBAL PARTITION BY HASH(owner) PARTITIONS 16;

这样查询时,系统能直接定位到对应的索引分区,性能恢复正常。

重要提醒:哈希分区索引的局限性

  • 只适合等值查询(= 或 IN)
  • 不支持范围查询(>、<、BETWEEN)
  • 如果要查“WHERE OWNER > 'SCOTT'”,还是会扫描所有分区

关于排序的误解

很多人以为用了索引,数据就自动排序了——这是错误的!无论是否使用索引,只有ORDER BY能保证排序结果

分区在OLTP中的真正价值:高并发

虽然分区对查询性能提升有限,但在高并发场景下很有价值:

不分区的痛点 分区后的改善
所有插入都争用同一个表 分散到16个分区,争用减少
主键索引的“右侧热点”问题 16个独立的索引结构,热点分散
索引竞争激烈 负载分摊到多个索引

但要注意成本

分区需要额外的CPU开销来计算数据应该放在哪个分区。如果系统已经CPU紧张,分区可能让情况更糟。

总结

  • 数据仓库:分区能显著提升性能
  • OLTP系统:分区主要提高可用性和可管理性
  • 选择分区方案时,一定要分析实际的查询模式
  • 在高并发写入场景,分区能有效减少资源争用
  • 实施前务必测试,确保不会适得其反

记住:分区不是“一键提速”的魔法,用对了是利器,用错了是负担!

------------------作者介绍-----------------------
姓名:黄廷忠
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

http://www.jsqmd.com/news/32581/

相关文章:

  • 第一天笔记
  • quick save
  • cg0EoeZwd/bdvtAmh0q4PjjA4Pc=
  • openwrt 使用 移动WIFI USB RNDIS 上网
  • 【Agent】 ACE(Agentic Context Engineering)源码阅读笔记 ---(2)--- 训练
  • Codeforces Global Round 28 VP 记录
  • CSP-J/S HN 2025 游记
  • 20251104NOIP模拟
  • 软件工程团队项目第一次作业
  • 开源一个月Star破7000+!RustFS凭什么火出圈?
  • 第五届日月盾杯线下赛 web wp
  • 异常课后作业2
  • 日总结 22
  • Nlog配置文件nlog.config (.net core 6)
  • 重组抗体:从 “天然提取” 到 “基因定制”,抗体技术如何改写生物医药格局?
  • 2025年主流数据分类分级工具全面对比与选型指南
  • Http协议解析
  • 大模型应用开发技术路线(下):智能代理与多模态应用开发指南
  • NOIP 2024 T4 树上查询 小结
  • 高性能计算-CUDA-mma PTX 指令行为分析
  • NOIP 2022 T3 建造军营 小结
  • 英语_阅读_Digital classroom_待读
  • 2025.11.5——1绿1蓝
  • PhotoShop网页版(在线ps)在快速修复老照片,在线修旧如新
  • CSP - S 2025 游记
  • Revive Adserver SQL注入漏洞分析:关键词参数引发的数据库安全风险
  • 2025年插座厂家权威推荐榜:耳机插座,DC插座,防水耳机插座,专业品质与安全性能深度解析
  • 2025 年 11 月硅锰合金厂家推荐排行榜,硅锰合金颗粒,硅锰合金粉,高碳硅锰合金,低碳硅锰合金公司推荐
  • 2025年轻触开关厂家推荐排行榜,检测开关,按键开关,微动开关,防水开关源头厂家最新权威精选
  • 2025年连接器厂家推荐排行榜,USB连接器,电池连接器,TYPE-C连接器,防水TYPE-C连接器,防水USB连接器公司精选