Query Execution
PROJECT #3 - QUERY EXECUTION
่ฟไธช project ไธป่ฆๆฏๅฎ็ฐๅขๅ ๅฏนๆฐๆฎๅบ็ณป็ป็ๆง่ก่ฎกๅ็ๆฏๆใ้่ฆๅฎ็ฐๅ็ง executors๏ผๅฐ query plan ไผ ๅ ฅ executors ็ถๅๆง่กๅฎไปฌใ้่ฆๅฎ็ฐไธๅ็ executors๏ผ
Access Methods: Sequential Scans, Index Scans
Modifications: Inserts, Updates, Deletes
Miscellaneous: Nested Loop Joins, Index Nested Loop Joins, Aggregation, Limit/Offset
ๆไปฌ้่ฆๅฎ็ฐ่ฟญไปฃๆฅ่ฏขๅค็ๆจกๅ๏ผๆฏไธชๆฅ่ฏข่ฎกๅๆง่กๅจๅฎ็ฐไบไธไธช Init()
ๅฝๆฐๅ Next()
ๅฝๆฐใๅฝ DBMS ่ฐ็จ executors ็ Next()
ๅฝๆฐๆถ๏ผๅฎไผ่ฟๅ
ไธไธช
tuple
ๅนถ่ฟๅtrue
ๆฒกๆ
tuple
ๅฏไปฅๅ่ฟๅๆถ๏ผ่ฟๅfalse
TASK #1 - SYSTEM CATALOG
่ฟไธช task ไธ้พ๏ผไธป่ฆๆฏๅฎ็ฐ
src/include/catalog/catalog.h
ๆไปถ๏ผcatalog ็ปดๆคไบๆฐๆฎๅบ็ meta-data๏ผไธญ็่ฆๆฑๅฎ็ฐ็ๅฝๆฐ๏ผ่ฟไบๅฝๆฐไธๆฐๆฎๅบ็่กจๅ็ดขๅผๆๅ ณใ
GetTable()
ไฝฟ็จstd::unordered_map
็at
ๅฝๆฐ๏ผๅฎไผๅไธๆ ๆฃๆฅ๏ผๅฝkey
ไธๅญๅจๆถไผๆๅบๅผๅธธๅจ
CreateIndex
ๅฝๆฐไธญ๏ผๅๅปบ่กจ็็ดขๅผๆถ๏ผ้่ฆไฝฟ็จ table heap ็่ฟญไปฃๅจๅๅบๆฏไธช tuple๏ผ็ถๅไฝฟ็จ tuple ็KeyFromTuple
ๆ้ key tuple ๆๅ ฅๅฐ B+ Tree ไธญ
TASK #2 - EXECUTORS
SEQUENTIAL SCAN
ๅจ้กบๅบๆง่กๅจไธญ๏ผๅฆไฝไฟๅญ
table_heap_
็่ฟญไปฃๅจๅข๏ผไธ็ดๆฒกๆพๅฐ่งฃๅณๆนๆก๏ผๅ ไธบๆๅ ้ๆฉๅจไฝฟ็จstd::vector<Tuple>
ๅ ไฟๅญ็ปๆ๏ผ็ถๅๅจNext
ไธญไธไธชไธไธช่ฟๅใๅจ่ฟๅ็ปๆๆถ๏ผ่ฎฐๅพ่ฆๆ นๆฎOutputSchema
ๆ้ tuple ่ฟๅ
INDEX SCANS
้่ฟ B+ Tree ็ดขๅผ๏ผๅ ่ทๅพ
RID
๏ผ็ถๅๆ นๆฎRID
ๅจtable_heap_
ไธญๅพๅฐๅฏนๅบ็ tuple
้่ฟ
dynamic_cast<BPlusTreeIndex<GenericKey<8>, RID, GenericComparator<8>> *>(indexInfo_->index_.get());
ๅฐIndex
่ฝฌๆBPlusTreeIndex
็ฑปๅ
INSERT
ๆๅ ฅๆง่กๅจ้่ฆๅบๅๅพ ๆๅ ฅ็ๆฐๆฎๆฏ
RawInsert
่ฟๆฏๆฅ่ชchild_executor_
ๅฆๆๅพ ๆๅ ฅ็่กจๅญๅจ็ดขๅผ้่ฆไฝฟ็จ
KeyFromTuple
ๆ้index_key
๏ผ็ถๅๅฐๅฎๆๅ ฅๅฐ B+ Tree ็ดขๅผไธญengine ๅจๆๅ ฅใๆดๆฐใๅ ้คไธ้่ฆๅฐ tuple ๆทปๅ ๅฐ
result_set
ไธญ๏ผๅฆๅๅจ test ไธญไผๆฅresult_set
ไธไธบ็ฉบ็้่ฏฏ
UPDATE
็ฑ
child_executor_
็Next
ๆไพ tuple๏ผ็ถๅ่ฐ็จGenerateUpdatedTuple
็ๆๅพ ๆดๆฐ็ tuple๏ผๆๅไฝฟ็จtable_heap_->UpdateTuple
่ฟ่กๆดๆฐๆไฝ
DELETE
็ฑ
child_executor_
็Next
ๆไพ tuple่ฐ็จ
table_heap_->MarkDelete
ๆ ่ฎฐ่ฟไธช tuple ้่ฆๅ ้คๅฆๆๅพ ๆๅ ฅ็่กจๅญๅจ็ดขๅผ้่ฆไฝฟ็จ
KeyFromTuple
ๆ้index_key
๏ผ็ถๅๅจ B+ Tree ็ดขๅผไธญๅฐ่ฟไธช Key ๅ ้ค
NESTED LOOP JOIN
ไฝฟ็จ
left_executor
ๅright_executor
ๆไพ็ tuple ่ฟ่กEvaluateJoin
ๆ้ ็ฌฆๅๆกไปถ็ tuple
INDEX NESTED LOOP JOIN
ไฝฟ็จ็ดขๅผๆฅ่ฟ่ก Join๏ผ่ฟๆ ทๅฐฑไธ้่ฆๆซๆๆดไธช inner tableใๅ ๆญคๆไปฌ้่ฆๅฐ outer tuple ่ฝฌๅไธบๅฏนๅบ็
key
๏ผ็ถๅๅจ inner table index ไธญ่ฟ่กๆฅๆพใ
ๆต่ฏ/้ช่ฏ/ๆๅ
ๆต่ฏ
ๆ ผๅผ้ช่ฏ
ๆๅ
็ถๅๅๅพ https://www.gradescope.com ๆไบคไปฃ็
Last updated