当前位置:网站首页>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 .
边栏推荐
- How to make shell script executable
- [NLP] bert4vec: a sentence vector generation tool based on pre training
- How to build an interface automation testing framework?
- NLP routes and resources
- Cmooc Internet + education
- Control the operation of the test module through the panel in canoe (Advanced)
- Super detailed steps for pushing wechat official account H5 messages
- Delayed note learning
- Mexican SQL manual injection vulnerability test (mongodb database) problem solution
- 软件测试工程师必备之软技能:结构化思维
猜你喜欢
Automation sequences of canoe simulation functions
15 medical registration system_ [appointment registration]
四川云教和双师模式
112 pages of mathematical knowledge sorting! Machine learning - a review of fundamentals of mathematics pptx
C杂讲 双向循环链表
cmooc互联网+教育
[after reading the series of must know] one of how to realize app automation without programming (preparation)
AI的路线和资源
C miscellaneous two-way circular linked list
Contest3145 - the 37th game of 2021 freshman individual training match_ B: Password
随机推荐
MySQL combat optimization expert 10 production experience: how to deploy visual reporting system for database monitoring system?
How can I take a shortcut to learn C language in college
宝塔的安装和flask项目部署
16 medical registration system_ [order by appointment]
C杂讲 浅拷贝 与 深拷贝
Installation de la pagode et déploiement du projet flask
112 pages of mathematical knowledge sorting! Machine learning - a review of fundamentals of mathematics pptx
Good blog good material record link
The programming ranking list came out in February. Is the result as you expected?
C杂讲 双向循环链表
17 医疗挂号系统_【微信支付】
CANoe的数据回放(Replay Block),还是要结合CAPL脚本才能说的明白
[one click] it only takes 30s to build a blog with one click - QT graphical tool
flask运维脚本(长时间运行)
MySQL实战优化高手06 生产经验:互联网公司的生产环境数据库是如何进行性能测试的?
竞赛vscode配置指南
Vh6501 Learning Series
MySQL實戰優化高手04 借著更新語句在InnoDB存儲引擎中的執行流程,聊聊binlog是什麼?
Release of the sample chapter of "uncover the secrets of asp.net core 6 framework" [200 pages /5 chapters]
Tianmu MVC audit II