MySQL from a Kakao Interviewer Handling 1 Trillion++ Data Points
This course provides a step-by-step learning path, ranging from the fundamental usage of MySQL to advanced techniques required in real-world production environments. It covers a wide range of topics, including data modeling techniques based on various case studies and practical data, evaluating the effectiveness of Foreign Key designs, analyzing Google Calendar schema DDL, and modern DDL design principles. Through this course, you will gain an in-depth understanding of how to utilize MySQL as a core system component rather than just a simple database.
The more I reflect on it, the more I feel it contains truly great content. I think it would be excellent for those who have a habit of self-directed learning.
If you go through the detailed explanations of the major topics and take some time to contemplate them on your own... I believe it is structured with content that is better than any other lecture.
5.0
이병석
89% enrolled
I'm a developer in my fourth year of professional experience... and I had no idea this course would dive so deep into MySQL.
I highly recommend this course to anyone who says, "I only know how to write basic queries" when it comes to MySQL.
I believe that how well you understand the DB determines your ability to go beyond simple query tuning and implement various patterns in your services. I truly learned a lot.
This course was like a long-awaited rain...!
5.0
황규민
33% enrolled
This is a lecture that truly elevates one's perspective. I once used the Strategy Pattern to adhere to OCP instead of using switch-case statements at the application level, and it feels similar to using dimension tables to avoid case-when at the database level. I didn't know there were patterns in SQL as well. I feel like I can grow even further.
What you will gain after the course
Data modeling processes and relational structure optimization techniques commonly used in the industry
Integrity and Performance Management Strategies Using Foreign Keys, Indexes, and Transactions
Service-Oriented DDL Design and Schema Structure Analysis: A Case Study of Google Calendar
MySQL Performance Tuning and Query Optimization Patterns in High-Traffic Environments
Development · Programming · Database
I can write queries, but I can't design tables
I use SELECT. The problem arises when I have to design a table from scratch—whether I should apply a Foreign Key, if the schema generated by the ORM is optimal, or how to store things like recurring schedules. This course starts with queries and goes all the way to design and engine internals.
Difficulty: Beginner
MySQL 8.x
Actual queries provided
Section Quizzes
Unlimited access period
From syntax to engine internalsINSERT·UPDATE·DELETE·SELECT · JOIN · Anti-patterns · Modeling · InnoDB
Google Calendar SchemaWe will actually design how to store recurring schedules
Two current developers12-year veteran interviewer at Kakao HQ · Pangyo platform server developer
MySQL is the relational database used by most services. This course goes beyond just how to use queries and covers everything from schema design to the internal engine.
Where this lecture begins
Knowing how to use it and knowing how to design it are two different things.
What I am doing now
Write a query
Extract the necessary data. If it's slow, add another index. It usually works out.
When you need to decide on the structure
The point where things get stuck
Drawing a table
Entities with more than twenty attributes, recurring schedules, and foreign keys that you're unsure when to apply.
Queries are written on top of an existing structure, while design is the task of determining that structure. This course organizes queries in the first half and moves on to design in the second half.
Where this lecture began
This is an actual conversation that took place.
This is a conversation that came about while looking at the reviews of the previously created MySQL course together.
This is a conversation we had after looking at the reviews for the MySQL course we made previously.
HHongI think the content of the MySQL lecture we made together last time is all good, but there are more people than I expected who want to focus on the basics. That part is bothering me a bit.
TToss DeveloperI had the same thought. I prepared it wanting to draw the big picture, but looking at the reviews, it seems many people want a focus on the basics and modeling perspective.
KKakao Developer (Interviewer)I also thought the content itself was very good, but I did wonder if it was truly a lecture for complete beginners. After seeing that, I wanted to try covering it as well. Since I also serve as an interviewer, I see a lot of junior-level candidates.
HHongSo, I reached out to organize everything from the basics to advanced patterns, covering realistic DDL design principles and practical design.
KKakao Interviewer (Developer)Then I'll participate this time. I'm thinking of a style that starts from a junior level and gradually covers senior perspectives.
What you will learn
In the order of Syntax · JOIN · Anti-patterns · Modeling · Internals
Basic SyntaxOrganizes INSERT, UPDATE, DELETE, and SELECT by dividing them into basic and advanced levels.
JOINThe behavior of Nested Loop Joins, NULL handling in LEFT JOINs, and the differences in execution plans between WHERE and ON clauses
Anti-patterns We examine five frequently occurring cases through their problems and solutions
Data ModelingFrom logical models to physical design strategies like One Table per Anchor, Side Table, and EAV
Google Calendar Design We explore recurring events and slot structures using real-world service examples.
Foreign Key history and options, and the question of "is it always right?"
Inside the Engine From transactions, locks, MVCC, optimizer, B-Tree, to the buffer pool in the final section
A scene of an anti-pattern
Same result, different execution plans
There are cases where it is slow even though an index has been applied. If you wrap an index column in a function, the index cannot be used.
안티 패턴
WHERE DATE(created_at) = '2026-01-01'
Even if an index is set, it cannot be utilized.
Because it scans the entire table, it will get slower as the amount of data increases.
You won't know why it's slow until you look at the execution plan.
고친 뒤
WHERE created_at >= '2026-01-01' AND created_at < '2026-01-02'
By leaving the column as is, it changes to an index range scan.
The result is the same, only the amount of data read is reduced.
In the same way, we fix five anti-patterns one by one.
Section 4 covers CASE WHEN, dimension tables, SELECT ALL in views, abuse of DISTINCT, and view nesting in the same manner.
Physical Design Strategies
Three things to choose from when the number of attributes increases
How to store an entity with dozens of attributes that are answered with "Yes/No." There is no right answer, only trade-offs.
One Table per AnchorGather everything into a single base table. Reading is simple, but the number of columns keeps increasing.
Side TableSeparates the main body and its components. Joins increase, but the main body becomes lighter.
EAVStores attributes as rows. It offers flexibility but makes queries and constraints difficult.
In Section 5, we compare the three side-by-side and continue to discuss what issues arise during Schema Evolution. In Section 6, we design recurring events and slot structures using Google Calendar as an example.
The last section
It goes deep into the engine.
Questions that go deep during interviews are usually in this area. The entire final section is dedicated to this.
MVCC
Gap Lock
B-Tree Index
Buffer Pool LRU
Autocommit
Intention Lock
Isolation Level
Query Rewriting
Histogram
Filesort
Partitioning
InnoDB Page
Doublewrite Buffer
WAL · fsync
It doesn't just end with a list of terms. We will examine, one by one, the differences between statement-based and row-based approaches, the units at which locks are held, and how pages are evicted from the buffer pool.
From Query to Design
It starts from basic syntax and leads all the way to the internals of InnoDB.
The front part covers syntax and JOINs, the middle focuses on anti-patterns and modeling, and the final part deals with the engine internals.
01
Course Introduction
Course Introduction
Technical terms that are good to know as basics in MySQL [ File Attached ]
02
MySQL Basics for Everyone
MySQL INSERT Basic Guide for Everyone
MySQL INSERT Advanced Guide for Everyone
MySQL UPDATE Basic Guide for Everyone
MySQL UPDATE Advanced Guide for Everyone
MySQL DELETE Basic Guide for Everyone
MySQL DELETE Advanced Guide for Everyone
MySQL Mock Data Script
A Beginner's Guide to MySQL SELECT That Anyone Can Understand
MySQL SELECT Advanced Guide for Everyone
Section 2 Quiz
03
Reasons to use MySQL: JOIN
Various JOINs in MySQL
Nested Loop Join, Matched Function
NULL handling in LEFT JOIN and execution plans for WHERE vs. ON conditions
Subquery Unnesting, CTE, AST
Section 3 Quiz
04
Various SQL anti-patterns to avoid
SQL Anti-Pattern 1: CASE WHEN and Dimension Table & View Patterns
SQL Anti-Pattern 2: Problems and Solutions for Using Functions on Indexed Columns
SQL Anti-Pattern 3: Problems and Solutions of Using SELECT ALL in Views
SQL Anti-Pattern 4: Problems and Solutions for Duplicate Issues Caused by Overuse of DISTINCT
SQL Anti-Pattern 5: Problems and Solutions of Excessive View Layer Stacking
Section 4 Quiz
05
Data modeling techniques learned through numerous examples
Data Modeling: Defining Numerous Yes or No Attribute Designs and Logical Models
Data Modeling: Physical Design Strategy One Table per Anchor
Data Modeling: Physical Design Strategy Side Table (Separated Table)
Data Modeling: Physical Design Strategy Entity–Attribute–Value (EAV)
Database Design Deep Dive Schema Evolution
Database Design Deep Dive Modern Alternatives
Section 5 Quiz
06
Data Modeling with the Google Calendar Example
Defining the Google Calendar Problem and Understanding the Logical Model
Google Calendar Basic All-Day Events
Tangled Attribute for Modeling Google Calendar Recurring Events
Google Calendar Rendering (Execution) Model - Slot Structure
Section 6 Quiz
07
Foreign Keys and Strategy Patterns
Foreign Key: The Core and History of Data Consistency
Foreign Keys Enforced & References Options
Foreign Keys JOIN & one equals one
Is a Foreign Key always the right pattern?
Section 7 Quiz
08
MySQL Advanced Topics
Section Introduction
MySQL Transaction Deep Dive [ LifeCycle, Autocommit, Statement vs Row based ]
MySQL Lock [ Intention Lock, Gap Lock, Multiple Granularity ]
MySQL InnoDB [ Recovery, Log, MVCC ]
Transaction Isolation Level Deep Dive
MySQL Optimizer [ Query Rewriting, Histogram ]
Filesort, Temporary Table and Partitioning
MySQL Storage Architecture InnoDB Page
MySQL B-Tree Index [ Clustered, Secondary, Page, Format ]
MySQL Page Management Buffer Pool [ LRU ]
Doublewrite Buffer, Performance from the perspective of WAL and FSync
Section 8 Quiz
For people like this
Who is this course for?
Beginner and intermediate developers who want to build a solid foundation in MySQL basics
Those who find entity and relationship design difficult and want to know when and why to use Foreign Keys.
Backend developers who are curious about how to design MySQL for large-scale services
Those who want to organize typical DB interview topics such as transactions, integrity, and indexes based on practical standards.
Developers who want to view MySQL not just as storage, but as a core component of service design
The current market
Stories about AI replacing developers
New recruitment is decreasing, and companies are trying to hire only those who are proven. These are articles that have come out in recent months.
Krafton, which achieved record-breaking performance, has begun cutting its workforce. The reason given was to transition into an 'AI-first' company.
SW specialist companies are stopping the recruitment of new developers. There are also projections that the hiring of entry-level developers will plummet by 77%.
53% of game designers answered, "AI will replace my job." Cases of recommended resignation have also been reported.
As much as companies are feeling uneasy, those being hired must demonstrate a clearer distinction. Ultimately, studying is something you do on your own, but depending on what you look at and from what perspective, the depth of what you can explain will differ even when spending the same amount of time. I created this lecture to pass on that perspective.
Course Reviews
Stories from those who listened first
I copied this directly from the Inflearn course reviews.
"This was one of the most beneficial lectures I've ever taken on Inflearn. From simple MySQL content to actual DDL design theory and internal perspectives, I think it's a lecture that is truly hard to find anywhere else. I don't think I've ever seen a lecture like this on Inflearn before."
I like number 8 · Written after 91% completion
"As a 4th-year developer working in the field, I didn't realize this course would allow me to learn MySQL in such depth. I would highly recommend this course to anyone who says, "I only know how to write basic queries." I learned a wide variety of patterns to apply to services, going well beyond just query tuning."
Byeong-seok Lee · Written after 89% completion
"I think there is a lot of truly great content that gets better the more you reflect on it. If you learn the details of the major topics and take some time to think about them on your own, I believe this course is structured with better content than any other lecture."
warna · Written after 91% completion
Instructor
Created together by two current developers
It was co-created by Choi, a 12-year developer who develops servers at Kakao headquarters and also serves as an interviewer, and Hong, a platform server developer in Pangyo.
KAKAO · BACKEND ENGINEER · 12 years of experience · Interviewer
Choi
I am a 12-year backend developer building servers at Kakao headquarters, and I also serve as an interviewer. In interviews, I focus more on whether a candidate can design systems rather than just knowing programming syntax. I have brought that exact perspective into this lecture.
"Writing good queries and designing structures are different skills."
Current Kakao Headquarters Server Developer · Interviewer · Computer Science Major
Large-scale dataData modelingInterviewerBackend
Knowledge Sharer · Pangyo Platform Server Development
Hong
I am in charge of platform server development in Pangyo. I continue my activities as a knowledge sharer to share the methods I studied myself and the problems and solutions I encounter in practice. These lectures are not created alone, but together with several developers currently working in the field.
"MySQL is easy, but when it actually comes to designing tables from scratch, I get stuck every time."
Platform Server DevelopmentDatabaseMultiple Backend Courses
Frequently Asked Questions
MySQL Course Frequently Asked Questions
Q.Can I take this course even if I'm using MySQL for the first time?
⌄
The difficulty level is set to introductory. Section 1 covers basic terminology, and the entirety of Section 2 is dedicated to INSERT, UPDATE, DELETE, and SELECT. Since each of these is divided into basic and advanced levels across two lectures, the syntax stage is not skipped.
Q.How much of data modeling is covered?
⌄
It starts from logical models and goes all the way to physical design strategies. It covers One Table per Anchor, Side Table, and EAV respectively, leading into the problems that arise as schemas evolve and their modern alternatives. In the following section, we use Google Calendar as an example to design recurring event modeling and slot structures.
Q.Do I have to use Foreign Keys?
⌄
Section 7 addresses that question. After summarizing the history of foreign keys, enforcement options, and their relationship with joins, the final lecture is titled "Is Foreign Key Always the Right Pattern?" It doesn't just end with a "should or shouldn't use" conclusion but examines which side is more advantageous under specific conditions.
Q.Do I need to know the internal workings of the engine?
⌄
If an interview goes deep, it usually lands in this area. The final section covers the transaction lifecycle, Intention Locks and Gap Locks, MVCC and recovery, isolation levels, optimizer query rewriting and histograms, B-Tree index structures, buffer pool LRU, Doublewrite Buffer, and WAL.
Q.Is practice data provided?
⌄
Section 2 contains the Mock Data Script. You can insert that and run the queries covered in the lecture exactly as they are. Actual MySQL queries are provided for each lecture.
Q.Is this helpful for interview preparation?
⌄
Created by a developer who serves as an interviewer at Kakao. The course structure reflects the perspective of how database questions are evaluated, and each section includes quizzes for self-assessment.
We design the structure beyond just queries
Starting from basic syntax, we will look through everything to modeling and the internal engine.
It takes a long time when you're stuck alone. There is a separate space where you can comfortably share everything from parts you get stuck on while taking the lecture, questions that arise while applying it to your own service, to stories about careers and the industry.
OPEN CHAT · Developer Community
What do we share?
We share stories about real-world problems encountered in practice, what kind of architectures others have chosen, and developer careers. Questions related to the lectures are also welcome.
"The spots where you get stuck are usually where others get stuck too. Asking someone who has already passed through is the fastest way."
I started studying development after becoming interested in it while idling at home, and I am currently responsible for platform server development in Pangyo. I am continuing my activities as a knowledge sharer because I want to provide you with the methods I used to study, as well as the various problems and solutions you may encounter in practice.
These lectures are not created solely through my own knowledge. There are others who collaborate on every lecture.
This was very informative and helpful!! Honestly, for this level of content, the price seems quite affordable, and I was able to get a glimpse into the insights of a true expert. Thank you.
Hello, "Crazy for Development"! Thank you for leaving such a great review!! I will continue to provide even more helpful content in the future. Thank you!!
Hi, I'm Choi (pseudonym), a developer and interviewer at Kakao!
After seeing a friend at Toss create a course recently, I felt motivated to put together this course on MySQL.
I’ve worked hard to pack in as many concepts as possible. I honestly believe that if you go through each lesson one by one, this course will leave you 90% prepared for anything involving MySQL—including practical, real-world applications!
MySQL is quite approachable, but it’s one of those things that’s easy to forget when you actually sit down to use it. I hope this course helps you review what you know and learn plenty of new concepts along the way.
Thank you.
The more I reflect on it, the more I feel it contains truly great content. I think it would be excellent for those who have a habit of self-directed learning.
If you go through the detailed explanations of the major topics and take some time to contemplate them on your own... I believe it is structured with content that is better than any other lecture.
Hello warna, thank you for leaving such a great review!!
It seems like your perspective aligns perfectly with the direction I'm aiming for!! Given the nature of lectures, it's essential to have time to study on your own, reflect on the concepts, and truly make them your own...!!
Development is something you do yourself, and realistically, in a professional offline environment, it's very rare for someone to spoon-feed you information.
I feel very proud because it seems like we share similar values. haha Have a great day!
I'm a developer in my fourth year of professional experience... and I had no idea this course would dive so deep into MySQL.
I highly recommend this course to anyone who says, "I only know how to write basic queries" when it comes to MySQL.
I believe that how well you understand the DB determines your ability to go beyond simple query tuning and implement various patterns in your services. I truly learned a lot.
This course was like a long-awaited rain...!
Hello, Mr. Lee Byeong-seok. It is an honor to meet a developer currently working in the field. I feel a bit shy as well, haha.
I will continue to provide many more lectures that are like a refreshing rain, offering even more useful information.
Have a great day!!