1. 历史版本兼容性
数据库系统的向后兼容性能够为对旧版本的数据库应⽤提供⽀持。
array_nulls
参数说明:控制数组输⼊解析器是否将未⽤引⽤的 NULL 识别为数组的⼀个 NULL 元素。
取值范围:布尔型
on 表⽰允许向数组中输⼊空元素。但 PostgreSQL 8.2 之前的版本不⽀持这么做,因此将把 NULL 当作字符串 “NULL” 。
off 表⽰向下兼容旧式模式。仍然能够创建包含 NULL 值的数组。
默认值:on
backslash_quote
参数说明:控制字符串⽂本中的单引号是否能够⽤ \’ 表⽰。
符合 SQL 标准的写法是将其双写(’’),之前版本的 PostgreSQL 允许使⽤\’ 表⽰。但是使⽤ ’ 容易导致安全漏洞,因为存在某些多字节字符集中的最后⼀个字节与 \ 的 ASCII 值相等。服务器拒绝带有反斜杠转义的查询可以预防这种风险。
注意:
在字符串⽂本符合 SQL 标准的情况下,\ 没有任何其他含义。这个参数影响的是如何处理不符合标准的字符串⽂本,包括明确的字符串转义语法是(E’…’)。
取值范围:枚举类型
on 表⽰⼀直允许使⽤ \’ 表⽰。
off 表⽰拒绝使⽤ \’ 表⽰。
safe_encoding 表⽰仅在客户端字符集编码不会在多字节字符末尾包含 \ 的 ASCII 值时允许。
默认值:safe_encoding
default_with_oids
参数说明:在没有声明 WITH OIDS 和 WITHOUT OIDS 的情况下,这个选项控制在新创建的表中 CREATE TABLE 和 CREATE TABLE AS 是否包含⼀个 OID 字段。它还决定 SELECT INTO 创建的表⾥⾯是否包含 OID 。
不推荐在⽤户表中使⽤ OID ,故默认设置为 off。需要带有 OID 字段的表应该在创建时声明 WITH OIDS 。
取值范围:枚举类型
说明:
在 PostgreSQL 8.1 之后 default_with_oids 缺省为由 on 改为 off 。
默认值:off
escape_string_warning
参数说明:警告在普通字符串中直接使⽤反斜杠转义。
如果需要使⽤反斜杠作为转义,可以调整为使⽤转义字符串语法(E’…’)来做转义,因为在每个 SQL 标准中,普通字符串的默认⾏为现在将反斜杠作为⼀个普通字符。
这个变量可以帮助定位需要改变的代码。
取值范围:布尔型
默认值:on
lo_compat_privileges
参数说明:控制是否启动对⼤对象权限检查的向后兼容模式。
取值范围:布尔型
on 表⽰当读取或修改⼤对象时禁⽤权限检查,与PostgreSQL 9.0 以前的版本兼容。
默认值:off
quote_all_identifiers
参数说明:当数据库⽣成 SQL 时,此选项强制引⽤所有的标识符(包括⾮关键字)。这将影响到 EXPLAN 的输出及函数的结果,例如pg_get_viewdef。 详细说明请参见 gs_dump 的 --quote-all-identifiers 选项。
取值范围:布尔型
默认值:off
sql_inheritance
参数说明:控制继承语义。
取值范围:布尔型
off 表⽰各种命令不能访问⼦表,即默认使⽤ ONLY 关键字。这是为了兼容 7.1 之前版本⽽设置的。
默认值:on
standard_conforming_strings
参数说明:控制普通字符串⽂本(’…’)中是否按照 SQL 标准把反斜扛当普通⽂本。
应⽤程序通过检查这个参数可以判断字符串⽂本的处理⽅式。
建议明确使⽤转义字符串语法(E’…’)来转义字符。
取值范围:布尔型
说明:
从 PostgreSQL 9.1 版本开始,默认值改为由 off 改为 on。
默认值:on
synchronize_seqscans
参数说明:控制启动同步的顺序扫描。在⼤约相同的时间内并⾏扫描读取相同的数据块,共享 I/O 负载。
取值范围:布尔型
on 表⽰扫描可能从表的中间开始,然后选择"环绕"⽅式来覆盖所有的⾏,为了与已经在进⾏中的扫描活动同步。这可能会造成没有⽤ORDER BY ⼦句的查询得到⾏排序造成不可预测的后果。
off 表⽰确保 PostgreSQL 8.3 之前的版本的顺序扫描是从表头开始的。
默认值 :on
2. 平台和客户端兼容性
transform_null_equals
参数说明:控制表达式expr = NULL(或 NULL = expr)当做expr IS NULL处理。如果expr得出NULL值则返回真,否则返回假。
正确的SQL标准兼容的expr = NULL总是返回NULL(未知)。
Microsoft Access⾥的过滤表单⽣成的查询使⽤expr = NULL来测试空值。打开这个选项,可以使⽤该接⼝来访问数据库。
注意:
这个选项只影响 = NULL精确形式,不包括其他⽐较 *** 作符或者其他与⼀些涉及等号 *** 作符的表达式计算(⽐如 IN)。
取值范围:布尔型
默认值:off,新⽤户经常在涉及NULL的表达式上语义混淆,故默认值设为off。
is_equal_nullstring_and_nullvalues
参数说明:控制空字符串’'与空值NULL是否等价。
on表⽰SQL语句中的空字符串’'在语法分析阶段会被当做空值NULL来处理。
off表⽰空字符串’'不会被当做NULL来处理。
说明:
当sql_format=mysql时,空字符串’'也不会被当做NULL来处理。⼆者是"或"的关系,即只要满⾜前⾯任何⼀个条件,空字符串都与NULL不等价。
取值范围:布尔型
默认值:on,即空字符串与NULL是等价的。
sql_format
参数说明:控制数据库的SQL语法和语句⾏为同哪⼀个主流数据库兼容。
oracle表⽰同oracle兼容。
mysql表⽰同mysql兼容。
取值范围:枚举型
默认值:oracle
¥
5.9
百度文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
gaussdb数据库参数说明【版本和平台兼容性】【14】
gaussdb数据库参数说明【版本和平台兼容性】【14】
1. 历史版本兼容性
数据库系统的向后兼容性能够为对旧版本的数据库应⽤提供⽀持。
array_nulls
参数说明:控制数组输⼊解析器是否将未⽤引⽤的 NULL 识别为数组的⼀个 NULL 元素。
取值范围:布尔型
on 表⽰允许向数组中输⼊空元素。但 PostgreSQL 8.2 之前的版本不⽀持这么做,因此将把 NULL 当作字符串 “NULL” 。
仅供参考所有数据库对象都有各自的oid(object identifiers),oid是一个无符号的四字节整数,相关对象的oid都存放在相关的system catalog表中,比如数据库的oid和表的oid分别存放在pg_database,pg_class表中。
1、数据库集群-Database cluster
2、数据库-Database
3、表空间-tablespace
数据库在逻辑上分成多个存储单元,称作表空间。表空间用作把逻辑上相关的结构放在一起。数据库逻辑上是由一个或多个表空间组成。
新创建的数据库默认创建下面的表空间:
1)Catalog表空间 存放系统表信息2)System表空间 存放用户数据3)Temp表空间
4、模式-Schema
自动创建的系统模式如下:
1)PG_CATALOG2)PG_LARGEOBJECT3)PG_TOAST4)PG_PARTITION
默认的用户模式PUBLIC。
5、段-segment
6、区-extent
7、块-block
8、数据库对象-Database object
1)模式对象表、索引、序列、大对象、视图、函数、存储过程、触发器、包 … …2)非模式对象用户、数据库
9、数据表-Table
10、索引-Index
11、序列-Sequence
12、视图-View
二、物理存储结构
在执行initdb的时候会初始化一个目录,通常我们都会在系统配置相关的环境变量$PGDATA来表示,初始化完成后,会再这个目录生成相关的子目录以及一些文件。在postgresql中,tablespace的概念并不同于其他关系型数据库,这里一个tablespace对应的都是一个目录。如下图就是PG的物理结构:
e3b8db31b00c2f05d483b06281f4612b.png
1、存储系统主要包括三个部分:
内存中:buffer,MemoryContext;
数据文件,临时文件;
日志文件,日志缓存。
2、文件和目录相关作用描述:
b0bf0a554cc377fae5f8de898df5e43d.png
61b64f793a40b1d2a91e97af7f7c064f.png
3、数据文件结构
3c57d6e6090ee00e4ee3dd1e4ecb3550.png
3.1、页
aefc00e308669659fe45719ea93668ea.png
将数据文件中的空间从逻辑上划分成一个个页面(数据块)。页面是数据库I/O的基本单位,即只能整页读写数据文件, 页面的大小默认是8K。
页面可以分成两种:
1)数据页面:数据页面是用来存储用户数据的。
2)控制页面:控制页面用来管理这些数据页面。
数据库共享缓存中的空间划分也是按页为基本单位, 一个页的大小与数据文件中页的大小一致, 这样便于整页读取数据文件,并放入到数据库Buffer中, 从Buffer写入数据文件也同理,保证了缓存与数据文件结构和内容上的一致性。
3.2、Block(块)
概念上基本等同于Page, 但Block更多用于说明DMS中对数据文件中Page的描述。
例如: 对文件的读写的 *** 作, 文件读写位置的定位, 数据文件空间回收等 *** 作, 单位均是以块进行。
数据块的大小在系统初始化时指定,默认是8K,可以取值4K,8K,16K,32K。
3.3、Extent(区)
把数据文件中8个连续的Page构成的空间称为一个Extent。Extent是数据库进行数据文件空间分配/释放的基本单位。每个表、索引、序列对象都是由若干个区组成。数据文件被创建后,除自动保留部分区作为控制区外,其他区全部处于未分配状态。表、索引、序列对象的所有数据都存放在Extent中,当向这些Extent中插入数据时,若该Extent的所有页面都已占满,系统就会自动在所属表空间的数据文件中寻找一个尚未分配的区,并将其状态修改为数据区。
3.4、控制页面
用于空间管理的控制页面:PFS/GAM/IAM。
用于增量备份的控制页面:DCM。
判断可见性的控制页面:VM。
预留的控制页面:BCM/SGAM。
3.5、PFS
Page Free Space,简称PFS页.
用于记录本数据文件中页面的空间使用情况。对文件中的每个页面,PFS中都有一个“字节”与之对应,该字节记录了该页面的状态。
PFS页前64bytes被预留为页头, 剩下81024-64=8128一共覆盖81288K=64MB空间.
故PFS页每隔8128个页面出现一次, 系统初始化把第一个PFS页放在数据文件的第二个页面位置,即:第1号数据页面, 由此可知,第N个PFS页的位置在8128*N+1.
ed48dc29b411c3c5ef7bc7fe817ef757.png
3.6、GAM
Global Allocation Map,简称GAM页。
功能:记录所在数据文件的Extent的分配情况,GAM页中除GAM头外,剩下空间的每一位(bit)均对应一个Extent的分配情况。若某bit位为1,则表明该bit位所关联的Extent已被分配出去,反之未被分配。
若一个GAM页面大小为8K,则除GAM头(64 bytes)外,一个GAM页面所能覆盖的文件范围是: (81024-64)8(88K),约4GB空间。此外,GAM页每隔881288个页面出现一个,系统要求第一个GAM页出现在文件的第3个页面位置(即:第2个索引位置),由此得知,第N个GAM页的出现位置是: 881288*N+2
8787a745b70fe3df6b2e0df0671574b1.png
3.7、IAM
Index Allocation Map,简称IAM页。
功能:每个IAM页只隶属于一个数据库对象(例如:表),但一个数据库对象可包含多个IAM页,由此可见IAM页与数据库对象的关系是1对1,而数据库对象与IAM页的关系是1对多.
IAM的结构与GAM页类似,除IAM头外,剩下空间的每一位(bit)均对应着一个与IAM相关的Extent。若某bit位为1,则表明该bit位所关联的Extent已被分配给该IAM,反之未被分配。若一个IAM页面大小为8K,则除IAM头(64 bytes)外,一个IAM页面所能覆盖的文件范围是: (81024-64)8(88K),约4GB空间。
但与GAM也不同之处在于:IAM的出现位置不固定,只在在创建数据库对象的时候才分配。
6bc56896143910b2e3b060025dd891eb.png
三、逻辑与物理存储关系
1、逻辑关系存在表空间;
2、表空间存在对应的数据文件中;
新创建的数据库对应的数据文件的名称:
Catalog表空间 – databasename.dbfSystem表空间 – Udatabasename.dbfTemp表空间-- Tdatabasename.dbf
前面加 “U” 前缀代表用户数据表空间,用于保存用户表的数据。
不带 U 代表 是系统表的表空间,用于保存系统表的数据。
U 前缀的数据文件代表的表空间名为PG。
不带U 的数据文件代表的表空间为 CATALOG。
四、数据库文件、表空间、其他文件之间的关系
1、关系图如下:
1e59db43b34dcdd4d6c5cb6b89b2c194.png
说明:
1)每一个数据库具有一个或多个数据文件,用户存放数据库的所有数据。
2)数据库的数据文件有以下特征:
一个数据库文件只能与一个数据库的一个表空间相连。
一个表空间可以由多个数据文件组成。
3)数据库对象与文件关系:
数据库对象放到表空间中。
表空间有多个数据文件。
表空间中有多个数据库对象。
4)数据库对象逻辑上是存储在表空间中,物理上是存储在与表空间相关联的数据文件中。
2、数据库包含的文件种类:
1)数据库文件:data/DB
数据库对象,如:数据库、表,索引,序列等对象。
2)控制文件:data/CTL
用来记录数据库集群的状态信息,如:版本信息、集群所管理的各种文件信息、检查点信息、事务状态信息等。
3)日志文件:data/REDOLOG
记录数据修改 *** 作的日志,用于系统发生故障时进行数据恢复。
4)临时文件:data/DB
存放数据库进行计算的过程中,生成的各种中间对象,如排序运算的外存归并单元。
5)参数文件:data目录下
五、Postgresql 底层存储管理方式:
Postgresql的每个数据库均存放在一个目录中,以db_oid命名,该目录中存放每个表对应的文件,文件名以该数据表对应的relfilenode_oid命名。当表中的数据量足够大,导致表文件的大小大于1GB的时候,postgresql会自动创建新的文件用于存放新插入的数据。新文件的名称为: relfilenode_iod.1, relfilenode_iod.2 等。使用该策略是为了防止在某些文件系统中,最大支持文件尺寸不能大于1GB的情形。
db_oid, relfilenode_oid可以从pg_class系统表中查询得出。
er模型可以反映数据库应用系统的关系模型。
从ER模型都关系模型的转换是将抽象过得数据进一步的整理,转换完成之后数据就可以以二维表格的形式展现出来,这样将数据存入数据库之后有利于。数据库我们对数据的 *** 作。
ER模型是人们认识客观世界的一种方法,工具。关系模型是将ER模型转换成DBMS世界的产物。它们的设计就是为了不断满足用户的需要的体现。
扩展资料ER模型组成分为实体和联系,实体是对现实生活中的抽象,实体与实体之间的信息传输是通过联系来实现的。属性是实体与联系共享的一个名片。属性从分类上讲有简单属性和复合属性,有单值属性和多值属性,储存属性和派生属性。
对ER模型的 *** 作其实就是对ER模型元素的 *** 作,就是对实体,联系,属性之间的 *** 作, *** 作的目的是实现对用户的需求的同时还要减少数据的冗余。
参考资料来源:百度百科-ER模型
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)