Coder Social home page Coder Social logo

enhancedformysql / the-art-of-problem-solving-in-software-engineering_how-to-make-mysql-better Goto Github PK

View Code? Open in Web Editor NEW
1.8K 16.0 147.0 33.99 MB

The Art of Problem-Solving in Software Engineering: How to Make MySQL Better

Home Page: https://enhancedformysql.github.io/The-Art-of-Problem-Solving-in-Software-Engineering_How-to-Make-MySQL-Better/

algorithms cap consistency dynamic-programming group-replication high-availability innodb logical-reasoning logical-thinking mvcc mysql paxos performance-analysis performance-testing problem-solving queueing-theory scalability tcpcopy tpcc data-structure

the-art-of-problem-solving-in-software-engineering_how-to-make-mysql-better's Introduction

The Art of Problem-Solving in Software Engineering:How to Make MySQL Better

Introduction

This book uses MySQL challenges as case studies to explore problem analysis and resolution strategies. Readers will gain a deeper appreciation for logical reasoning, data structures, algorithms, and more through practical examples and insightful discussions.

Table of Contents

Preface

Part1 Problems

Chapter 1: Traditional Methods for Solving MySQL Problems

Chapter 2: Mysterious MySQL Problems

Part2 Basics

Chapter 3: How to Solve Software Problems Effectively

Chapter 4: Fundamentals of Computer Science

Chapter 5: MySQL Internals

Chapter 6: How to Scientifically Test MySQL Performance?

Part3 Analyzing and Addressing MySQL Problems

Chapter 7: Key Improvements of MySQL 8.0 Over MySQL 5.7

Chapter 8: Refining MySQL 8.0: Next-Level Improvements

Chapter 9: Major Enhancements in Group Replication

Chapter 10: Major Improvements for MySQL Secondary Replay

Part4 Tuning

Chapter 11: Performance Tuning

Part5 Conclusion

Chapter 12: Future Directions

References

Appendix

Errata

If you find any errata in the book, please open a new issue.

Prerequisite reading

Computer Science Basics

High Performance MySQL

Architecture of a Database System

Access the Book on GitHub Pages

Online URL

Copyright

Copyright © wangbin579 2025. All rights reserved.

the-art-of-problem-solving-in-software-engineering_how-to-make-mysql-better's People

Contributors

wangbin579 avatar

Stargazers

 avatar SChakravarthy avatar LaingKe avatar Priyanshu Jain avatar W.s avatar  avatar Xingyou Lin avatar Rui avatar Vineed Kaladharan avatar 萧曳 avatar  avatar Ravil Galeyev avatar David Shi avatar Seongjee Kim avatar biliww avatar Tsui Chising avatar  avatar  avatar igaozp avatar Bonnak avatar fyj avatar Peter Goodman avatar  avatar 高岩 avatar 老衲不出家 avatar  avatar  avatar Mengz  avatar  avatar Aurelio Hacher avatar Javier avatar  avatar zweix avatar Ieralt avatar gong avatar 曾果 avatar changoal avatar Feng avatar kris avatar lionGo avatar frank avatar  avatar Filipe Bezerra de Souza avatar Mrtuge avatar  avatar  avatar Danilo Nascimento avatar  avatar Zihan Song avatar  avatar KoSChicken avatar 孙冉 avatar  avatar  avatar zhuka avatar Sorin Lee avatar  avatar lei_xxx avatar  avatar  avatar Erick Salas avatar LyQing avatar youwh avatar escape avatar Muhammad Rehan Khan avatar  avatar  avatar  avatar 下雪天玩泥巴 avatar fugu avatar mamatli kuerban avatar Le Tuan Anh avatar  avatar  avatar  avatar zld avatar 从心出发 avatar  avatar bean avatar 天筑辉煌 avatar Michael Abrahams avatar  avatar  avatar Nguyễn Nam Long avatar Sun Xiaoming avatar  avatar TerryMa avatar 忘皓 avatar Tho Vo avatar xluffy avatar  avatar  avatar mon01100001 avatar  avatar cycycy avatar  avatar shiuwn avatar Marc G avatar qepo_s avatar Sun avatar

Watchers

 avatar timothy avatar Siraaj Khandkar avatar Artem Kirillov avatar  avatar  avatar yoku0825 avatar Ashish Kumar Sahu avatar Aldo Junior avatar  avatar Bonnak avatar asdf1234 avatar huy avatar poempeng avatar  avatar  avatar

the-art-of-problem-solving-in-software-engineering_how-to-make-mysql-better's Issues

Feedback after a 15 minute review

I am giving feedback assuming you want to maximize the impact of the book though great presentation, instead of treating it as a collection of notes for reflection by a limited group of people.

I am contributing some ideas from my experience in course development and teaching, if they don't align with the goals of this book, it's ok to push my ideas aside.

  1. The file naming does not help sorting (eg. Chapter10 is before Chapter2 now). Someone browsing github would have to go back to README.md to navigate or to eyeball again/ctrl+f to find the chapter.

  2. What are the pre-requisites for readers?
    Mysql written in C/C++, do readers need that?
    If yes, what concepts in those languages are relevant?
    What are the books that someone should have already read, and tasks already completed to be able to make good use of this book?
    The preface includes "Computer Science Students", is it PHD/Grad/Undergrad?
    Has there been feedback gathered from Computer Science Students?
    If students do deal with such, linking to university course codes can help readers self-fill pre-requisite knowledge.

  3. Are the contents relevant to other RDBMS or Nosql?
    This helps readers who come from other databases (assuming the target audience is not only MySQL users).
    My concern is what if what the book is teaching is a quirk specific to (a particular version of) MySQL, then the effort learning would not be transferrable to new databases.

  4. Chapter 1 went 0 to 100kmph in 2 seconds. It felt like a collection of edge case problems. There are a lot of technical details, but not enough motivation about what problem they address.
    I'm not sure:

  • in what real world scenarios these problems appear
  • how often does each type appear
  • for what kinds of applications or usage characteristics they appear
  • what are the related problems (a mindmap/hierarchy/fault tree).
    So I don't know how/why solving them can help solve other related problems.

If the problem caused a real issue, are there links to github issues/PR/RFC to get more context?
I wish the book began with a mindmap like README of https://github.com/gvwilson/sdxpy which helps readers reason why chapters are ordered in a certain way.
Then for each chapter, it starts with a list of learning goals, ends with a list of solutions ordered from worst to best, or a table of tradeoffs after considering all solutions, and some unanswered questions (whether that's theoretical, engineering or political obstacle).

Something that may be helpful is imagine this material would be condensed into a talk/tutorial at a conference, how would the proposal look like?
Example pycon talk proposals: https://github.com/akaptur/pycon-proposals
Example tutorial proposals: https://us.pycon.org/2024/speaking/tutorials/samples/index.html

That could help strengthen the organization/motivation aspects of bringing users along the ride with the book.
I'm sure someone who is working as a MySQL DBA with a family to support and risk being laid off if he can't solve the problems described in the book would want to read this, but if considering to grow the audience pool, maybe adding some of the supporting elements aforementioned could help. Probably even charging for it is possible if it becomes highly rated as a university course reference textbook.

Are the examples for chapter 1 hosted somewhere?

Hi. I went through the chapter 1 example of primary secondary MySQL. I want to play around myself by ruining the examples in my localhost. Currently I feed tge markdown file to Claude and ask it to teach me. Is there anyway I can access the examples and play around? Thanks!

Possible typo in pthread_mutex_con_lock

Just discovered this book today, impressive work.

From a quick search:

[malff@malff-desktop The-Art-of-Problem-Solving-in-Software-Engineering_How-to-Make-MySQL-Better]$ grep -R "pthread_mutex_con_lock" *
Chapter8.md:Figure 8-14. *_pthread_mutex_con_lock* bottleneck reveals performance problems.
Chapter8.md:It is evident that *_pthread_mutex_con_lock* is a significant bottleneck, accounting for approximately 9.5% of the overhead. Although *perf* does not directly pinpoint the exact problem, it indicates the presence of this bottleneck.
Chapter8.md:At the same time, the previously identified bottleneck of *_pthread_mutex_con_lock* has been significantly alleviated after optimization, as shown in the following figure:
Chapter8.md:Figure 8-18. Mitigation of *_pthread_mutex_con_lock* bottleneck.

Should it be _pthread_mutex_cond_lock instead of _pthread_mutex_con_lock, as this is the function seen in the screenshots ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.