[DB] Early Materialization vs. Late Materialization
Early Materialization vs. Late Materialization这两种 物化计谋(Materialization Strategies) 决定了数据库在实行查询时,如那边理操纵符的输出数据。
1. Early Materialization(早期物化)
界说
在 Early Materialization 中,查询操纵符(如 Join 或 Filter)在操纵完成后,直接把完整的输出数据复制到结果元组中。
优点
[*]数据完整性: 后续操纵符不需要再次访问基础表就能获取全部需要的数据。
[*]简单性: 每个操纵符的输出就是终极需要的数据,后续操纵可以直接处理。
缺点
[*]冗余数据: 如果查询只需要一部分字段,但 Join 等操纵复制了完整的元组,这会浪费内存和 I/O 资源。
[*]开销较高: 需要在每一步操纵中处理完整的元组数据。
案例:Early Materialization
查询示例:
SELECT R.id, S.cdate
FROM R
JOIN S ON R.id = S.id
WHERE S.value > 100;
表布局:
[*]表 R: (id, name)
[*]表 S: (id, value, cdate)
步调:
[*] Join 操纵:
[*]将表 R 和 S 举行毗连,输出包罗全部属性的完整元组: R.id | R.name | S.id | S.value | S.cdate
---------------------------------------
123| abc | 123| 1000 | 11/4/2024
123| abc | 123| 2000 | 11/4/2024
[*] 过滤操纵:
[*]应用过滤条件 S.value > 100,过滤掉不符合条件的元组。 R.id | R.name | S.id | S.value | S.cdate
---------------------------------------
123| abc | 123| 1000 | 11/4/2024
123| abc | 123| 2000 | 11/4/2024
[*] 投影操纵:
[*]终极只保留需要的字段 R.id 和 S.cdate: R.id | S.cdate
----------------
123| 11/4/2024
123| 11/4/2024
2. Late Materialization(延长物化)
界说
在 Late Materialization 中,查询操纵符的输出只包罗用于匹配的 Join 键以及元组的记录 ID(Record ID),而不会直接复制全部字段。
优点
[*]高效: 制止复制不必要的数据,尤其在列式存储中,不需要的列不会被加载。
[*]灵活性: 当终极需要的数据较少时,可以显著淘汰内存和盘算开销。
缺点
[*]需要额外查表: 如果后续操纵需要其他字段,可能需要再次访问基础表获取数据。
案例:Late Materialization
查询示例:
SELECT R.id, S.cdate
FROM R
JOIN S ON R.id = S.id
WHERE S.value > 100;
表布局:
[*]表 R: (id, name)
[*]表 S: (id, value, cdate)
步调:
[*] Join 操纵:
[*]输出仅包罗毗连键和记录 ID: R.id | S.RecordID
-----------------
123| 1
123| 2
[*] 过滤操纵:
[*]应用过滤条件 S.value > 100,结果: R.id | S.RecordID
-----------------
123| 1
123| 2
[*] 数据提取(Materialization):
[*]在投影阶段,根据 RecordID 从基础表中提取 S.cdate: R.id | S.cdate
----------------
123| 11/4/2024
123| 11/4/2024
通俗比喻
1. Early Materialization(提前打包)
比喻:快递打包
[*]你在堆栈操纵时,直接把需要送的物品打包好放到车上。
[*]优点: 后续操纵(比如配送)不需要回堆栈重新拿物品。
[*]缺点: 如果你打包的东西多了,可能会浪费空间或资源。
2. Late Materialization(延长打包)
比喻:先装清单,后取货
[*]你在堆栈先列清单(只记录订单号和货架位置),送货时再根据清单去堆栈取对应的物品。
[*]优点: 清单很轻,不占用太多空间,后续只拿需要的物品。
[*]缺点: 可能需要多次返回堆栈取货。
适用场景对比
特点Early MaterializationLate Materialization适用存储行式存储(Row Stores)列式存储(Column Stores)操纵复杂度每步操纵处理完整元组,开销较高每步只处理毗连键和记录 ID,淘汰冗余数据访问需求后续操纵需要的字段较多,适合一次性物化后续只需要少量字段,可以延长加载内存利用占用内存多,容易造成浪费占用内存少,适合大数据集 总结
[*]Early Materialization: 提前加载全部需要的数据,制止后续查表,适合行式存储和复杂查询。
[*]Late Materialization: 只输出毗连键和记录 ID,按需加载需要的数据,适合列式存储和聚焦字段较少的查询。
[*]数据库优化器会根据查询筹划和存储模式选择最优的物化计谋,提拔性能和资源利用率。
Cost Analysis of Joins
In database systems, Join operations are crucial for combining tables, and their cost (measured in I/O operations) is a key factor in query optimization. Here's a detailed breakdown:
https://i-blog.csdnimg.cn/direct/94aae49a130e4cf88e18f5e190e6def2.png
https://i-blog.csdnimg.cn/direct/37bc68eeed474375aea7af071cb96a19.png
https://i-blog.csdnimg.cn/direct/df29c9cc323f48cf990f2d8313af4b41.png
This is preview
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]