IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:Hash函数

共 2 篇相关文章

IT 累计浏览 2,749

数据映射–有序数组

这篇讲的是有序数组作为一种基础数据结构,在实现快速映射查找时的基本原理与技术特性。作者从二分查找需要的两个核心前提——数据有序和可快速取中值——切入,通过一个具体例子(如从有序集中查找4对应的数据),演示了如何通过折半排除逐步定位目标,并解释了其对数级时间复杂度 O(log2N) 的惊人效率。 但文章并未止步于算法演示,而是深入分析了这种简单结构在实际作为存储映射方案时的各项表现。它支持高效的范围查找,但在处理动态插入时会遇到巨大瓶颈,因为保持有序性意味着每次插入可能需要移动大量数据,写入代价极高。同时,纯粹的数组结构并不面向磁盘优化,其二分查找过程依赖的随机读取对磁盘性能是严峻挑战。 作者最后总结道,选择数据结构需基于具体场景,没有绝对的好坏,只有是否合适。这种从基础算法延伸到系统设计考量的分析,为理解存储产品的内部取舍提供了一个清晰的起点。

IT 累计浏览 4,226

Oracle hash分区的秘密

这篇讲的是Oracle hash分区的一个核心秘密:为何分区数推荐为2的次方,以及它如何在增加分区时避免全量数据迁移。作者从面试常见问题切入,剖析了Oracle的实现技巧。 关键在于,Oracle并非在运行时动态计算哈希,而是预先使用大于等于当前分区数的最小2的N次方作为“桶”的数量。例如,6个分区实际对应8个哈希桶,多余的数据被合并到现有分区中,这就造成了数据分布不均衡。当增加分区时(比如从6增至8),并非重新哈希所有数据,而是对特定分区执行split操作,将原先合并的桶数据拆分出来,其他分区的数据因此保持不变。 理解了这一点,也就明白了减少分区是merge而非drop。作者最后分享了自己项目中的务实方案:直接预分1024个分区分布到8台主机,后续扩展只需移动表和修改映射,思路异曲同工。