当前位置:网站首页>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 .
边栏推荐
- 四川云教和双师模式
- The governor of New Jersey signed seven bills to improve gun safety
- Flash operation and maintenance script (running for a long time)
- 16 medical registration system_ [order by appointment]
- A new understanding of RMAN retention policy recovery window
- Compress decompress
- [one click] it only takes 30s to build a blog with one click - QT graphical tool
- Use xtrabackup for MySQL database physical backup
- CANoe CAPL文件操作目录合集
- Jar runs with error no main manifest attribute
猜你喜欢
The appearance is popular. Two JSON visualization tools are recommended for use with swagger. It's really fragrant
宝塔的安装和flask项目部署
Not registered via @EnableConfigurationProperties, marked(@ConfigurationProperties的使用)
Can I learn PLC at the age of 33
Control the operation of the test module through the panel in canoe (Advanced)
South China Technology stack cnn+bilstm+attention
AI的路线和资源
Installation de la pagode et déploiement du projet flask
在CANoe中通過Panel面板控制Test Module 運行(初級)
Carolyn Rosé博士的社交互通演讲记录
随机推荐
Embedded development is much more difficult than MCU? Talk about SCM and embedded development and design experience
Installation de la pagode et déploiement du projet flask
Installation of pagoda and deployment of flask project
vscode 常用的指令
How to make shell script executable
Which is the better prospect for mechanical engineer or Electrical Engineer?
Cooperative development in embedded -- function pointer
Super detailed steps to implement Wechat public number H5 Message push
The 32-year-old fitness coach turned to a programmer and got an offer of 760000 a year. The experience of this older coder caused heated discussion
[after reading the series of must know] one of how to realize app automation without programming (preparation)
美新泽西州州长签署七项提高枪支安全的法案
在CANoe中通过Panel面板控制Test Module 运行(初级)
Automation sequences of canoe simulation functions
MySQL ERROR 1040: Too many connections
13 医疗挂号系统_【 微信登录】
Solve the problem of remote connection to MySQL under Linux in Windows
Constants and pointers
在CANoe中通過Panel面板控制Test Module 運行(初級)
C杂讲 浅拷贝 与 深拷贝
Why is 51+ assembly in college SCM class? Why not come directly to STM32