当前位置:网站首页>The underlying logical architecture of MySQL
The underlying logical architecture of MySQL
2022-07-06 10:14:00 【Eric-x】
List of articles
1、 The server handles client requests
What does the server process do with the request sent by the client process , To produce the final processing result ? Here, take the query request as an example to show :
Let's take a look at
first floor : adjoining course
System ( client ) visit MySQL In front of the server , The first thing to do is to establish TCP Connect .
After three handshakes, the connection is established successfully , MySQL Server pair TCP The transmitted account and password are used for identity authentication 、 Access .
- Wrong user name or password , I'll get one Access denied for user error , The client program completes execution
- User name password authentication passed , From the permission table, you will find out the permission of the account and the connection Association , The following permission judgment logic , Will depend on the permissions read at this time
TCP After the connection receives the request , Must be assigned to a thread dedicated to the interaction with this client . So there will be a thread pool , Go to the later process . Each connection gets threads from the thread pool , Eliminates the overhead of creating and destroying threads .
The second floor : Service layer
SQL Interface: SQL Interface
- Receive the user's SQL command , And returns the result of the query that the user needs . such as SELECT … FROM It's called SQL Interface
- MySQL Support DML( Data operation language )、DDL( Data definition language )、 stored procedure 、 View 、 trigger 、 User defined functions, etc SQL Language interface
Parser: Parser
- In the parser SQL Statement syntax analysis 、 Semantic analysis . take SQL Statements are decomposed into data structures , And pass the structure to the next step , in the future SQL Statements are passed and processed based on this structure . If you encounter an error in the decomposition composition , So that's it SQL The statement is unreasonable .
- stay SQL Commands are validated and parsed by the parser when they are passed to the parser , And create for it Grammar tree , And enrich the query syntax tree according to the data dictionary , Meeting Verify whether the client has permission to execute the query . After creating the syntax tree ,MySQL Will also be right SQl Query syntax optimization , Query rewriting .
Optimizer: Query optimizer
- SQL Statement after syntax parsing 、 Before the query, the query optimizer will be used to determine SQL Statement execution path , Generate a Implementation plan
- The implementation plan indicates that Which index to use The query ( Full table search or index search ), What is the connection order between tables , Finally, the method provided by the storage engine will be called according to the steps in the execution plan to truly execute the query , And return the query results to the user .
- It USES “ selection - Projection - Connect ” Strategy to query . for example
SELECT id,name FROM student WHERE gender = ' Woman ';
This SELECT The query is based on WHERE The sentence goes on selection , Instead of querying all the tables and then gender Filter . This SELECT The query is based on id and name Make attributes Projection , Instead of taking all the attributes out and filtering them later , These two query criteria Connect Get up and generate the final query results .
Caches & Buffers: Query cache component
- MySQL There's some internal maintenance Cache and Buffer, such as Query Cache Used to cache a SELECT Statement execution result , If the corresponding query result can be found in it , Then there is no need to query and parse 、 Optimization and execution of the whole process , Directly feed back the results to the client .
- The caching mechanism consists of a series of small caches . For example, table caching , Record the cache ,key cache , Authority cache, etc .
- The query can be cached in Sharing between different clients .
- from MySQL 5.7.20 Start , Query caching is not recommended , And in MySQL 8.0 Delete in , Because this is chicken ribs
Little story :
If I ask you 9+8×16-3×2×17 What's the value of , You may use a calculator to calculate , final result 35. If I ask you again 9+8×16-
3×2×17 What's the value of , Do you still use another silly calculation ? We have just calculated , Just say the answer directly .
The third level : Engine layer
Plug in storage engine layer ( Storage Engines), Really responsible MySQL The storage and extraction of data in , Perform operations on the underlying data maintained at the physical server level , Server pass API Communicating with the storage engine . Different storage engines have different functions , So we can choose according to our actual needs .
MySQL 8.0.25 The storage engines supported by default are as follows :
Storage layer
All data , database 、 The definition of the table , The contents of each row of the table , Indexes , All exist On the file system , In the form of a file , And complete the interaction with the storage engine . Of course, some storage engines, such as InnoDB, It also supports direct management of bare devices without using the file system , But the implementation of modern file systems makes this unnecessary . Under the file system , You can use a local disk , have access to DAS、NAS、SAN And other storage systems .
summary
Let's get familiar with SQL The execution process is convenient , We can simplify it as follows :
Simplified to a three-tier structure :
- adjoining course : Establish connection between client and server , The client sends SQL To the server side ;
- SQL layer ( Service layer ): Yes SQL Statement for query processing ; It has nothing to do with the storage mode of database files ;
- Storage engine layer : Dealing with database files , Responsible for data storage and reading .
边栏推荐
- C杂讲 文件 初讲
- 解决在window中远程连接Linux下的MySQL
- 软件测试工程师必备之软技能:结构化思维
- If someone asks you about the consistency of database cache, send this article directly to him
- 14 medical registration system_ [Alibaba cloud OSS, user authentication and patient]
- CANoe下载地址以及CAN Demo 16的下载与激活,并附录所有CANoe软件版本
- Constants and pointers
- 16 medical registration system_ [order by appointment]
- Several errors encountered when installing opencv
- MySQL ERROR 1040: Too many connections
猜你喜欢
MySQL实战优化高手03 用一次数据更新流程,初步了解InnoDB存储引擎的架构设计
Embedded development is much more difficult than MCU? Talk about SCM and embedded development and design experience
Some thoughts on the study of 51 single chip microcomputer
How to make shell script executable
Write your own CPU Chapter 10 - learning notes
Contest3145 - the 37th game of 2021 freshman individual training match_ B: Password
How to build an interface automation testing framework?
再有人问你数据库缓存一致性的问题,直接把这篇文章发给他
Use xtrabackup for MySQL database physical backup
MySQL combat optimization expert 04 uses the execution process of update statements in the InnoDB storage engine to talk about what binlog is?
随机推荐
MySQL实战优化高手10 生产经验:如何为数据库的监控系统部署可视化报表系统?
docker MySQL解决时区问题
MySQL combat optimization expert 10 production experience: how to deploy visual reporting system for database monitoring system?
PR 2021 quick start tutorial, first understanding the Premiere Pro working interface
13 medical registration system_ [wechat login]
The programming ranking list came out in February. Is the result as you expected?
Random notes
Solve the problem of remote connection to MySQL under Linux in Windows
在CANoe中通過Panel面板控制Test Module 運行(初級)
max-flow min-cut
Simple solution to phpjm encryption problem free phpjm decryption tool
Super detailed steps for pushing wechat official account H5 messages
Notes of Dr. Carolyn ROS é's social networking speech
Contest3145 - the 37th game of 2021 freshman individual training match_ B: Password
MySQL storage engine
MySQL combat optimization expert 05 production experience: how to plan the database machine configuration in the real production environment?
17 medical registration system_ [wechat Payment]
Contrôle de l'exécution du module d'essai par panneau dans Canoe (primaire)
MySQL实战优化高手06 生产经验:互联网公司的生产环境数据库是如何进行性能测试的?
The appearance is popular. Two JSON visualization tools are recommended for use with swagger. It's really fragrant