当前位置: 首页 > news >正文

学生如何做网站网站建设在线建站

学生如何做网站,网站建设在线建站,简单网页图片,原平的旅游网站怎么做的PgSQL技术内幕 - 客户端psql与服务端连接与交互机制 简单来说,PgSQL的psql客户端向服务端发起连接请求,服务端接收到请求后,fork出一个子进程,之后由该子进程和客户端进行交互,处理客户端的SQL等,并将结果返…

PgSQL技术内幕 - 客户端psql与服务端连接与交互机制

简单来说,PgSQL的psql客户端向服务端发起连接请求,服务端接收到请求后,fork出一个子进程,之后由该子进程和客户端进行交互,处理客户端的SQL等,并将结果返回给客户端。那么,他是如何做到客户端和服务端子进程进行交互呢?服务端怎么做到和多个客户端交互呢?

1、客户端如何连接

psql客户端连接及发送SQL命令过程如下图所示:

fb85abfa1c737ffb5e4e8ed7824efeea.png

1)通过parse_psql_options函数解析出psql连接时指定的端口号、用户名、database名等

2)然后将这些参数以keywors[]和values[]数组保存,并作为入参带入PQconnectdbParams函数连接服务端

(1)PQconnectdbParams连接主要由PQconnectPoll完成,可以看到它仅通过socket函数创建套接字后,就直接调用connect连接服务端。由于没有通过bind函数绑定一个端口,所以在客户端会自动分配一个随机端口。

3)连接成功后,后面在MainLoop函数中接收psql端的输入,接收到命令后通过SendQuery函数将其在上面的套接字上将其发送给服务端。

举例:在windows版本上通过psql连接postgres后端口情况:

504c9ff0e011ee3da5266c266514d150.png

psql的进程ID为14856:

62a0c6621f691af5a015f9ee8bf05c04.png

通过netstat命令可以看到客户端随机分配了端口53761。服务端10900为postgres主进程,他绑定在5432端口上:

3ded34d3b9ec7edd69e42998f786eb7c.png

2、服务端如何构建连接

52b36d006350d57548199cce7c0f5a27.png

1)Postgres进程启动的时候就会绑定配置项port设置的端口,由函数StreamServerPort函数完成。上图所示,StreamServerPort完成socket、bind、listen的操作。

2)然后,进入ServerLoop函数中,通过select等待客户发来连接请求。一旦接收到后,就通过ConnCreate函数调用accept与客户端构建连接,返回对应的socket。

3)接着,通过BackendStartup函数调用fork_process函数fork出子进程,子进程会继承父进程上一步构建好连接的socket。

4)子进程不使用监听socket,所以需要将从父进程继承而来的监听socket关闭掉。

5)子进程进入BackendRun->PostgresMain中,初始化一系列内容,并通过recv函数在2)中的socket上接收客户端发来的命令,然后判断命令类型,比如简单查询,就会exec_simple_query去执行

6)父进程由于不需要执行客户端命令,所以fork出子进程后,通过StreamClose将2)中的socket关闭掉,这样就做到了在主进程中不接收客户端命令。

http://www.wangmingla.cn/news/157212.html

相关文章:

  • 宜昌网站开发公司全国免费发布广告信息平台
  • 扬中网站建设 优帮云企业邮箱网页版
  • 品牌专业建设网站今日热点新闻一览
  • 团中央建设的未成年专属网站是seo网站推广有哪些
  • 青浦网站制作su35站长统计工具
  • 空间里怎么放多个网站淘宝关键词排名怎么查询
  • 别墅设计鹤壁搜索引擎优化
  • 做网站怎么安装数据库指数函数求导
  • 来宾住房与城乡建设网站网络服务有哪些
  • 建立网站需要哪些推广排名
  • 广州网站建设360元网络推广营销
  • 河北网站建设联系电话关键词上首页软件
  • 衢州网站制作汕头seo优化培训
  • 亚马逊网站建设seo技术好的培训机构
  • 网站被k十大原因网店代运营合同
  • asp网站安装教程百度手机助手官方正版
  • 做天猫网站价格如何写推广软文
  • 一家专门做特卖的网站手机版成都seo推广员
  • 广西建设厅办事大厅网站网络优化大师下载
  • 免费b站推广网站入口2023孩子出牙会发烧吗现在做网络推广都有什么方式
  • 取名网站怎么做百度2022最新版本
  • 网站服务器转移视频吗360优化大师官方下载
  • 做房产中介网站搜狗网页版
  • wordpress网站新闻贵阳网络推广外包
  • 青岛网站建站团队推广网站有效的免费方法
  • 河南大学学科建设处网站百度搜索网址
  • 做交友网站挣钱吗站长工具pr值查询
  • 真人做a视频网站推广资源网
  • 做蛋糕哪个教程网站好百度网站分析
  • 医院网站建设方案网络营销的手段有哪些