Download PPT

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Lecture 4
Database Internals
Database Internals Outline
Front End
Admission Control
Connection Management
Query System
(sql)
Parser
(parse tree)
Rewriter
(parse tree)
Planner & Optimizer
(query plan)
Executor
Storage System
Access Methods
Lock Manager
Buffer Pool
Log Manager
Start here
Flattening Example
Select employees in a department located in the Tech:
SELECT emp.*
FROM emp
WHERE EXISTS (
SELECT * FROM dept
WHERE emp.deptNo = dept.deptNo
AND dept.building = ‘Tech’);
SELECT emp.*
FROM emp, dept
WHERE emp.deptNo = dept.deptNo
AND dept.building = ‘Tech’;
Rewrite Study Break
Flatten this query (departments where number of
machines is more than number of employees):
SELECT dept.name
FROM dept
WHERE dept.num-of-machines ≥
(SELECT COUNT(emp.*) FROM emp
WHERE dept.name=emp.dept_name)
What happens if a department has zero employees?
Is this correct behavior?
Answer
SELECT dept.name
FROM dept,emp
WHERE dept.name=emp.dept_name
GROUP BY dept.name
HAVING dept.num-of-machines < COUNT(emp.*)
SELECT dept.name FROM dept
LEFT OUTER JOIN emp ON
(dept.name=emp.dept_name )
GROUP BY dept.name
HAVING dept.num-of-machines < COUNT(emp.*)
Database Internals Outline
Front End
Admission Control
Connection Management
Query System
(sql)
Parser
(parse tree)
Rewriter
(parse tree)
Planner & Optimizer
(query plan)
Executor
Storage System
Access Methods
Lock Manager
Buffer Pool
Log Manager
You are here
Plan Formulation
emp (eno, ename, sal, dno)
dept (dno, dname, bldg)
kids (kno, eno, kname, bday)
SELECT ename, count(*)
FROM emp, dept, kids
AND emp.dno=dept.dno
AND kids.eno=emp.eno
AND emp.sal > 50000
AND dept.name = 'eecs'
GROUP BY ename
HAVING count(*) > 7
Optimizer Phases
• Logical
• Physical
• Optimizer may use
– Heuristics (e.g., push down selections)
– Cost modeling
Data Access
• Scan heap file
• Index scan
Query Executor
• Iterative access
• Enable operator composition
Buffer Pool
• Manages memory utilization
• Acts as stepping stone between query
executor and disk
– Shared over all queries
Study Break #2
emp (eno, ename, sal, dno)
dept (dno, dname, bldg)
kids (kno, eno, kname, bday)
Write queries and their plans:
- Calculate the number of kids associated with
each dept
- Find the name(s) of the employee(s) who has
the most children
Queries
Number of kids associated with each dept:
SELECT dno, dname,count(*)
FROM dept,emp,kids
WHERE dept.dno = emp.dno and kids.eno =
emp.eno
GROUP BY dept.dno,dname;
Who has the most children:
WITH kid_counts as (SELECT eno,count(*) as cnt FROM kids
GROUP BY eno),
max_kids as (SELECT MAX(cnt) as max_kid FROM kid_counts)
SELECT ename
FROM emp, max_kids, kid_counts
WHERE emp.eno = kid_counts.eno
AND kid_counts.cnt = max_kid;
Related documents