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

网站内容路由器做php网站吗

网站内容,路由器做php网站吗,哪家网站推广好,中国有名的网站建设公司PostgreSQL 使用客户机/服务器#xff08;C/S#xff09;的模式提供服务#xff0c;一个PostgreSQL会话由下列相关的进程#xff08;程序#xff09;组成#xff1a; (1)一个服务器端进程。该进程管理数据库文件#xff0c;接受客户端与数据库的连接#xff0c;且代表…PostgreSQL 使用客户机/服务器C/S的模式提供服务一个PostgreSQL会话由下列相关的进程程序组成 (1)一个服务器端进程。该进程管理数据库文件接受客户端与数据库的连接且代表客户端对数据库进行操作。该进程的程序名叫做 postgres。 (2)前端应用即需要进行数据库操作的客户端应用。客户端应用可能本身就是多种多样的它们可以是一个字符界  面的工具 也可以是一个图形界面的应用或者是一个通过访问数据库来显示网页的 web 服务器或者是一个特殊的数据库管理工具。 一些客户端应用是和 PostgreSQL 发布一起提供的但绝大部分是用户开发的。 和典型的客户端/服务器应用C/S应用一样客户端和服务器可以在不同的主机上。此时它们通过TCP/IP进行网络连接你应该记住这一点因为在客户机上可以访问的文件未必能够在数据库服务器机器上访问或者只能用不同的文件名进行访问。 PostgreSQL 服务器可以处理来自客户端的多个并发请求。为了能这样处理它会为每个请求启动“forks”一个新的进程然后客户端和新服务器端进程就不再经过最初的postgres 进程而直接通信。 因此 服务器端的主进程一直运行等待着来自客户端的连接而客户端和相关联的服务器端进程则在需要的时候才会运行。当然这些对用户来说是透明的在这里谈这些主要是为了说明的完整性。 PostgreSQL数据库是一种极好可以运行在各种平台上的免费的开放源码的对象关系数据库它是一种以关系数据库和SQL为基础扩展了抽象数据类型从而具备面向对象特性的数据库。 PostgreSQL体系结构图组成结构和关系 PostgreSQL由连接管理系统系统控制器编译执行系统存储管理系统事务系统系统表五大部分组成。 连接管理系统接受外部操作对系统的请求对操作请求进行预处理和分发起系统逻辑控制作用 编译执行系统由查询编译器查询执行器组成完成操作请求在数据库中的分析处理和转化工作最终实现物理存储介质中数据的操作 存储管理系统由索引管理器内存管理器外存管理器组成负责存储和管理物理数据提供对编译查询系统的支持 事务系统由事务管理器日志管理器并发控制锁管理器组成日志管理器和事务管理器完成对操作请求的事务一致性支持锁管理器和并发控制提供对并发访问数据的一致性支持 系统表是PostgreSQL数据库的元信息管理中心包括数据库对象信息和数据库管理控制信息。系统表管理元数据信息将PostgreSQL数据库的各个模块有机地连接在一起形成一个高效的数据管理系统。 系统表 在关系数据库中为了实现数据库系统的控制必须提供数据字典的功能。数据字典不仅存储各种对象的描述信息而且存储系统管理所需的各种对象的细节信息。数据字典包含数据库系统中所有对象及其属性的描述信息对象之间关系的描述信息对象属性的自然语言含义以及数据字典变化的历史数据字典是关系数据库系统管理控制信息的核心在PostgreSQL数据库系统中系统表扮演着数据字典的角色。 系统表是PostgreSQL数据库存放结构元数据的地方他在PostgreSQL中表现为存放有系统信息的普通表或者视图用户可以删除重建。 系统表保存了数据库的所有元数据所以系统运行时对系统表的访问是非常频繁的。为了提高系统性能在内存中建立了共享的系统表使用Hash表提高查询效率。 主要系统表功能 1 pg_namespace 存储命名空间 2 pg_tablespace 存储空间信息 3 pg_database 存储当前数据集簇中数据库的信息。 4 pg_class 存储表及与表类似结构的数据库对象信息包含索引序列视图复合数据类型TOAST表等。 5 pg_type 存储数据类型信息。 6 pg_attribute 存储表的属性信息。 7 pg_index 存储索引的具体信息。 PostgreSQL数据库系统的主要功能都集中于Postgres程序其入口是Main模块中的main函数在初始化数据集簇启动数据库服务器是都将从这里开始执行。Main模块主要的工作时确定当前的操作系统平台并据此做一些平台相关的环境变量设置和初始化然后通过对命令行参数的判断将控制转到相应的模块中去。下图是main函数的调用流程。 PostgreSQL系统主函数main的流程 PostgreSQL守护进程Postmaster为用户连接请求分配后台Postgres服务进程还将启动相关的后台服务进程SysLogger(系统日志进程),PgStat(统计数据收集进程), AutoVacuum(系统自动清理进程).在Postmaster进入到循环监听中时启动如下进行BgWriter(后台写进程),WalWriter(预写式日志写进程),PgArch(预写式日志归档进程)。这些进程将在后续文章中介绍。 下图是PostgreSQL的后台流程图 1.1.1.1 Potgres(常驻进程) 管理后端的常驻进程也称为’postmaster’。其默认监听UNIXDomain Socket和TCP/IPWindows等一部分的平台只监听tcp/ip的5432端口等待来自前端的的连接处理。监听的端口号可以在PostgreSQL的设置文件postgresql.conf里面可以改。 一旦有前端连接过来postgres会通过fork(2)生成子进程。没有Fork(2)的windows平台的话则利用createProcess()生成新的进程。这种情形的话和fork(2)不同的是父进程的数据不会被继承过来所以需要利用共享内存把父进程的数据继承过来。 1.1.1.2 Postgres(子进程) 子进程根据pg_hba.conf定义的安全策略来判断是否允许进行连接根据策略会拒绝某些特定的IP及网络或者也可以只允许某些特定的用户或者对某些数据库进行连接。 Postgres会接受前端过来的查询然后对数据库进行检索最好把结果返回有时也会对数据库进行更新。更新的数据同时还会记录在事务日志里面PostgreSQL称为WAL日志这个主要是当停电的时候服务器当机重新启动的时候进行恢复处理的时候使用的。另外把日志归档保存起来可在需要进行恢复的时候使用。在PostgreSQL 9.0以后通过把WAL日志传送其他的postgreSQL可以实时得进行数据库复制这就是所谓的‘数据库复制’功能。 1.1.1.3 其他的进程 Postgres之外还有一些辅助的进程。这些进程都是由常驻postgres启动的进程。 (1) Postmaster主进程和服务进程 当PG数据库启动时首先会启动Postmaster主进程。这个进程是PG数据库的总控制进程负责启动和关闭数据库实例。实际上Postmaster进程是一个指向postgres命令的链接如下 ll/opt/postgresql/bin/postmaster /opt/postgresql/bin/postmaster- postgres 当用户和PG数据库建立连接时要先与Postmaster进程建立连接此时客户端进程会发送身份验证消息给Postmaster主进程Postmaster主进程根据消息进行身份验证验证通过后Postmaster主进程会fork出一个会话服务进程为这个用户连接服务。可以通过pg_stat_activity表来查看服务进程的pid如下 test# select pid,usename,client_addr,client_port frompg_stat_activity; (2) Writer process Writer process在适当的时间点把共享内存上的缓存写往磁盘。通过这个进程可以防止在检查点的时候(checkpoint),大量的往磁盘写而导致性能恶化使得服务器可以保持比较稳定的性能。Background writer起来以后就一直常驻内存但是并非一直在工作它会在工作一段时间后进行休眠休眠的时间间隔通过postgresql.conf里面的参数bgwriter_delay设置默认是200微秒。 这个进程的另外一个重要的功能是定期执行检查点(checkpoint)。 检查点的时候会把共享内存上的缓存内容往数据库文件写使得内存和文件的状态一致。通过这样可以在系统崩溃的时候可以缩短从WAL恢复的时间另外也可以防止WAL无限的增长。 可以通过postgresql.conf的checkpoint_segments、checkpoint_timeout指定执行检查点的时间间隔。 Writer进程是把共享内存中的脏页写到磁盘上的进程。它的作用有两个一是定期把脏数据从内存缓冲区刷出到磁盘中减少查询时的阻塞二是PG在定期作检查点时需要把所有脏页写出到磁盘通过BgWriter预先写出一些脏页可以减少设置检查点CheckPoint数据库恢复技术的一种时要进行的IO操作使系统的IO负载趋向平稳。BgWriter是PostgreSQL8.0以后新加的特性它的机制可以通过postgresql.conf文件中以bgwriter_开头配置参数来控制 bgwriter_delay: backgroud writer进程连续两次flush数据之间的时间的间隔。默认值是200单位是毫秒。 bgwriter_lru_maxpages backgroud writer进程每次写的最多数据量默认值是100单位buffers。如果脏数据量小于该数值时写操作全部由backgroud writer进程完成反之大于该值时大于的部分将有server process进程完成。设置该值为0时表示禁用backgroud writer写进程完全有server process来完成配置为-1时表示所有脏数据都由backgroud writer来完成。(这里不包括checkpoint操作) bgwriter_lru_multiplier 这个参数表示每次往磁盘写数据块的数量当然该值必须小于bgwriter_lru_maxpages。设置太小时需要写入的脏数据量大于每次写入的数据量这样剩余需要写入磁盘的工作需要server process进程来完成将会降低性能值配置太大说明写入的脏数据量多于当时所需buffer的数量方便了后面再次申请buffer工作同时可能出现IO的浪费。该参数的默认值是2.0。 bgwriter的最大数据量计算方式 1000/bgwriter_delay*bgwriter_lru_maxpages*8K最大数据量 bgwriter_flush_after 数据页大小达到bgwriter_flush_after时触发BgWriter默认是512KB。 (3) WAL writer process预写式日志写 WAL writer process把共享内存上的WAL缓存在适当的时间点往磁盘写通过这样可以减轻后端进程在写自己的WAL缓存时的压力提高性能。另外非同步提交设为true的时候可以保证在一定的时间间隔内把WAL缓存上的内容写入WAL日志文件。 预写式日志WALWrite Ahead Log也称为Xlog的中心思想是对数据文件的修改必须是只能发生在这些修改已经记录到日志之后也就是先写日志后写数据日志先行。使用这种机制可以避免数据频繁的写入磁盘可以减少磁盘I/O。数据库在宕机重启后可以运用这些WAL日志来恢复数据库。postgresql.conf文件中与WalWriter进程相关的参数如下 wal_level控制wal存储的级别。wal_level决定有多少信息被写入到WAL中。 默认值是最小的minimal其中只写入从崩溃或立即关机中恢复的所需信息。replica 增加 wal 归档信息 同时包括 只读服务器需要的信息。9.6 中新增将之前版本的 archive 和 hot_standby 合并 logical 主要用于logical decoding 场景 fsync该参数直接控制日志是否先写入磁盘。默认值是ON先写入表示更新数据写入磁盘时系统必须等待WAL的写入完成。可以配置该参数为OFF表示更新数据写入磁盘完全不用等待WAL的写入完成。 synchronous_commit参数配置是否等待WAL完成后才返回给用户事务的状态信息。默认值是ON表明必须等待WAL完成后才返回事务状态信息配置成OFF能够更快地反馈回事务状态。 wal_sync_methodWAL写入磁盘的控制方式默认值是fsync可选用值包括open_datasync、fdatasync、fsync_writethrough、fsync、open_sync。open_datasync和open_sync分别表示在打开WAL文件时使用O_DSYNC和O_SYNC标志fdatasync和fsync分别表示在每次提交时调用fdatasync和fsync函数进行数据写入两个函数都是把操作系统的磁盘缓存写回磁盘但前者只写入文件的数据部分而后者还会同步更新文件的属性fsync_writethrough表示在每次提交并写回磁盘会保证操作系统磁盘缓存和内存中的内容一致。 full_page_writes表明是否将整个page写入WAL。 wal_buffers用于存放WAL数据的内存空间大小系统默认值是64K该参数还受wal_writer_delay、commit_delay两个参数的影响。 wal_writer_delayWalWriter进程的写间隔时间默认值是200毫秒如果时间过长可能造成WAL缓冲区的内存不足时间过短将会引起WAL的不断写入增加磁盘I/O负担。 wal_writer_flush_after commit_delay表示一个已经提交的数据在WAL缓冲区中存放的时间默认值是0毫秒表示不用延迟设置为非0值时事务执行commit后不会立即写入WAL中而仍存放在WAL缓冲区中等待WalWriter进程周期性地写入磁盘。 commit_siblings表示当一个事务发出提交请求时如果数据库中正在执行的事务数量大于commit_siblings值则该事务将等待一段时间commit_delay的值否则该事务则直接写入WAL。系统默认值是5该参数还决定了commit_delay的有效性。 wal_writer_flush_after当脏数据超过阈值时会被刷出到磁盘。 (4) Archive process Archive process把WAL日志转移到归档日志里。如果保存了基础备份以及归档日志即使实在磁盘完全损坏的时候也可以回复数据库到最新的状态。 类似于Oracle数据库的ARCH归档进程不同的是ARCH是吧redo log进行归档PgArch是把WAL日志进行归档。再深入点WAL日志会被循环使用也就是说过去的WAL日志会被新产生的日志覆盖PgArch进程就是为了在覆盖前把WAL日志备份出来。归档日志的作用是为了数据库能够使用全量备份和备份后产生的归档日志从而让数据库回到过去的任一时间点。PG从8.X版本开始提供的PITRPoint-In-Time-Recovery技术就是运用的归档日志。 PgArch进程通过postgresql.conf文件中的如下参数进行 archive_mode 表示是否进行归档操作可选择为off关闭、on启动和always总是开启默认值为off关闭。 archive_command 由管理员设置的用于归档WAL日志的命令。在用于归档的命令中预定义变量“%p”用来指代需要归档的WAL全路径文件名“%f”表示不带路径的文件名这里的路径都是相对于当前工作目录的路径。每个WAL段文件归档时将调用archive_command所指定的命令。当归档命令返回0时PostgreSQL就会认为文件被成功归档然后就会删除或循环使用该WAL段文件。否则如果返回一个非零值PostgreSQL会认为文件没有被成功归档便会周期性地重试直到成功。 archive_timeout 表示归档周期在超过该参数设定的时间时强制切换WAL段默认值为0表示禁用该功能。 (5) stats collector process 统计信息的收集进程。收集好统计表的访问次数磁盘的访问次数等信息。收集到的信息除了能被autovaccum利用还可以给其他数据库管理员作为数据库管理的参考信息。 PgStat进程是PostgreSQL数据库的统计信息收集器用来收集数据库运行期间的统计信息如表的增删改次数数据块的个数索引的变化等等。收集统计信息主要是为了让优化器做出正确的判断选择最佳的执行计划。postgresql.conf文件中与PgStat进程相关的参数如下 track_activities表示是否对会话中当前执行的命令开启统计信息收集功能该参数只对超级用户和会话所有者可见默认值为on开启。 track_counts表示是否对数据库活动开启统计信息收集功能由于在AutoVacuum自动清理进程中选择清理的数据库时需要数据库的统计信息因此该参数默认值为on。 track_io_timing定时调用数据块I/O默认是off因为设置为开启状态会反复的调用数据库时间这给数据库增加了很多开销。只有超级用户可以设置 track_functions表示是否开启函数的调用次数和调用耗时统计。 track_activity_query_size设置用于跟踪每一个活动会话的当前执行命令的字节数默认值为1024只能在数据库启动后设置。 stats_temp_directory统计信息的临时存储路径。路径可以是相对路径或者绝对路径参数默认为pg_stat_tmp设置此参数可以减少数据库的物理I/O提高性能。此参数只能在postgresql.conf文件或者服务器命令行中修改。 (6) Logger process 把postgresql的活动状态写到日志信息文件并非事务日志在指定的时间间隔里面对日志文件进行rotate. (7) Autovacuum自动清理启动进程 autovacuum launcher process是依赖于postmaster间接启动vacuum进程。而其自身是不直接启动自动vacuum进程的。通过这样可以提高系统的可靠性。 在PG数据库中对数据进行UPDATE或者DELETE操作后数据库不会立即删除旧版本的数据而是标记为删除状态。这是因为PG数据库具有多版本的机制如果这些旧版本的数据正在被另外的事务打开那么暂时保留他们是很有必要的。当事务提交后旧版本的数据已经没有价值了数据库需要清理垃圾数据腾出空间而清理工作就是AutoVacuum进程进行的。postgresql.conf文件中与AutoVacuum进程相关的参数有 autovacuum是否启动系统自动清理功能默认值为on。 log_autovacuum_min_duration这个参数用来记录 autovacuum 的执行时间当 autovaccum 的执行时间超过 log_autovacuum_min_duration参数设置时则autovacuum信息记录到日志里默认为 -1, 表示不记录。 autovacuum_max_workers设置系统自动清理工作进程的最大数量。 autovacuum_naptime设置两次系统自动清理操作之间的间隔时间。 autovacuum_vacuum_threshold和autovacuum_analyze_threshold设置当表上被更新的元组数的阈值超过这些阈值时分别需要执行vacuum和analyze。 autovacuum_vacuum_scale_factor和autovacuum_analyze_scale_factor设置表大小的缩放系数。 autovacuum_freeze_max_age设置需要强制对数据库进行清理的XID上限值。 autovacuum_vacuum_cost_delay当autovacuum进程即将执行时对 vacuum 执行 cost 进行评估如果超过 autovacuum_vacuum_cost_limit设置值时则延迟这个延迟的时间即为 autovacuum_vacuum_cost_delay。如果值为 -1, 表示使用 vacuum_cost_delay 值默认值为 20 ms。 autovacuum_vacuum_cost_limit这个值为autovacuum 进程的评估阀值, 默认为 -1, 表示使用 vacuum_cost_limit 值如果在执行autovacuum 进程期间评估的cost 超过autovacuum_vacuum_cost_limit, 则 autovacuum 进程则会休眠。 (8) 自动vacuum进程 autovacuum worker process进程实际执行vacuum的任务。有时候会同时启动多个vacuum进程。 (9) wal sender / wal receiver wal sender 进程和wal receiver进程是实现postgresql复制(streaming replication)的进程。Wal sender进程通过网络传送WAL日志而其他PostgreSQL实例的wal receiver进程则接收相应的日志。Wal receiver进程的宿主PostgreSQL也称为Standby接受到WAL日志后在自身的数据库上还原生成一个和发送端的PostgreSQL(也称为Master)完全一样的数据库。 (10)    CheckPoint检查点进程 检查点是系统设置的事务序列点设置检查点保证检查点前的日志信息刷到磁盘中。postgresql.conf文件中与之相关的参数有 1.1.1.4 后端的处理流程 下面看看数据库引擎postgres子进程的处理概要。为了简单起见下面的说明中把backendprocess简称为backend。Backend的main函数是PostgresMain (tcop/postgres.c)。 接收前端发送过来的查询(SQL文)SQL文是单纯的文字电脑是认识不了的所以要转换成比较容易处理的内部形式构文树parser tree,这个处理的称为构文解析。构文解析的模块称为parser.这个阶段只能够使用文字字面上得来的信息所以只要没语法错误之类的错误即使是select不存在的表也不会报错。这个阶段的构文树被称为raw parse tree. 构文处理的入口在raw_parser (parser/parser.c)。构文树解析完以后会转换为查询树(Query tree)。这个时候会访问数据库检查表是否存在如果存在的话则把表名转换为OID。这个处理称为分析处理(Analyze), 进行分析处理的模块是analyzer。 另外PostgreSQL的代码里面提到构文树parser tree的时候更多的时候是指查询树Query tree。分析处理的模块的入口在parse_analyze (parser/analyze.c)PostgreSQL还通过查询语句的重写实现视图(view)和规则(rule), 所以需要的时候在这个阶段会对查询语句进行重写。这个处理称为重写(rewrite)重写的入口在QueryRewrite (rewrite/rewriteHandler.c)。通过解析查询树可以实际生成计划树。生成查询树的处理称为‘执行计划处理’最关键是要生成估计能在最短的时间内完成的计划树(plan tree)。这个步骤称为’查询优化’(不叫query optimize, 而是optimize), 而完成这个处理的模块称为查询优化器(不叫query optimizer,而是optimizer, 或者称为planner)。执行计划处理的入口在standard_planner (optimizer/plan/planner.c)。按照执行计划里面的步骤可以完成查询要达到的目的。运行执行计划树里面步骤的处理称为执行处理‘execute’, 完成这个处理的模块称为执行器‘Executor’, 执行器的入口地址为ExecutorRun (executor/execMain.c)执行结果返回给前端。返回到步骤一重复执行。
http://www.pierceye.com/news/3924/

相关文章:

  • 简单网站建设协议书网站开发 法律
  • wordpress搜索怎么用不了wordpress 内存优化
  • 免费的网站app下载花生壳怎么做网站
  • 贸易网站建站wordpress15天教程
  • 网页制作和网站开发知乎推广和引流技巧
  • 微信企业网站模板上海建筑工程有限公司有哪些
  • 百度网站建设工具游戏代理0加盟费
  • 高密哪里有做网站的高端建筑班
  • 记事本做网站怎么调整图片间距程序员做网站类网站
  • 网站开发包含哪些类别韩国美食网站建设目的
  • 电子商务网站设计与开发海口最新新闻消息
  • 做网站的得多少钱如何上传ftp网站程序
  • 想找人做网站网站备案以后怎么做
  • 百度网站地址提交重庆妇科医院
  • 怎样建设网站卖农产品建企业网站怎么收费
  • 宁波网站推广宣传公司排名建设厅网站平顶山
  • 成都互联网网站建设百度商桥怎样绑定网站
  • 网站开发行业深圳网站建设网站制作哪家好
  • 湖北省城乡建设厅网站首页抖音网络营销案例分析
  • 做基本的网站百度快照和做网站有关系吗
  • 华为建站wordpress城市建设单招网站
  • 网站建设资料公司网页制作费用大概要多少钱?
  • 西宁做网站君博专注建设银行德阳分行网站
  • wordpress菜单相对地址公司网站如何seo
  • 网站建设用户体验企业查询显示利好什么意思
  • 做网站是学什么专业wordpress打开install
  • 制作网站低价wordpress如何做优化
  • 网站关键词连接符云速成美站
  • 网站建设排版页面番禺网站建设设计
  • 哈尔滨网站开发建设公司wordpress转化为中文版