CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1...

54

Transcript of CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1...

Page 11: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

mmap

page1 page2 page3 page4

page1

page2

page3

page4

Page 12: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

mmap

page1 page2 page3 page4

page1

page2

page3

page4

page1 page1

Page 13: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

mmap

page1 page2 page3 page4

page1

page2

page3

page4

page1 page1

page3

page3

Page 14: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

mmap

page1 page2 page3 page4

page1

page2

page3

page4

page1 page1

page3

page3

Page 26: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

→ page_id offset/slot→

CTID (4-bytes)

ROWID (10-bytes)

ROWID (8-bytes)

Page 29: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

→→

Header

Page

Data

Page

Data

Page

Data

Page

Data

Page 30: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

Directory

Page

Data

Page

Data

Page

Data

Page 31: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

→→→

Log File

…INSERT id=1,val=a

INSERT id=2,val=b

DELETE id=4

UPDATE val=X (id=3)

UPDATE val=Y (id=4)

INSERT id=3,val=c

Page 32: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

Log File

INSERT id=1,val=a

INSERT id=2,val=b

DELETE id=4

UPDATE val=X (id=3)

UPDATE val=Y (id=4)

INSERT id=3,val=c

SELECT * FROM tableWHERE id = 1

Page 33: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

Log File

INSERT id=1,val=a

INSERT id=2,val=b

DELETE id=4

UPDATE val=X (id=3)

UPDATE val=Y (id=4)

INSERT id=3,val=c

…id=1

id=2

id=3

id=4

SELECT * FROM tableWHERE id = 1

Page 34: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

Log File

id=1,val=aid=2,val=bid=3,val=Xid=4,val=Y

Page 37: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

Header

Tuple #1

Tuple #2

Tuple #3

Page 38: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

Header

Tuple #1

Tuple #3

Page 39: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

Header

Tuple #1

Tuple #3

Tuple #4

Page 40: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

→→

Header

Tuple #1

Tuple #3

Tuple #4

Page 41: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

→→

Header

Tuple #4

Tuple #2

Tuple #3

Tuple #1

Page 42: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

→→

Header

Tuple #4

Tuple #2

Tuple #3

Tuple #1

Page 44: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

→→

Header Attribute Data

Page 45: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

Header a b c d e

CREATE TABLE foo (a INT PRIMARY KEY,b INT NOT NULL,c INT,d DOUBLE,e FLOAT

);

Page 46: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

INTEGER BIGINT SMALLINT TINYINT→

FLOAT REAL NUMERIC DECIMAL→

VARCHAR VARBINARY TEXT BLOB→

TIME DATE TIMESTAMP→

Page 48: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

#include <stdio.h>

int main(int argc, char* argv[]) {float x = 0.1;float y = 0.2;printf("x+y = %.20f\n", x+y);printf("0.3 = %.20f\n", 0.3);

}

x+y = 0.300000011920928955080.3 = 0.29999999999999998890

Page 49: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

→ NUMERIC DECIMAL

→ VARCHAR

Page 50: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

typedef unsigned char NumericDigit;

typedef struct {

int ndigits;

int weight;

int scale;

int sign;

NumericDigit *digits;

} numeric;

Page 51: CMU 15-445/645 Database Systems (Fall 2017) :: Database ... · mmap page1 page2 page3 page4 page1 page2 page3 page4 page1 page3

typedef unsigned char NumericDigit;

typedef struct {

int ndigits;

int weight;

int scale;

int sign;

NumericDigit *digits;

} numeric;