当前位置:网站首页>Processus général de requête pour PostgreSQL
Processus général de requête pour PostgreSQL
2022-07-07 02:21:00 【Happytre001】
Le client passe parpgLe processus approximatif de requête du serveur est le suivant
Un.、 Établir une connexion
Le client doit d'abord se connecterpgServeur,Après avoir établi une connexion avec le clientforkUn sous - processus traite les demandes des clients suivants,Le serveur attend ensuite la connexion du client suivant.
2.、Envoyer la demande
Le client envoie les données demandées àpgServeur,pgDemande de lecture du sous - processus.
- Le client envoie la demande
Comme la ligne de commande,Lire l'entrée de l'utilisateur,Envoyer au serveursrc/bin/psql/mainloop.c
int
MainLoop(FILE *source)
{
...
SendQuery(query_buf->data);
...
}
- Le serveur reçoit la demande
void
PostgresMain(int argc, char *argv[],
const char *dbname,
const char *username)
{
...
for (;;)
{
...
firstchar = ReadCommand(&input_message);
...
}
}
Trois、Analyse
Prenons l'exemple d'une simple requête.Le serveur a reçu une chaîne, Il faut analyser et comprendre ces données pour effectuer .
src/backend/tcop/postgres.c
static void
exec_simple_query(const char *query_string)
{
...
parsetree_list = pg_parse_query(query_string);
...
}
Analyse lexicale et grammaticale , Construire un arbre syntaxique original .
Quatre、Optimisation
static void
exec_simple_query(const char *query_string)
{
...
querytree_list = pg_analyze_and_rewrite(parsetree, query_string,
NULL, 0, NULL);
plantree_list = pg_plan_queries(querytree_list, query_string,
CURSOR_OPT_PARALLEL_OK, NULL);
..
}
Convertit l'Arbre syntaxique Original en un arbre de requête , Et optimiser et réécrire l'arbre de requête , Augmenter la vitesse d'exécution .
Cinq、Mise en œuvre
static void
exec_simple_query(const char *query_string)
{
...
(void) PortalRun(portal,
FETCH_ALL,
true, /* always top level */
true,
receiver,
receiver,
&qc);
...
}
Six、Retour aux résultats
La fonction spécifique est également trouvée pour
边栏推荐
- FLIR blackfly s usb3 industrial camera: how to use counters and timers
- The empirical asset pricing package (EAP) can be installed through pypi
- ROS learning (26) dynamic parameter configuration
- STM32F4---PWM输出
- Alibaba cloud middleware open source past
- 将截断字符串或二进制数据
- 长安链学习笔记-证书研究之证书模式
- [paper reading | deep reading] anrl: attributed network representation learning via deep neural networks
- 组合导航:中海达iNAV2产品描述及接口描述
- 【服务器数据恢复】raid损坏导致戴尔某型号服务器崩溃的数据恢复案例
猜你喜欢
[paper reading | deep reading] rolne: improving the quality of network embedding with structural role proximity
Centros 8 installation MySQL Error: The gpg Keys listed for the "MySQL 8.0 Community Server" repository are already ins
3D laser slam: time synchronization of livox lidar hardware
云原生混部最后一道防线:节点水位线设计
FLIR blackfly s usb3 industrial camera: how to use counters and timers
新一代云原生消息队列(一)
Flir Blackfly S工业相机:颜色校正讲解及配置与代码设置方法
FLIR blackfly s industrial camera: explanation and configuration of color correction and code setting method
企业中台建设新路径——低代码平台
Batch delete data in SQL - set in entity
随机推荐
将截断字符串或二进制数据
Chang'an chain learning notes - certificate model of certificate research
CISP-PTE实操练习讲解(二)
Twenty or thirty thousand a leaf? "Yang Mou" behind the explosion of plant consumption
【Unity】升级版·Excel数据解析,自动创建对应C#类,自动创建ScriptableObject生成类,自动序列化Asset文件
Treadpoolconfig thread pool configuration in real projects
Several classes and functions that must be clarified when using Ceres to slam
Redis tool class redisutil (tool class III)
15million employees are easy to manage, and the cloud native database gaussdb makes HR office more efficient
How do I dump SoapClient requests for debugging- How to dump SoapClient request for debug?
传感器:DS1302时钟芯片及驱动代码
ROS learning (25) rviz plugin
[paper reading | deep reading] graphsage:inductive representation learning on large graphs
FLIR blackfly s industrial camera: auto exposure configuration and code
阿里云中间件开源往事
Introduction to FLIR blackfly s industrial camera
The last line of defense of cloud primary mixing department: node waterline design
PostgreSQL图形化界面工具之pgAdmin4
Seconds understand the delay and timing function of wechat applet
MySQL execution process and sequence