storage
play

Storage April 2, 2018 1 IO + Buffering def Select(predicate, - PowerPoint PPT Presentation

Storage April 2, 2018 1 IO + Buffering def Select(predicate, source) while(source.hasMoreTuples) in_buffer = source.fetch() while(in_buffer.hasMoreTuples) tuple = in_buffer.readTuple() if(predicate(tuple)) out_buffer.output(tuple)


  1. Storage April 2, 2018 1

  2. IO + Buffering def Select(predicate, source) while(source.hasMoreTuples) in_buffer = source.fetch() while(in_buffer.hasMoreTuples) tuple = in_buffer.readTuple() if(predicate(tuple)) out_buffer.output(tuple) if(out_buffer.isFull) out_buffer.flush() 2

  3. IO + Buffering Generalize & Standardize! Have a component that handles buffering! 3

  4. The Buffer Manager API Query Interpretation and Optimization Relational Operators Allocate a page Files/Data Accessors Deallocate a page Buffer Management Disk Management Read from a page Database Write to a page 4

  5. The Buffer Manager Higher levels of the DB Disk Page Free Frame Pages allocated to frames as per page replacement policy 5

  6. Pinned Pages • Pinning a page indicates that it is being used. • The requestor must unpin the page when done. • The requestor must also indicate whether the page has been modified (with a ‘dirty’ bit) • Dirty pages must be written to disk • Pages may be requested multiple times • Use a pin count (reference count) to keep track. • Concurrency Control/Recovery may require other operations when replacing a frame. 6

  7. Buffer Replacement • Frames are chosen for replacement by a buffer replacement policy . • (e.g., LRU, MRU, Clock) • Policy can have a big impact! • Depends on the access pattern. • What is a worst-case scenario for LRU? 7

  8. Buffer Replacement • Frames are chosen for replacement by a buffer replacement policy . • (e.g., LRU, MRU, Clock) • Policy can have a big impact! • Depends on the access pattern. • What is a worst-case scenario for LRU? Hmmm… this sounds awfully familiar… 7

  9. Hey… Oliver! This sounds a lot like virtual memory! 8

  10. Buffer Managers vs Virtual Memory • Not a huge difference • Many lightweight DBs use VMem as a buffer manager! • Reasons to implement an explicit buffer manager: • Control when and how paging happens. • e.g., better/more efficient prefetching. • Control what gets paged in/out. • e.g., better knowledge of data access patterns. • Integrate additional memory layers (e.g., Network) 9

  11. Example-OS Paging image credit: openclipart.org 10

  12. Example-OS Paging Index : ‘Trees with ids in this range’ image credit: openclipart.org 10

  13. Example-OS Paging Read Index : ‘Trees with ids in this range’ image credit: openclipart.org 10

  14. Example-OS Paging Read Index : ‘Trees with ids in this range’ image credit: openclipart.org 10

  15. Example-OS Paging Read Aha, a Sequential Read! Index : ‘Trees with ids in this range’ image credit: openclipart.org 10

  16. Example-DB Paging Read Index : ‘Trees with ids in this range’ image credit: openclipart.org 11

  17. Example-DB Paging Read Read in precisely what you need. Index : ‘Trees with ids in this range’ image credit: openclipart.org 11

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend