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

有效果的网站排名厦门关键词优化seo

有效果的网站排名,厦门关键词优化seo,商城网站建设二次开发,品牌营销策划方案ppt数据库表参数 default_reloptions 函数案例 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果,力求遵循合理使用原则,并在适用的情况下注明引用来源。 本文主要参考了《PostgresSQL数据库内核…

数据库表参数

  • default_reloptions 函数
  • 案例

声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果,力求遵循合理使用原则,并在适用的情况下注明引用来源。
本文主要参考了《PostgresSQL数据库内核分析》一书,OpenGauss1.1.0 的开源代码和《OpenGauss数据库源码解析》一书以及OpenGauss社区学习文档

default_reloptions 函数

  default_reloptions 函数是一个选项解析器,用于处理与数据库关系(表或视图)相关的选项。它接受一个包含关系选项的参数,然后解析验证这些选项,将它们存储在一个特定的数据结构中(StdRdOptions)。这个函数的主要目的是允许用户或数据库管理员通过选项来自定义配置关系的各种属性和行为,例如填充因子自动化清理策略安全性设置。它是数据库系统中对关系配置的重要组成部分,以实现更好的性能行为控制
  default_reloptions 函数的作用是接收传入的关系选项(以二进制形式表示),然后将这些选项解析验证,最后将它们存储在一个特定的数据结构StdRdOptions)中,以便在数据库系统中配置管理关系的各种属性行为,如填充因子自动化清理策略安全性设置等。这个函数允许数据库管理员或应用程序开发人员根据需要自定义配置关系的行为和性能特性
  default_reloptions 函数源码如下所示:(路径:src/gausskernel/storage/access/common/reloptions.cpp

/* * 为使用StdRdOptions的任何内容(例如fillfactor和autovacuum)提供选项解析器* reloptions:传入的关系选项,以二进制形式表示* validate:指示是否进行验证的标志* kind:关系选项的类型,通常是RELOPT_KIND_HEAP或RELOPT_KIND_TOAST*/
bytea *default_reloptions(Datum reloptions, bool validate, relopt_kind kind)
{relopt_value *options = NULL;  // 存储解析后的选项值的数组StdRdOptions *rdopts = NULL;    // 存储最终结果的数据结构int numoptions;                 // 选项数量static const relopt_parse_elt tab[] = {// 定义选项名称、类型和存储位置的映射数组// 每个元素包括选项名称、数据类型和在StdRdOptions结构中的偏移量// 用于将选项值解析到对应的字段中// 更多选项可以在这里添加{ "fillfactor", RELOPT_TYPE_INT, offsetof(StdRdOptions, fillfactor) },{ "autovacuum_enabled", RELOPT_TYPE_BOOL, offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, enabled) },{ "autovacuum_vacuum_threshold", RELOPT_TYPE_INT,offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, vacuum_threshold) },{ "autovacuum_analyze_threshold", RELOPT_TYPE_INT,offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, analyze_threshold) },{ "autovacuum_vacuum_cost_delay", RELOPT_TYPE_INT,offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, vacuum_cost_delay) },{ "autovacuum_vacuum_cost_limit", RELOPT_TYPE_INT,offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, vacuum_cost_limit) },{ "autovacuum_freeze_min_age", RELOPT_TYPE_INT64,offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, freeze_min_age) },{ "autovacuum_freeze_max_age", RELOPT_TYPE_INT64,offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, freeze_max_age) },{ "autovacuum_freeze_table_age", RELOPT_TYPE_INT64,offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, freeze_table_age) },{ "autovacuum_vacuum_scale_factor", RELOPT_TYPE_REAL,offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, vacuum_scale_factor) },{ "autovacuum_analyze_scale_factor", RELOPT_TYPE_REAL,offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, analyze_scale_factor) },{ "security_barrier", RELOPT_TYPE_BOOL, offsetof(StdRdOptions, security_barrier) },{ "enable_rowsecurity", RELOPT_TYPE_BOOL, offsetof(StdRdOptions, enable_rowsecurity) },{ "force_rowsecurity", RELOPT_TYPE_BOOL, offsetof(StdRdOptions, force_rowsecurity) },{ "enable_tsdb_delta", RELOPT_TYPE_BOOL, offsetof(StdRdOptions, enable_tsdb_delta) },{ "tsdb_deltamerge_interval", RELOPT_TYPE_INT, offsetof(StdRdOptions, tsdb_deltamerge_interval) },{ "tsdb_deltamerge_threshold", RELOPT_TYPE_INT, offsetof(StdRdOptions, tsdb_deltamerge_threshold) },{ "tsdb_deltainsert_threshold", RELOPT_TYPE_INT, offsetof(StdRdOptions, tsdb_deltainsert_threshold) },{ "max_batchrow", RELOPT_TYPE_INT, offsetof(StdRdOptions, max_batch_rows) },{ "deltarow_threshold", RELOPT_TYPE_INT, offsetof(StdRdOptions, delta_rows_threshold) },{ "partial_cluster_rows", RELOPT_TYPE_INT, offsetof(StdRdOptions, partial_cluster_rows) },{ "internal_mask", RELOPT_TYPE_INT, offsetof(StdRdOptions, internalMask) },{ "orientation", RELOPT_TYPE_STRING, offsetof(StdRdOptions, orientation) },{ "compression", RELOPT_TYPE_STRING, offsetof(StdRdOptions, compression) },{"table_access_method", RELOPT_TYPE_STRING, offsetof(StdRdOptions, table_access_method)},{ "ttl", RELOPT_TYPE_STRING, offsetof(StdRdOptions, ttl) },{ "period", RELOPT_TYPE_STRING, offsetof(StdRdOptions, period) },{ "string_optimize", RELOPT_TYPE_STRING, offsetof(StdRdOptions, string_optimize) },{ "partition_interval", RELOPT_TYPE_STRING, offsetof(StdRdOptions, partition_interval) },{ "time_column", RELOPT_TYPE_STRING, offsetof(StdRdOptions, time_column) },{ "ttl_interval", RELOPT_TYPE_STRING, offsetof(StdRdOptions, ttl_interval) },{ "gather_interval", RELOPT_TYPE_STRING, offsetof(StdRdOptions, gather_interval) },{ "version", RELOPT_TYPE_STRING, offsetof(StdRdOptions, version) },{ "compresslevel", RELOPT_TYPE_INT, offsetof(StdRdOptions, compresslevel) },{ "ignore_enable_hadoop_env", RELOPT_TYPE_BOOL, offsetof(StdRdOptions, ignore_enable_hadoop_env) },{ "append_mode", RELOPT_TYPE_STRING, offsetof(StdRdOptions, append_mode) },{ "merge_list", RELOPT_TYPE_STRING, offsetof(StdRdOptions, merge_list) },{ "rel_cn_oid", RELOPT_TYPE_INT, offsetof(StdRdOptions, rel_cn_oid) },{ "append_mode_internal", RELOPT_TYPE_INT, offsetof(StdRdOptions, append_mode_internal) },{ "start_ctid_internal", RELOPT_TYPE_STRING, offsetof(StdRdOptions, start_ctid_internal) },{ "end_ctid_internal", RELOPT_TYPE_STRING, offsetof(StdRdOptions, end_ctid_internal) },{ "user_catalog_table", RELOPT_TYPE_BOOL, offsetof(StdRdOptions, user_catalog_table) },{ "hashbucket", RELOPT_TYPE_BOOL, offsetof(StdRdOptions, hashbucket) },{ "primarynode", RELOPT_TYPE_BOOL, offsetof(StdRdOptions, primarynode) },{ "on_commit_delete_rows", RELOPT_TYPE_BOOL, offsetof(StdRdOptions, on_commit_delete_rows)},{ "wait_clean_gpi", RELOPT_TYPE_STRING, offsetof(StdRdOptions, wait_clean_gpi)}};// 解析传入的关系选项,将其存储在options数组中,并返回选项数量options = parseRelOptions(reloptions, validate, kind, &numoptions);/* if none set, we're done */// 如果没有设置任何选项,则返回NULLif (numoptions == 0)return NULL;// 为rdopts分配内存,根据StdRdOptions结构的大小以及选项数量rdopts = (StdRdOptions *)allocateReloptStruct(sizeof(StdRdOptions), options, numoptions);// 使用解析后的选项填充rdopts结构,将选项值分配到对应的字段中fillRelOptions((void *)rdopts, sizeof(StdRdOptions), options, numoptions, validate, tab, lengthof(tab));// 释放options数组中的字符串值的内存for (int i = 0; i < numoptions; i++) {if (options[i].gen->type == RELOPT_TYPE_STRING && options[i].isset)pfree(options[i].values.string_val);}pfree(options);// 返回结果,以bytea类型的数据返回StdRdOptions结构return (bytea *)rdopts;
}

  其中,表(或关系)的选项的配置如下表所示:

参 数含 义
fillfactor设置表的填充因子,用于指定在表的数据页中保留多少空间,以便将来插入新行。
autovacuum_enabled一个布尔值,指定是否启用了自动化清理和分析。
autovacuum_vacuum_threshold自动清理操作的触发阈值,当表中的行数超过此阈值时,将执行自动清理操作。
autovacuum_analyze_threshold自动分析操作的触发阈值,当表中的行数超过此阈值时,将执行自动分析操作。
autovacuum_vacuum_cost_delay自动清理操作的成本延迟,以控制其执行速度。
autovacuum_vacuum_cost_limit自动清理操作的成本限制,以控制资源消耗。
autovacuum_freeze_min_age触发自动冻结的最小年龄,用于维护事务ID冻结的表。
autovacuum_freeze_max_age触发自动冻结的最大年龄,用于维护事务ID冻结的表。
autovacuum_freeze_table_age自动冻结表的年龄,用于维护事务ID冻结的表。
autovacuum_vacuum_scale_factor自动清理的比例因子。
autovacuum_analyze_scale_factor自动分析的比例因子。
security_barrier一个布尔值,指定是否启用了安全屏障。
enable_rowsecurity一个布尔值,指定是否启用了行级安全性。
force_rowsecurity一个布尔值,指定是否强制启用了行级安全性。
enable_tsdb_delta一个布尔值,指定是否启用了时序数据库(TSDB)的增量数据存储。
tsdb_deltamerge_intervalTSDB增量数据合并的时间间隔。
tsdb_deltamerge_thresholdTSDB增量数据合并的阈值。
tsdb_deltainsert_thresholdTSDB增量数据插入的阈值。
max_batchrow最大批量行数。
deltarow_threshold增量行的阈值。
partial_cluster_rows部分聚集行的数量。
internal_mask内部掩码。
orientation表的方向。
compression数据的压缩方式。
table_access_method表的访问方法。
ttl表的生存时间。
period表的周期。
string_optimize字符串优化。
partition_interval分区间隔。
time_column时间列。
ttl_interval生存时间间隔。
gather_interval聚集间隔。
version版本。
compresslevel压缩级别。
ignore_enable_hadoop_env是否忽略启用Hadoop环境。
append_mode附加模式。
merge_list合并列表。
rel_cn_oid关系CN OID
append_mode_internal内部附加模式。
start_ctid_internal内部起始CTID
end_ctid_internal内部结束CTID
user_catalog_table是否为用户目录表。
hashbucket是否为哈希桶。
primarynode是否为主节点。
on_commit_delete_rows提交时删除行。
wait_clean_gpi等待清理GPI

  这些选项配置了表的各种属性和行为,以满足特定的数据库需求。

案例

  接下来,我们通过几个案例来观察其中的几个代表参数的实际作用,来了解一下这些参数的意义。具体案例如下:

1. 创建存储表,执行以下 SQL 语句

CREATE TABLE test_table (id serial PRIMARY KEY,name text
) WITH (fillfactor = 70,  -- 设置填充因子autovacuum_enabled = true,  -- 启用自动清理和分析autovacuum_vacuum_threshold = 1000,  -- 自动清理触发阈值autovacuum_analyze_threshold = 500,  -- 自动分析触发阈值autovacuum_vacuum_cost_delay = 10,  -- 自动清理成本延迟autovacuum_vacuum_cost_limit = 1000,  -- 自动清理成本限制compression = 'lz4'  -- 数据压缩方式
);postgres=# \d+ test_tableTable "public.test_table"Column |  Type   |                        Modifiers                        | Storage  | Stats target | Description
--------+---------+---------------------------------------------------------+----------+--------------+-------------id     | integer | not null default nextval('test_table_id_seq'::regclass) | plain    |              |name   | text    |                                                         | extended |              |
Has OIDs: no
Options: orientation=column, autovacuum_enabled=true, autovacuum_analyze_threshold=500, compression=low

2. 插入一些示例数据到列存储表中

DO $$ 
DECLAREcounter INT := 1;
BEGINFOR counter IN 1..1500 LOOPINSERT INTO test_table (name) VALUES ('Item ' || counter);END LOOP;
END $$;postgres=# select * from test_table;id  |   name
------+-----------1 | Item 12 | Item 23 | Item 34 | Item 45 | Item 56 | Item 67 | Item 78 | Item 89 | Item 910 | Item 1011 | Item 1112 | Item 1213 | Item 1314 | Item 1415 | Item 1516 | Item 1617 | Item 1718 | Item 1819 | Item 1920 | Item 2021 | Item 2122 | Item 2223 | Item 2324 | Item 2425 | Item 2526 | Item 2627 | Item 2728 | Item 2829 | Item 2930 | Item 3031 | Item 3132 | Item 3233 | Item 3334 | Item 3435 | Item 3536 | Item 3637 | Item 3738 | Item 3839 | Item 39
--More--

3. 执行自动分析并查看统计信息

SELECT schemaname,relname,last_vacuum,last_autovacuum,last_analyze,last_autoanalyze,vacuum_count,autovacuum_count,analyze_count,autoanalyze_count
FROM pg_stat_all_tables
WHERE relname = 'test_table';schemaname |  relname   | last_vacuum | last_autovacuum |         last_analyze          |       last_autoanalyze        | vacuum_count | autovacuum_count | anal
yze_count | autoanalyze_count
------------+------------+-------------+-----------------+-------------------------------+-------------------------------+--------------+------------------+-----
----------+-------------------public     | test_table |             |                 | 2023-10-07 11:32:20.377228+08 | 2023-10-07 11:32:20.377228+08 |            0 |                0 |1 |                 1
(1 row)

  可以看到,当表中的数据量达到自动分触发阈值autovacuum_analyze_threshold ,则会执行自动分析 autoanalyze

4. 执行自动清理

  在PostgreSQL数据库中,自动触发autovacuum_vacuum_threshold选项所定义的自动清理autovacuum)操作通常由数据库自身的内部机制控制autovacuum_vacuum_threshold是一个配置选项,它定义了当表中的行数达到指定阈值时,自动触发VACUUM操作的条件

要触发自动清理,需要满足以下条件:

  1. 表的行数超过了autovacuum_vacuum_threshold所定义的阈值
  2. 自动清理(autovacuum)进程处于活动状态,通常是后台运行的自动清理进程

  自动清理进程会定期检查表的状态并根据一系列配置选项来决定是否执行VACUUM操作。autovacuum_vacuum_threshold只是其中之一。其他配置选项还包括autovacuum_analyze_thresholdautovacuum_freeze_max_age等,它们影响了自动清理的行为。
  需要注意的是autovacuum进程通常会数据库空闲时执行自动清理操作,以避免干扰正在进行的活动查询和事务。此外,autovacuum的行为也可以通过其他配置选项进行微调,以满足特定应用场景的需求。
  总之,要触发autovacuum_vacuum_threshold自动清理,需要确保表的行数达到了指定阈值,并确保autovacuum进程处于活动状态,它会自动监测并执行相应的清理操作。

SELECT schemaname,relname,last_vacuum,last_autovacuum,last_analyze,last_autoanalyze,vacuum_count,autovacuum_count,analyze_count,autoanalyze_count
FROM pg_stat_all_tables
WHERE relname = 'test_table';schemaname |  relname   |          last_vacuum          | last_autovacuum |         last_analyze          |       last_autoanalyze        | vacuum_count | autov
acuum_count | analyze_count | autoanalyze_count
------------+------------+-------------------------------+-----------------+-------------------------------+-------------------------------+--------------+------
------------+---------------+-------------------public     | test_table | 2023-10-07 15:35:41.430136+08 |2023-10-07 15:35:41.430136+08| 2023-10-07 15:32:22.660942+08 | 2023-10-07 15:32:22.660942+08 |            1 |0 |             2 |                 2
(1 row)

  这里不一一列举表(或关系)的选项的配置的案例,如需要详细了解可以查询相关手册。

http://www.hrbkazy.com/news/16499.html

相关文章:

  • 广州学校网站建设学编程的正规学校
  • 外贸企业网站建设公司价格2023年5月疫情爆发
  • 视频直播系统开发网站建设外贸平台推广
  • 联影uct528中标价惠州企业网站seo
  • 有了网站源码怎么做app大数据营销 全网推广
  • 响水做网站哪家好2023年免费进入b站
  • 怎么用文本做网站北京网络营销推广公司
  • 西城网站制作公司郑州网站seo
  • 怎样做网站标题的图标免费发布推广信息的软件
  • 怎么开网站做站长如何写市场调研报告
  • 网站建设的价值广州优化营商环境条例
  • 高端网站开发的公司国内快速建站
  • 网站域名分几种市场推广计划
  • wordpress统计分析采集站seo课程
  • 单页网站制作工具赣州seo外包
  • 网站开发 环境中国网站排名查询
  • 做网站的经验和体会google官网登录
  • 东营做网站建设的公司软文有哪些发布平台
  • 网站建设经理山东最新消息今天
  • 网站建设方案保障措施广州专做优化的科技公司
  • 知名高端网站建设公司什么是网站推广
  • 前端web外贸建站seo
  • 编程猫少儿编程官网网店产品seo如何优化
  • 湛江做网站苏州厂商seo专业论坛
  • 做视频网站服务器要求吗百度一下百度首页官网
  • 深圳建设企业网站seo系统培训班
  • 期末成绩管理网站开发背景郑州网站优化公司
  • 广东省住房和城乡建设厅网站店铺推广软文500字
  • 做网站常德现在网络推广方式
  • wordpress响应式音乐播放器湖南seo技术培训