1、安装PostgreSQL会用到数据库中的压缩功能,这个功能需要第三方的压缩开发包支持,这个开发包是下面哪一个?2、如果想要方便地在psql中使用上下键翻查历史命令,需要安装什么开发包?3、在Linux中,设置环境变量PATH和LD_LIBRARY_PATH时,如果想对所有用户生效,需要将配置信息写到哪个文件中?4、在Linux中,设置环境变量PATH和LD_LIBRARY_PATH时,如果想对当前普通用户生效,建议将配置信息写到哪个文件中?解析:有时在图形界面下打开一个终端,.bash_profile不会生效5、关闭数据库时,使用pg_ctl -m参数指定数据库的关闭方式,比较常用的关闭方式是哪种?6、SQL命令一般分为DQL、DDL、DML几类,SELECT查询属于哪一类?7、SQL命令一般分为DQL、DDL、DML几类,INSERT、UPDATE、DELETE属于哪一类?8、SQL命令一般分为DQL、DDL、DML几类,CREATE TABLE属于哪一类?9、SQL命令一般分为DQL、DDL、DML几类,INSERT INTO … SELECT属于哪一类??10、psql元命令\du和\dg都可以列出角色或用户,请问这两个命令是否等价?11、psql元命令\pset border 1表示什么?12、PostgresSQL二进制数据类型的是哪个?13、使用CREATE DATABASE创建新数据库时指定字符编码ENCODING参数,请问需要指定哪个模板?D.template0和template1均不可以14、删除数据库drop database加上参数if exists是什么意思?15、当我们创建一个新的数据库时,PostgresSQL都会自动创建一个名为什么的模式?17、在PostgresSQL中的一条记录上,事务年龄不能超过多少?18、在PostgresSQL中,请问SELECT操作时,是不是一定没有写磁盘的操作?19、在PostgresSQL中,表和索引的行数、块数等统计信息记录在哪个系统表中?20、在PostgresSQL中,除了表和索引的行数、块数等统计信息外,其他统计信息记录在哪个系统表中?21、在PostgresSQL中,参数默认的情况下,普通用户最多可建立多少个连接?22、在PostgresSQL的内存配置项参数中,用于声明内部排序操作和Hash表在开始使用临时磁盘文件之前可使用的内存数目的参数是什么?23、在PostgresSQL的日志配置项参数中,用于打开日志的参数是哪个?24、PostgresSQL数据库启动时,会先启动哪个进程?25、在PostgresSQL的以下索引中,最常见的索引并且适合处理等值查询和范围查询的索引是哪个?26、在PostgresSQL的以下索引中,只能处理简单的等值查询的索引是哪个?27、在PostgresSQL的以下索引中,下面哪个是反转索引?28、PostgresSQL是否能够自动检测到死锁,然后退出其中一个事务?29、PostgresSQL的时间类型是否可以精确到秒以下?30、在PostgresSQL的几何类型的操作符中,二元运算符左值的类型可以是"point","box","path","circle",请问运算符的右值只能是什么类型?31、PostgresSQL数据库在客户端与服务器之间传递数据时,是否会进行字符集的转换?32、PostgresSQL数据库中用于范围快速搜索的数据类型是哪个?33、在PostgresSQL的数值类型中,目前不支持的类型是什么?34、PostgresSQL数据库中不能作为字段的数据类型是哪个?35、PostgresSQL数据库是否支持裸设备和块设备?36、在PostgresSQL中,以下哪个不是块头记录的信息?37、在PostgresSQL中,行指针的结构不包括下面哪一个?38、在PostgresSQL中,下面哪个系统字段表示数据行在它所处的表内的物理位置?39、在PostgresSQL中,如一个事务失败,在数据文件中这个事务产生的数据会不会在事务回滚时被清理掉?40、在PostgresSQL的数据目录结构中,默认表空间的目录是哪个?41、在PostgresSQL的数据目录结构中,一些共享系统表的目录是哪个?42、在PostgresSQL的数据行中,不包括下面哪一个?43、在PostgresSQL中,使用命令analyze手工收集统计信息,收集后的结果保存在哪个系统表中?44、在PostgresSQL中,切换log日志文件到下一个的命令是什么?A.select pg_reload_conf();B.select pg_rotate_logfile();C.select pg_switch_xlog();45、在PostgresSQL中,关于统计信息收集器的参数,哪个是控制是否收集表和索引上访问的统计信息参数?46、在PostgresSQL的pg_hba.conf文件中支持的认证方式很多,其中口令是以明文形式在网络上传递的方式是哪种?47、在PostgresSQL的pg_hba.conf文件中支持的认证方式很多,其中表示无条件拒绝连接的方式是哪种?48、在PostgresSQL中,VACUUM和CREATE INDEX使用的内存是由哪个参数控制的?49、在PostgresSQL中,一个合理的shared_buffers开始值可以是物理内存的多少?50、在PostgresSQL中,WAL日志保存在pg_wal中,每个wal文件默认是多大?51、在PostgresSQL中,哪个参数控制着主进程是否启动SysLogger辅助进程?52、在PostgresSQL的ACID中,多版本并发控制(MVCC)维护的是什么53、在PostgresSQL中,下面哪个权限不能用GRANT来管理?54、在PostgresSQL中,以下哪个权限不是创建用户时指定的权限?A.并发创建索引的实现方式是在create index中加concurrentlyB.在PostgresSQL中重建索引不支持concurrentlyC.如果在并发创建索引的过程中被强制取消,这个索引也会随之删除D.concurrently支持在同一个字段上建两个索引56、在PostgresSQL中,创建索引的过程中,以下哪个操作可以正常运行?B.索引中记录了表中一列或多列的值与其物理位置的对应关系D.在插入和修改数据时索引不会更新,在收集统计信息时会自动更新索引58、在PostgresSQL中,视图是否全部为只读的,不可更新的?59、在PostgresSQL中,把表从一个表空间移动到另一个表空间会锁表吗?60、在PostgresSQL中,是否可以随时改变一个数据库的默认表空间吗?61、在PostgresSQL中,使用 drop column删除一个字段时,如果这个字段被其他表引用,下面说法正确的是?62、在PostgresSQL的约束中,最常见的是哪种约束?63、在PostgresSQL的网络地址类型中,用于存储以太网的MAC地址的是什么?64、在PostgresSQL的几何类型中,最基本的类型是什么?65、在PostgresSQL中,枚举类型的值大小写是否敏感?66、在PostgresSQL中,参数lc_monetary与哪个数值类型有关?67、在PostgresSQL的数值类型中,精确的小数类型可用什么表示?68、PostgreSQL中,假设test表中仅有一列(id int),下列语句可以执行成功吗?postgres=# insert into test values (1),(2);70、下面语法中连接postgres数据库可以执行成功的是()A.postgres=# \c postgres 5866 postgres 127.0.0.1B.postgres=# \c postgres 5866 127.0.0.1 postgresC.postgres=# \c postgres postgres 5866 127.0.0.1D.postgres=# \c postgres postgres 127.0.0.1 586671、在PG中创建数据库时,默认是从哪个模板数据库中克隆出来的?B.select current_timestamp;73、PostgreSQL关闭数据库的选项中,相当于Oracle shutdown immediate方式的是()74、PostgreSQL中search_path的默认格式是()75、下列语句的执行效果是()revoke create on schema public from publicA.回收public用户在public模式下的create权限B.回收所有用户在public模式下的create权限76、假设PostgreSQL数据库中没有触发器tttt,以下语句能够执行成功且不报错误的是()B.drop trigger tttt on test;C.drop trigger if exists tttt ;D.drop trigger if exists tttt on test; INSERT INTO table1 VALUES (1); INSERT INTO table1 VALUES (2); ROLLBACK TO SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (3); INSERT INTO table1 VALUES (3); INSERT INTO table1 VALUES (4); RELEASE SAVEPOINT my_savepoint;C.显示最近一个查询的列名、列的数据类型、结果返回行数\gdesc用于显示最近一个查询的列名和列的数据类型81、现有一个csv文件,记录数有5000万条,想导入满足特定条件的2000条记录,该怎么实现?A.用OS命令在csv文件中找出这2000条记录,然后复制这2000条记录到新的csv文件中,然后用copy命令读取这个新的csv文件,执行导入过程。B.因为pg11中copy命令可以带where条件,所以直接对这个5000万条记录的csv文件,带好where条件,用copy命令执行导入即可。C.因为pg12中copy命令可以带where条件,所以直接对这个5000万条记录的csv文件,带好where条件,用copy命令执行导入即可。postgres=# copy t_table from '/home/pg124/t_hash.csv' delimiter ',' where c1=5;A.在pg12中,可以使用pg_dumpall的选项排除掉不想备份的一个或者多个databaseB.pg12的pg_dump可以实现一个insert对应多条记录值C.pg12的oid2name命令增加了长名的选项D.在pg12中,pg_dumpall的排除选项仅仅能排除掉一个不想备份的database在pg12中,pg_dumpall新增了—exclude-database选项pg_dumpall --exclude-database='testdb' --exclude-database='testdc' -f alldump_3.sql83、在PG12中,想对system table进行alter table的前提条件是?A.set allow_system_table_mods=onB.设置配置参数allow_system_table_mods为on,然后pg_ctl reloadC.设置配置参数allow_system_table_mods为on,然后PG Instance重启84、想在pg12中清理pg_stat_statements表中一部分数据,该怎么实现?A.使用pg_stat_statements_reset(userid,dbid,queryid)函数B.使用pg_stat_statements_reset(userid,dbid,pid)函数C.使用pg_stat_statements_reset(0,0,0);在pg12中,pg_stat_statements_reset函数新增了用于限制删除统计信息范围的参数参数是按照userid、dbid、queryid进行统计信息的清理(这是参数的顺序,请遵守userid、dbid、queryid这个顺序),若是参数被忽略,那么意味着pg_stat_statements_reset函数会清理所有的统计信息。85、想使用pg_dump命令导出某个partitioned table(即:主表)的数据,该怎么办?B.从pg11开始,pg_dump加--load-via-partition-root选项,可以满足本需求C.从pg11开始,pg_dump不加--load-via-partition-root选项,可以满足本需求pg11的pg_dump和pg_dumpall命令新增了--load-via-partition-root选项A.在pg12开始INSERT ON CONFLICT 语句支持partitioned tableC.pg11中引入了enable_partitionwise_join参数,实现分区级别的joinD.在pg12开始,触发器可以建立在partitioned table上A.从pg12开始可以为函数索引的索引列指定STATISTICSC.pg11中的GiST index支持covering index从PG11开始支持覆盖索引;pg12中的GiST index支持covering indexA.通过initdb的参数--wal-segsize来指定的B.通过configure的--with-wal-segsize参数来指定C.通过configure的--wal-segsize参数来指定89、在统计收集配置中参数track_io_timing的作用是?90、关于PostgreSQL防止在存储设备上造成数据损坏的措施,下列说法错误的是A.用在大型 SQL 查询中排序的临时数据库文件、物化和中间结果也会写入WAL中B.WAL 文件中的每一个记录都被一个CRC-32(32位)校验码所保护C.目前数据页并没有默认地被校验,但是 WAL 记录中记录的整页映像将被保护D.诸如 pg_xact 、 pg_subtrans 、 pg_multixact 、 pg_serial 、 pg_notify 、 pg_stat 、 pg_snapshots 等内部数据结构既没有被直接校验,其页面也没有被整页写保护91、以下哪个文件可以加快VACUUM清理的速度并降低对系统IO性能的影响()92、下列PG V10.0中,关于安全性、可靠性描述错误的是A.支持SCRAM-SHA-256算法, SCRAM相比md5,可以避免因为数据库存储的加密秘钥泄露导致客户端可以篡改认证协议连接数据库的危险。C.新增内置角色pg_backend_pid可用来取消、中止任何进程,不包含其他超级用户权限allow_empty_deletes = true;allow_empty_updates = true;分别控制是否能执行不带条件的Update或Delete,可以设置为全局、会话级、用户级、库级、或者事务级别。E.为Hash索引的操作加上了WAL支持,现在对Hash索引的创建、插入、分裂等操作都会记录WAL日志,数据库崩溃后可以用这些信息来恢复索引A.主库事务将会等待,直到所有同步后备服务器都确认收到了数据为止B.参数synchronous_standby_names可以指定同步备库的数量C.synchronous_standby_names = 'FIRST 2 (s1, s2, s3)'表示在s1,s2,s3中随便选出两个作为同步后备D.synchronous_standby_names = 'ANY 2 (s1, s2, s3)'表示在s1,s2,s3中随便选出两个作为同步后备95、下列哪个参数在后备服务器上的设置不必大于等于主服务器B.max_prepared_transactionsC.max_locks_per_transactionE.vacuum_defer_cleanup_age96、在PostgreSQL流复制备机上,下面哪类命令可以执行97、下面哪种方式不能监控PostgreSQL磁盘空间的方式98、假设表a通过逻辑复制发布,订阅端修改了表a中已经同步的数据,此时发布端再修改同样的数据,会出现的情况是?A.后备服务器必须作为一个超级用户或一个具有REPLICATION 特权的账户向主服务器认证B.若要创建发布,用户不需要在数据库中具有CREATE权限D.只在复制连接开始时检查权限,之后读取更改时不重新检查权限100、下列PostgreSQL客户端应用中,说法错误的是A.pg_restore 是一个用来从归档文件恢复 PostgreSQL 数据库的工具B.pg_recvlogical 控制逻辑解码复制槽以及来自这种复制槽的流数据C.pg_isready 是一个用来检查一个 PostgreSQL 数据库服务器的连接状态的工具D.pg_basebackup 被用于获得一个正在运行的 PostgreSQL 数据库集簇的基础备份A.pg_ctl promote用于开始备库服务器的只读模式C.pg_ctl register用以在Windows上注册PostgreSQL服务器为系统服务器D.pg_ctl reload用于重新读取配置文件102、下列哪项不是PostgreSQL优化器中的连接策略103、下列PostgreSQL的系统视图中,记录排序规则的是104、关于PostgreSQL系统视图中,下列说法错误的是B.pg_publication记录逻辑复制的发布信息105、备份文件osdba.dmp是由osdba库使用pg_dump备份而来,使用如下命令将把数据库恢复至哪个数据库中:pg_restore -d osdba2 osdba.dmp106、如果计划使用归档日志做增量恢复,需将wal_level的值设置为()109、如果想设置pg归档,需要将wal_level设置为什么值?110、在pg中,update操作默认是否是自动提交?111、假设在事务中设置了savepoint A,如何回滚到A?D.rollback to savepoint A113、维护性操作(如VACUUM)使用的内存缓冲区为?114、下列PG V10.0中,关于安全性、可靠性描述错误的是A.支持SCRAM-SHA-256算法, SCRAM相比md5,可以避免因为数据库存储的加密秘钥泄露导致客户端可以篡改认证协议连接数据库的危险。C.新增内置角色pg_backend_pid可用来取消、中止任何进程,不包含其他超级用户权限A.在索引列上的IS NULL或IS NOT NULL条件可以在B-tree索引中使用C.SP-GiST索引为支持多种搜索提供了一种基础结构116、在PostgreSQL中,关于索引下列说法错误的是A.一个B-tree索引可以用于条件中涉及到任意索引列子集的查询B.与B-tree和GiST不同,BRIN 的搜索效率与查询条件中使用哪些索引列无关C.一个多列GiST索引可以用于条件中涉及到任意索引列子集的查询D.一个GIN索引可以用于条件中涉及到任意索引列子集的查询118、在PostgresSQL中,默认情况下EXPLAIN对于不同的操作输出的cost值,下面说法错误的是?119、对pg12中commit and chain描述正确的是A.老事务提交,新开一个新事务后,这个新事务的transaction characteristics(如隔离级别)与老事务一致,只能用在transaction blocks中。B.老事务提交,开始一个新事务后,新事务跟老事务没任何关系120、怎么在PG Instance运行的时候去检查Page的checksum?121、有关vacuum命令的SKIP_LOCKED选项,描述正确的是A.SKIP_LOCKED选项的作用是会跳过那些被lock住的tableB.SKIP_LOCKED选项的作用是会弹出提示,让dba决定是否继续122、可以用下面的哪种方法来检查B-Tree索引的完整性A.pg12中explain语句的SETTINGS ON选项用于输出与执行计划(优化器)相关的并且非默认值的参数B.在pg11中的postgres_fdw不能往远程的partition中插入数据、修改数据C.从pg12开始,backup_label文件带有START TIMELINE price numeric CHECK (price > 0) DEFAULT 0A.建表成功,但插入数据时price列不能使用默认值B.建表成功,插入数据时price列可以使用默认值A.分区表功能是PG V10的新功能,此前的版本没有此功能B.PG10的分区特性是在内置继承表的基础上实现的D.PG10的分区表在建表语法上,主表和分区是单独创建的129、PG V10的分区表中,记录主表信息的系统表为130、PG中,如果想在like语法中匹配%或者_,则可以在字符前加()进行转义。131、PG创建序列时加了cycle选项,当序列满时会报错。133、当多个事务同时运行时,一个事务可以看到另一个事务未提交的内容吗?134、关于PostgreSQL的分区,下面说法错误的是D.可以将包含数据的普通表或分区添加为分区表的分区135、“DROP TABLE products CASCADE;”如另有一表order的外键基于表products创建,关于这条语句说法正确的是。B.直接删除表products,并且删除表order的外键约束。C.直接删除表products,并会删除表orderD.不能删除表products,提示表order的外键依赖表productsA.子查询指定了一个派生表,它必须被包围在圆括弧里B.子查询里面有分组或聚集的时候, 子查询不能被简化为一个简单的连接A.可以在WITH中使用INSERT、UPDATE、DELETEB.WITH中的数据修改语句通常具有RETURNING子句D.WITH中的数据修改语句只被执行一次,并且总是能结束139、以下哪种类型只用于在内部系统目录中存储标识符并且不是给一般用户使用的140、以下哪种不是PostgreSQL的几何类型A.reset是set configuration_parameter to default的另一种写法C.reset与set相同,他们的效果都不会被事务回滚而撤销D.reset的默认值是指在会话开始所设置的默认值143、有关set transaction说法错误的是C.此命令设置当前事务的特性,对后续事务的默认特性没影响D.如果执行set transaction之前没有start transaction或者begin,会更改当前会话的事务属性A.如果列的表达式不是正确的数据类型,将会尝试自动类型转换D.若没出现在显式或隐式列列表中的列,都将被默认填充B.delete语句与truncate语句都是DDL语句C.若在表名前加only选项,只会从提到的表中删除匹配的行D.delete语句返回结果一定是语句所匹配的行数A.从pg11开始,truncate语句可以被pg逻辑复制捕获C.truncate并没有立刻回收磁盘空间,后续需要VACUUM操作D.truncate不会阻塞其他在该表上的并发操作A.使用except关键字做减法运算时,不管表的前后位置是否相同,得到的结果都是一致的D.使用except做差集运算,结果集的行数不一定会减少154、想使用like谓词查询出包含ddd字符串的值,可以通过____完成155、关于postgresql中的CTE说法正确的是B.对于RANK函数,计算排序时,如果存在相同位次的记录,则会跳过之后的位次C.对于DENSE_RANK函数,计算排序后,即使存在相同位次的记录,也不会跳过之后的位次D.对于ROW_NUMBER函数,是赋予唯一的连续位次158、两个表联结时,结果集中保留重复行的关键字是B.alter system会把给出的参数设置写入到postgresql.conf中C.使用alter system更改的参数,都需要重启数据库来使其生效160、下面哪个不是PostgreSQL中的数字类型161、PG中,在事物中(begin块中)使用序列,当事物回滚后,序列会回滚吗?164、有如下配置场景 postgresql.conf中work_mem = 4MB 用户a执行如下语句"alter system set work_mem = '5MB';","select pg_reload_conf();" 用户b执行如下语句:"alter role all set work_mem = '6MB'","set work_mem = '7MB';" 则在用户a、用户b窗口下的work_mem分别为:165、如在数据文件目录中存在3746数据文件,那么下列哪个文件不是可能同时存在的文件:166、设置客户端远程能够以密码认证方式,以任一数据库用户连接任一数据库,应该在pg_hba.conf中添加如下那种配置C.host replication all 127.0.0.1/32 identD.host all all 0.0.0.0/0 md5167、对于pg_ctl -D $PGDATA stop -m immediate命令,下列说法正确的是B.数据库关闭时会回滚未未完成的事务,并断开客户端连接C.数据库关闭时会强制断开客户端连接,造成不干净的关闭168、About PG mem, Which is wrongB.shared_buffer is sharedD.temp_buffers is private169、Which type is not available170、PG要求s1,s2,s3都配置为同步备库,以下synchronous_standby_names配置不正确的是176、当更新一条数据时PostgreSQL内部对于多版本是如何操作A.实际上是插入新行,把旧行上的xmax设置为当前事务id,新插入行的xmin设置为当前事务id,新行的xmax设置为0B.实际上是插入新行,把旧行上的xmax设置为当前事务id,新插入行的xmax设置为当前事务id,新行的xmin设置为0C.实际上是插入新行,把旧行上的xmax设置为0,新插入行的xmax设置为当前事务id,新行的xmin设置为0177、PostgreSQL中如何取消一条运行时间很长的SQLA.SELECT pg_cancel_backend(pid);B.SELECT pg_kill_backend(pid)C.SELECT pg_close_backend(pid);178、当连接到PostgreSQL数据库时以下说法正确的是:A.PostgreSQL会Fork出新的用户服务进程B.PostgreSQL会从连接池中提供一个空闲连接供使用C.PostgreSQL原生支持长连接不用每次创建新的连接179、BgWriter进程是把共享内存中的脏页写到磁盘上的进程,下列说法正确的是A.刷新过快会导致IO变多,刷新太慢会导致缓冲区空闲空间不够B.设置bgwriter_delay使BgWriter每个运行周期之间的时间间隔越长越好C.每一轮次要写的脏缓冲区的数目基于系统此时的脏页数目的多少A.在同一数据库的不同Schema中可以创建同名的表B.用户A是模式schema01的属主,他就可以在任何数据库中的schema01下创建表C.创建数据库的同时,会默认创建名为public的SchemaD.数据库属于用户A,数据库下的Schema可以属于用户B183、在c1属性上创建B树索引能提高SELECT * FROM t1 WHERE c1 = 10 ORDER BY c1 执行效率的正确原因是B.能够通过索引减少IO次数并且避开了ORDER BY所需的排序操作,因为索引是有序的185、PostgreSQL中逻辑层次关系 下列描述哪个是正确的2、对于网络地址类型,可以使用相关操作符判断出包含哪些子网3、PostgreSQL中为表的字段设置默认值后无法更改。10、PostgreSQL中使用表继承时,修改子表数据,父表中无法查询修改后的值。11、PostgreSQL中所有父表的检查约束和非空约束都会自动被所有子表继承。12、PostgreSQL中分区表是采用表继承的方式实现的,分区表插入数据可以依赖触发器,也可以使用postgresql的规则来实现。13、PostgreSQL中语句级触发器即使在没有更新到数据时,也会被触发。14、一个pstgresql数据库服务下可以管理多个数据库。15、PostgreSQL创建数据库时指定的connection linit参数对superuser不起作用。17、PostgreSQL不能在事物块(begin--end)中创建数据库,但可以在事物块中更改数据库名。18、PostgreSQL中jsonb类型支持在其上创建索引,而json不支持。19、PostgreSQL中range类型不支持使用=或<>等操作符。20、PostgreSQL中可以在线移动一个表至其他的表空间,而表不会加锁。21、PostgreSQL中可以创建临时性视图,仅对当前会话生效,退出会话临时视图自动删除.22、PostgreSQL高版本中对于简单视图可以进行增删改操作,同时修改基表数据23、PostgreSQL中使用CONCURRENTRY选项创建索引时,允许增删改数据表。24、PostgreSQL中支持如下方式创建索引:alter index t_i_2 rebulid;25、PostgreSQL中支持在同一列中创建多个索引。27、在模板数据库template1中,不可以创建、删除、更改对象。28、PostgreSQL默认初始化数据库后,模板数据库template0和template1包含的内容是一致的。29、union可以把结果集中相同的两条记录合并成一条,如若使用union all则不合并。30、删除大表的情况下,truncate要比delete快。31、PostgreSQL迁移或升级后的数据库blocksize大小可以不一致。32、PostgreSQL源码安装对Linux系统包没有要求。34、在同一台机器上安装了多个PostgreSQL数据库实例的情况下,多个实例之间可以共用一个5432端口。35、PostgreSQL告警日志信息仅能保留7天,7天前的日志会被覆盖。36、一个排序操作的单个SQL执行完毕后,work_mem内存空间会释放37、PG中的savepoint在事物结束后仍然有效。38、PG中使用两阶段提交功能,需要把参数max_prepared_transactions设置为非零值。39、PostgreSQL由于多版本的实现,实际读取行数据时,并不会在行上执行任何锁(包括读锁)40、如果在for update或for share中使用of tab_name明确指定了表名字,那么只有这些被指定的表会被锁定,其他在select中使用的表将不会被锁定。41、使用JDBC连接PG数据库不需要libpq库,但使用ODBC连接PG数据库需要首选安装libpq库。42、使用pg_dump/pg_restore备份/恢复数据库时,支持并行备份/恢复。43、以下说法是否正确:在PostgresSQL9.3之后,PostgresSQL使用“mmap()”方式的共享内存。使用这种共享内存的好处是不再需要配置内核参数"kernel.shmmax"和"kernel.shmall"。44、pg_dump可以将数据库备份为自定义的归档格式,而pg_dumpall仅能备份为SQL脚本文件。45、PG中取消一个长时间执行的会话,pg_cancel_backend()和pg_terminate_backend()都会杀死进程的。46、PG中,autovacuum可以自动地分析表,并收集表的统计信息47、PG中对于大表,ANALYZE会读取表的所有内容进行统计信息收集48、PG中收集统计信息时,可以对表中某一列单独收集统计信息50、使用Heap Only Tuples技术后,如果更新后的新行与旧行在同一个数据块内,旧行会有一个指针,指向新行,这样就不必更新索引了,当从索引访问到数据行时,会根据这个指针找到新行。51、使用ANALYZE搜集统计信息时,会在表上加一个读锁,因此它可以和表上的其他SQL并发的执行。52、PG V10的范围分区中,分区的KEY值可由多个字段组成53、PG V10的列表分区中,列表分区的KEY值可由多个字段组成54、PG中创建sequence时指定了owned to table.column,在drop table***cascade时,sequence不会被删除。55、PG中的savepoint在事务结束后仍然有效。1、UNION可以将两张表查询出来的数据整合在一个结果集下,如果这个结果集中有相同的记录,以下说法正确的是?C.使用UNION ALL可以将相同的记录合并成一条3、psql命令列出数据库中的所有角色或用户的元命令?6、PostgresSQL数据库服务端不支持哪些汉字字符集?8、pg_ctl是一个实用工具,以下哪些是pg_ctl的功能?D.在Windows平台下允许为数据库实例注册一个系统服务或取消一个系统服务9、在PostgresSQL中,把参数分为以下几类,其中改变参数值后不需要重启数据库就能生效的有哪几类?10、在PostgresSQL中的多版本实现中用于控制数据行是否对用户可见的系统字段有哪些?11、在PostgresSQL的连接配置项参数中,哪些参数与Windows无关?A.unix_socket_directoriesB.superuser_reserved_connections12、在PostgresSQL的预写式配置项参数中,wal_level参数可选择的值有哪些?wal_level支持minimal、replica、hot_standby、logical、archive13、在PostgresSQL的pg_hba.conf文件中支持的认证方式很多,一般常见的有哪些方式?14、在PostgresSQL中,不同的编程语言使用不同的驱动程序连接到PostgresSQL数据库上,下面哪种连接方式不需要libpq库?15、在PostgresSQL中,以下属于本地内存缓冲区的有哪些?16、PostgresSQL软件安装后的目录结构有哪些?17、在PostgresSQL中,支持以下哪些索引?18、PostgresSQL提供了许多返回当前日期和时间的函数,其中能返回带有时区的函数是哪个?19、在PostgresSQL的几何类型的操作符中,下面哪些属于二元运算符?21、在PostgresSQL中,以下属于约束是?22、在PostgresSQL的数值类型中,不精确的数据类型有哪个?23、在PostgresSQL中,布尔类型可以使用的操作符是逻辑操作符和比较操作符,其中常见的逻辑操作符有哪些?24、在PostgresSQL的数值类型中,以下属于整数类型的是?25、在PostgreSQL中显示命令执行的sql的方法有()B.在psql中执行\set ECHO_HIDDEN OND.在psql中执行\set ECHO_HIDDEN OFF26、PostgreSQL中的字符类型包含哪三种()27、PostgreSQL中boolean类型的表示方法正确的有()28、PostgewSQL中的几何数据类型可以支持()A.alter database db_name rename to newname;B.alter database db_name owner to newname;C.alter database db_name set tablespace new_tbspace;D.alter database db_name reset all;31、下列依据模板创建表的方式中,不包含数据的有()A.create table testd (like test) including all;B.create table testc as select * from test with no data;C.create table testb (like test); D.create table testd (like test including all);A.^@运算符不支持B-Tree索引,支持SP-GiST索引B.该运算符的作用与like '查找关键字%'相同C.该运算符的作用与like '%查找关键字'相同D.该运算符的作用与like '%查找关键字%'相同select *from pg_user where usename like 'pg%';select *from pg_user where usename ^@'pg';^@运算符不支持B-Tree索引,支持SP-GiST索引,A.PG12新加了Procedure这个数据库对象B.在procedure中允许出现commit 或者rollbackPG11中新加的procedure对象,其实就是存储过程(stored procedure),大家知道,pg10及更老版本中只有function。那么procedure和function的区别如下:在function中不允许执行事务,也就是在function中不允许出现commit 或者rollback在procedure中可以执行事务,也就是在procedure中允许出现commit 或者rollbackprocedure可以返回value,通过output parameter的形式。A.在pg12的psql中可以使用\dP和\dP+显示分区的relation(table和index)B.针对分区表,在pg12的\d命令可以明确显示是分区表C.pg12的pg_upgrade命令的--clone选项仅仅针对某些特定版本的文件系统才支持36、有关pg12的pg_checksums命令,下面描述正确的是A.本命令是对pg11中pg_verify_checksums命令的改进B.检查checksum的完整性以及启用与禁用PGDATA的checksumC.必须先正常关闭才能正常使用pg_checksums命令D.当$PGDATA没有启用checksums时,可以使用pg_checksums 命令去启用checksumE.可以在PG instance运行时去正常使用pg_checksums命令本命令是对pg11的pg_verify_checksums命令的改名,作用是检查checksum的完整性以及启用与禁用PGDATA的checksum必须先正常关闭才能使用pg_checksums命令37、有关pg_ctl的logrotate选项,下面描述正确的是B.可以带-s运行,即:pg_ctl logrotate -sC.可以不带-s运行,即:pg_ctl logrotate38、pg12中pg_basebackup命令的-R选项的描述正确的是A.带-R选项后,备份文件中带有standby.signal文件B.带-R选项后,postgresql.auto.conf文件中含有primary_conninfo参数C.-R选项已经没有任何意义,因为recovery.conf文件在pg12中已经废弃在pg12中pg_basebackup命令的-R选项与PG11有所不同第一:备份文件中带有standby.signal文件第二:postgresql.auto.conf文件中含有primary_conninfo参数A.在pg12中,可以在每个connection上设置wal_sender_timeout参数B.在pg12中Log_connections设置为on时,会将application_name输出到pg的运行日志中C.ssl_library参数用于指示提供SSL特性的library name在pg12中,可以在每个connection上设置wal_sender_timeout参数Allow the streaming replication timeout (wal_sender_timeout) to be set per connection (Takayuki Tsunakawa)wal_sender_timeout参数默认值是60秒,不带单位时,默认的单位是milliseconds在pg12中Log_connections设置为on时,会将application_name输出到pg的运行日志中在pg12中ssl_library参数用于指示提供SSL特性的library name40、有关pg_ls_archive_statusdir函数描述正确的是B.本函数查找${PGDATA}/pg_wal/archive_status目录并输出filename、size、modification dateC.本函数需要superuser或者赋予pg_monitor角色之后才能使用在pg12中新增了pg_ls_archive_statusdir函数用于获得归档wal文件的状态本函数查找${PGDATA}/pg_wal/archive_status目录并输出filename、size、modification datepg_ls_archive_statusdir函数需要superuser或者赋予pg_monitor角色之后才能使用。41、下面对index_cleanup描述正确的是A.在pg12中,vacuum 可以通过index_cleanup选项跳过对index的清理B.在pg12中可以在create table语句中定义存储参数vacuum_index_cleanup是否对本表的index进行清理C.启用index_cleanup的副作用是会引起index的膨胀D.如果vacuum不带INDEX_CLEANUP选项,vacuum会参考该表的VACUUM_INDEX_CLEANUP属性在pg12中vacuum带有INDEX_CLEANUP选项通过指定INDEX_CLEANUP选项,可以禁止vacuum处理index,如果vacuum不带INDEX_CLEANUP选项,vacuum会参考该表的VACUUM_INDEX_CLEANUP属性。42、对pg12中alter type add value语句的相关描述正确的是A.在pg12中可以在一个事务内执行alter type add value语句B.在pg12中不能在一个事务内执行alter type add value语句在pg12中可以在一个事务内执行alter type add value语句,但是用该语句新加的type无法在该事务内使用43、下面有关对column_column_usage系统表的描述,正确的是C.该系统表在pg_catalog这个schema下D.该系统表在information_schema这个schema下column_column_usage系统表存储了生成列的有关信息44、对PG11的pg_basebackup,下面描述正确的是A.pg_basebackup备份TEMPORARY table和 UNLOGGED tableB.pg_basebackup不备份TEMPORARY tableC.pg_basebackup备份UNLOGGED tableD.pg_basebackup备份TEMPORARY tableE.pg_basebackup不备份UNLOGGED table在pg11中,pg_basebackup的备份文件中不包括TEMPORARY table和 UNLOGGED tableA.pg11的pg_basebackup命令新增了--create-slot选项,用于备份完成后将复制槽保留下来B.pg11的pg_dump命令新增了--no-comments选项,用于不将comments写入dump文件C.pg11的pg_dumpall命令带有--encoding 选项 (或者-E参数),用于定义导出数据时使用的字符编码pg11的pg_basebackup命令新增了--create-slot选项(-C选项)该选项用于创建一个复制槽,--create-slot选项之后会带有一个--slot选项以指定复制槽名称。当pg_basebackup --create-slot --slot=test_back_1备份完成之后,指定的复制槽还是会保留下来。pg11的pg_dump命令新增了--no-comments选项该选项的作用是不将comments写入dump文件中pg11的pg_dumpall命令带有--encoding 选项 (或者-E参数)46、对psql中的查询结果不想分页显示,有哪些方法可以实现?A.设置OS的环境变量PSQL_PAGER,见下:export PSQL_PAGER=''B.设置OS的环境变量PSQL_PAGER,见下:export PSQL_PAGERS='NO'C.在psql中执行\pset pager offD.设置OS的环境变量PAGER,见下:export PAGER=''E.设置OS的环境变量PAGER,见下:export PAGERS='NO'在pg11中新增了export PSQL_PAGER环境变量.export PSQL_PAGER=‘’表示在psql中直接输出结果,不需要分页符有关分页符生效的先后顺序为先PSQL_PAGER,再PAGER,最后是\pset pagerA.执行存储过程的方法是:call 存储过程名字('参数');B.可以使用psql的\sf元命令去查看存储过程的定义C.可以使用psql的\df元命令去查看存储过程的定义D.当存储过程中引用的table不存在时,存储依然可以建立,只是会在执行存储过程时报错可以看到,存储过程可以建立,并且建立存储过程时不报错,但是执行报错,因为test1表是不存在的。这一点是与Oracle不同的,在Oracle中若是test1表不存在,在创建此存储过程时,Oracle会带有编译性的警告。但是PostgreSQL无警告。在create/alter trigger语句中可以带procedure48、下列哪三个role是在pg11中新增的roleA.pg_execute_server_programsD.pg_execute_server_programA.在pg11中,可以在partitioned table上建立Foreign KeyB.在pg11中引入了partition pruningC.在pg12开始逻辑复制支持truncate语句的同步D.在pg11中当含有default值以及not null值的列新增时不实际更新列值50、下列pg_verify_checksums命令说法正确的是A.pg_verify_checksums命令用于检查page的checksum值B.pg_verify_checksums命令可以检查某个表文件的checksum值C.可以在PG实例打开时运行pg_verify_checksums命令D.在PG11中,pg_verify_checksums命令使用的前提是initdb建库时带-k或者--data-checksums51、在PostgresSQL 的预写式配置项参数中,wal_level参数可选择的值有哪些?wal_level支持minimal、replica、hot_standby、logical、archive54、PG V10.0中将加入内置分区表的功能,依旧使用了继承的特性,以下相关特性表述正确的是。A.分区表不支持全局索引,因此无法实现全局的唯一约束C.修改主表的字段名、字段类型时,会自动同时修改所有的分区D.TRUNCATE 主表时,会清除所有继承表分区的记录(如果有多级分区,也会一直级联下去);E.目前支持分区表的ON CONFLICT .. DO NOTHING ,暂时还不支持ON CONFLICT .. DO UPDATE55、PG V10.0增加了对后台运行的支持,提供了三个SQL函数,其功能描述正确的是A.pg_background_launch : 开启后台work进程与会话,执行用户提供的SQL,返回后台会话的PIDB.pg_background_result : 根据提供的PID,返回这个后台会话执行SQL的结果C.pg_background_detach : 根据提供的PID,返回这个后台会话执行SQL的结果,同时关闭这个后台进程D.pg_background_result还会返回执行所用的时间56、在PostgresSQL V10的预写式配置项参数中,wal_level参数可选择的值有哪些?V10 没有hot_standby 和archive ???不过也可以写58、PostgreSQL中因流复制造成的主备冲突包括哪几种情况?A.在主服务器上取得了访问排他锁,包括显式 LOCK 命令和多种 DDL 动作,与后备查询中的表访问冲突B.在主服务器上删除一个表空间与使用该表空间存储临时工作文件的后备查询冲突C.在主服务器上删除一个数据库与在后备服务器上连接到该数据库的会话冲突D.从 WAL 清除记录的应用与快照仍能“看见”任意要被移除的行的后备事务冲突E.从 WAL 清除记录的应用与在后备服务器上访问该目标页的查询冲突,不管要被移除的数据是否为可见61、分区表中,可以使用什么方法使数据从主表重定位到子表?62、关于vacuum与vacuum full的说法,正确的是A.vacuum和vacuum full均可与dml语句并行运行,但不能与ddl语句并行运行B.vacuum可以与dml、ddl并行运行,vacuum full不可以C.vacuum可以与dml并行运行,但不能与ddl并行运行D.vacuum full不能与dml、ddl并行运行63、哪些是连续归档和时间恢复点(PITR)的优点D.可以针对支持PostgreSQL数据库中任何一个子集进行重放65、关于PG 12内置分区表,以下相关特性表述正确的是。C.修改主表的字段名、字段类型时,会自动同时修改所有的分区D.TRUNCATE 主表时,会清除所有继承表分区的记录(如果有多级分区,也会一直级联下去);66、PG11中有关partition的新特性描述正确的是B.pg11中可以建立default partitionC.pg11中可以对partition key进行更新D.pg11中在partitioned table(主表)上建立索引,索引会自动建立在partition(子表)上E.pg11中可以在partitioned table上建立unique constraintsF.在pg11中attach分区时,会自动给该新分区建立唯一约束和索引67、有关PG在Windows平台上使用LargePages(即HugePages)的说法正确的是A.从pg12开始支持在Windows平台使用LargePagesC.需要将Windows服务中的postgresql数据库服务改为手动D.需要在windows组策略编辑器,赋予运行PostgreSQL的操作系统用户'锁定内存页'的权力E.当在Windows平台上开启大页的情况下,只能以管理身份从Windows的cmd启动PG,也就是用类似如下的命令pg_ctl start -D E:\postgresql\data注:从pg11开始支持在Windows平台使用LargePages68、有关toast_tuple_target,下面说法正确的A.toast_tuple_target是在pg11中新增的存储参数B.toast_tuple_target是在pg12中新增的配置参数C.当tuple length长度超过toast_tuple_target时就会compress和/或者move字段值69、想要重新设置PG11数据库的wal大小,下面说法正确的是B.需要使用pg_resetwal去调整wal大小D.调整后的效果可以从pg_controldata中查询70、关于pg_internal.init文件的描述,正确的是A.从pg12开始,在pg_basebackup的备份文件中不包括pg_internal.init文件D.本文件存在于$PGDATA/global目录下及$PGDATA/base/<db_oid>目录下A.pg_stat_progress_cluster用于显示cluster语句或者vacuum full语句的执行状态B.pg_stat_progress_create_index用于显示create index语句的执行状态C.pg_stat_gssapi用于显示connections是否使用GSSAPI authentication与encryption信息D.可以用普通用户去查询pg_statistic_ext_data系统表72、下面对pg_stat_database的描述,正确的是A.pg_stat_database系统表中checksum_failures列的含义是检测到的corrupted blocks的数量B.当checksum error被检测到之后,checksum_failure的列值就会被更新一次(该列说白了就是检测到checksum error的次数),该列不代表corrupted blocks的数量。C.pg_stat_database系统表中checksum_last_failure列的含义是:最后一次checksum_error被检测到的时间D.pg_stat_database系统表中datid=0的行是与数据库无关的全局对象信息73、对MCV(Multi-Column-Values)统计信息,描述正确的是B.mcv存储了实际值,因此,可以更为精确的判断where条件的组合的预计返回记录数A.在insert语句和update语句中,不能为GENERATED column(生成列)指定value,除了default关键字B.B.GENERATED column(生成列)的列值是物理存储在table中的C.GENERATED column(生成列)不能作为partition keyD.不能定义一个基于其他GENERATED column(生成列)的GENERATED column(生成列)E.在insert语句和update语句中,能为GENERATED column(生成列)指定value,除了default关键字75、下面对pg12中的partitioned table描述正确的是A.partition table的for values子句可以用公式,并且公式的计算是在create table时执行的B.在pg12中,foreign key仅仅可以参照partitioned table,不可以参照partitioned table中的partitionC.在pg12中,建立partitioned table时支持tablespace关键字D.在pg12中,foreign key可以参照partitioned table76、有关REINDEX语句和CONCURRENTLY关键字的描述,正确的是?A.REINDEX CONCURRENTLY语句的实现原理是通过临时建立一个新索引({index_name}_ccnew)随后用old_index名字替换的方式进行的.B.REINDEX CONCURRENTLY 语句会消耗额外的cpu、memroy、io资源,C.REINDEX CONCURRENTLY 语句在执行时,不阻塞写也不阻塞读。D.针对temporary tables,reindex总是non-concurrentE.REINDEX SYSTEM命令支持CONCURRENTLYF.REINDEX CONCURRENTLY可以在事务块内执行77、有关vacuum命令的TRUNCATE选项,描述正确的是A.当vacuum(TRUNCATE off)时,vacuum不会对该table中尾部的free area区域进行回收B.若是vacuum不带truncate选项,那么需要看该table的VACUUM_TRUNCATE属性设置,进而确定是否对该table中尾部的free area区域进行回收C.从pg11开始,vacuum带有truncate选项注:从pg12 vacuum带有truncate选项78、下面有关partition函数的说法正确的是A.pg_partition_tree函数,返回分区表详细信息,例如分区名称、上一级分区名称、是否叶子结点、层级,层级为零表示顶层主表。B.Pg_partition_root函数用于查询出分区表顶层主表的名字C.pg_partition_ancestors返回上层分区名称,包括本层分区名称。79、有关plan_cache_mode参数,描述正确的是A.设置prepared statements的执行计划是否cache起来B.在默认情况下,如果相同的SQL Statement执行到第六次时,执行计划被cache起来C.当plan_cache_mode配置参数设置为force_custom_plan时,立即启用执行计划缓存D.当plan_cache_mode配置参数设置为force_generic_plan时,会关闭执行计划缓存80、有关对Data_sync_retry参数的描述,正确的是B.当Data_sync_retry=off时,如果flush 修改过的data files到文件系统时flush失败,PostgreSQL会抛出一个PANIC级别的error,然后PostgreSQL instance会CrashC.当Data_sync_retry=on 时,PostgreSQL会报告一个error,但是会继续运行,以便data在后面的checkpoint中进行尝试flushing data81、下面对pg12的pg_restore的-f选项,描述正确的是B.该选项的作用是与-l参数联合使用,查看dump文件中的内容82、在pg12中,想把psql中的查询结果输出为csv格式,有几种方法C.使用\pset csv_fieldsep进行设置83、PG中,在使用like操作符时,分别代表1个和多个字符的符号是()84、“...FROM ONLY cities…”上面语句中的ONLY关键词可以用在哪些命令中?A.字母(a-z,也可以是带变音符的字母和非拉丁字母)A.不能创建全局索引,只能在每个子分区上单独创建索引 pg12C.唯一或排除约束只能在单个子分区上创建,不支持在整个分区表中创建唯一约束或排除约束88、在PostgreSQL中,可以加快大量插入数据速度的措施为91、postgresql中采用三值的逻辑系统,三值包括: order_id integer PRIMARY KEY, product_no integer REFERENCES products (product_no), price numeric CHECK (price > 0), discounted_price numeric CHECK (discounted_price > 0), CHECK (price > discounted_price)A.正常创建索引会阻塞其他链接对表的写入操作,为了降低影响,我们需要使用CONCURRENTLYB.hash index仅支持等值查询,所以需要谨慎使用。D.在pg11中,可以直接执行reindex CONCURRENTLY,这样不会影响表的数据写入。A.patroni + zookeeper(etcd) + postgresql + vipB.repmgr + postgresql + vipC.pacemaker + corosync + postgresql +vipD.stolon + etcd +postgresql + vipB.maintenance_work_mem声明在维护性操作时单个维护进程可以使用的最大内存,如vacuum,create index。C.wal_buffer用于存放wal的磁盘页面缓冲区的共享内存量D.effective_cache_size对写入数据影响很大,建议调整为内存总数的1/4A.如果需要搭建流复制集群,必须要配置synchronous_standby_names参数。???B.如果要备库支持查询,需要启用hot_standby参数。C.wal sender 进程和wal receiver进程是实现postgresql复制(streaming replication)的进程。A.PostgreSQL执行delete操作并没有真正的删除旧行,而是在旧行上打了一个"删除标签",然后插入新行。B.PostgreSQL执行update操作时会有两个操作,一是会把修改本身写入redo,二是会让这个数据块被记录到undo。C.PostgreSQL对于这种无回滚段的多版本实现方式做了很多的优化,如HOT(heap only tuple)技术。D.在频繁更新的表时,应该调整fillfactor参数更高些,这样会提高DB的更新效率。D.initdb/Pg_resetwal支持修改WAL文件大小104、关于数据库的目录结构,下列描述正确的是()A.base目录存放默认的表空间pg_default。模板数据库和其他没有显式赋予表空间的数据库都存放在这个目录中。B.pg_clog存放事务提交日志数据。这些数据文件主要由VACUUM读取,一旦这些数据文件没用了就会被移除。如果你在禁用文件系统缓存的文件系统上挂载数据库,这个目录会造成PostgreSQL不能正常工作。C.当你创建新的表空间,符号链接会保存在 pg_tblspc中。D.事务提交日志数据存放在pg_clog/pg_wal中。A.postgres常驻进程,也被称作'postmaster',主要负责fork其他后端进程和处理来自前端的连接。B.Writer process 主要负责把共享内存上的WAL缓存在适当的时间点往磁盘写,通过这样,可以减轻后端进程在写自己的WAL缓存时的压力,提高性能C.Archiver process 负责把WAL日志转移到归档日志里。D.autovacuum worker process进程实际执行vacuum的任务。有时候会同时启动多个vacuum进程A.先用CREATE INDEX CONCURRENTLY创建一个不同名称的索引,然后再将之前的索引删除C.将maintenance_work_mem增大以加快索引的创建112、PostgreSQL采用多进程方式的好处是113、关于pg_stat_activity系统表说法正确的是116、关于pg_restore恢复命令说法正确的是编者邮箱:Sunxin@PostgreSQL.cc如需引用,请注明来自“ 孙鑫@盘古云课堂 特邀高级讲师”
并请通过邮件: A@PostgreSQL.cc 告知正确答案请关注“盘古云课堂-考试中心”,仅限内部学员查阅