Lab 08: InnoDB Internals
Overview
Step 1: B-Tree and Clustered Index Structure
docker run -d --name mysql-lab -e MYSQL_ROOT_PASSWORD=rootpass mysql:8.0
for i in $(seq 1 30); do docker exec mysql-lab mysql -uroot -prootpass -e "SELECT 1" 2>/dev/null && break || sleep 2; done
docker exec mysql-lab mysql -uroot -prootpass <<'EOF'
CREATE DATABASE innolab;
USE innolab;
-- Clustered index: the PRIMARY KEY IS the table (leaf pages store full rows)
CREATE TABLE employees (
emp_id INT NOT NULL,
dept_id INT NOT NULL,
name VARCHAR(100),
salary DECIMAL(10,2),
hire_date DATE,
PRIMARY KEY (emp_id), -- Clustered index on emp_id
INDEX idx_dept (dept_id), -- Secondary index
INDEX idx_salary (salary), -- Secondary index
INDEX idx_dept_salary (dept_id, salary) -- Composite secondary index
) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
-- Insert data
INSERT INTO employees (emp_id, dept_id, name, salary, hire_date)
SELECT
seq,
1 + (seq % 10),
CONCAT('Employee_', seq),
30000 + (seq * 7 % 70000),
DATE_ADD('2020-01-01', INTERVAL (seq % 1460) DAY)
FROM (
SELECT a.N + b.N * 10 + c.N * 100 + d.N * 1000 + 1 AS seq
FROM
(SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) a,
(SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) b,
(SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) c,
(SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) d
LIMIT 10000
) nums;
-- Check table stats
SHOW TABLE STATUS LIKE 'employees'\G
EOFStep 2: Visualize Clustered vs Secondary Index Lookup
Step 3: InnoDB Page Structure
Step 4: Tablespace — File Per Table
Step 5: Record Locks vs Gap Locks
Step 6: Secondary Index Stores Primary Key
Step 7: Observe Page Splits with Random vs Sequential Inserts
Step 8: Capstone — InnoDB Internals Audit
Summary
Concept
Details
Impact
Key Takeaways
Last updated
