PostgreSQL的vacuum流程
1.从指定的表中依次处理每一张表, 2.获取表上的ShareUpdateExclusiveLock锁(该锁允许其他事物对该表进行读取)。 3.扫描表中的所有页面,获取所有的死亡元组,(死元组的列表存储在本地内存的maintenance_work_mem里) 4.如果有必要,冻结旧的元组的事务标识 5.移除指向死亡元组的索引元组
opengauss的wdr报告
Oracle的awr报告在日常解决问题中起到了很大的便利,在遇到问题时,我们通常会查看有无对应时间段的快照,生成awr报告并进一步分析。通过分析数据库的状态,资源消耗以及等待事件等初步定位问题,并在此基础上进行验证。在opengauss数据库中,也有着这样的“awr”,它叫做——wdr。前提:1.打开参数enable_wdr_snapshotpostgres=# show en
PostgreSQl的MVCC
基于多个旧值版本的并发控制即MVCC,就是实现一致读PostgreSQL为每一个事务分配一个递增的、类型为int32的整数作为唯一的事务ID,即xid。创建一个新的快照时,将收集当前正在执行的事务id和已提交的最大事务id。根据快照提供的信息,PostgreSQL可以确定事务的操作是否对执行语句是可见的。PostgreSQL还在系统里的每一行记录上都存储了事务相关的信息,同样用来判断一行记录对于当
PostgreSQL 查询当前执行中sql的执行计划——pg_show_plans模块
执行计划存储如果有同样的SQL要执行很多遍,且每次都是同样的执行计划,每次都发生硬解析,则会消耗大量时间,类似于Oracle的存放执行计划的library cache,PG也有一个类似的plan_cache概念,但实际上,PG提供的是预备语言(preparedstatement),它实际是要求应用给这个语句进行标识,之后应用再通过这标识请求服务端执行,并且由应用负责回收。对于无参的预备语句,在第一
openGauss线程池相关参数
一、两个线程池相关参数enable_thread_pool参数说明:控制是否使用线程池功能。该参数属于POSTMASTER类型参数,需要重启生效 取值范围:布尔型 • on表示开启线程池功能。 • off表示不开启线程池功能。 默认值:offthread_pool_attr参数说明:用于控制线程池功能的详细属性,该参数仅在enable_thread_pool打开后生效,
PostgreSQL并行查询相关配置参数
1. max_worker_processes(integer)设置系统支持的最大后台进程数,默认为8如果备库设置,备库上此参数必须大于或等于主库上的此参数配置值此参数调整,需要重启数据库生效2. max_parallel_workers(integer)设置系统支持的并行查询进程数,默认8这个参数值不能高于max_worker_processes调整这个参数,建议同时调整max_parallel
PostgreSQL的xlog/Wal归档及日志清理
xlog/wal日志类似于Oracle的redo, PostgreSQL 的redo文件被称为WAL文件或XLOG文件,存放在$PGDATA/pg_xlog 或($PGDATA/pg_wal)目录中( Postgresql 从 10 版本开始,将所用xlog相关的全部用wal替换了)。 任何试图修改数据库数据的操作都会写一份日志到磁盘。本文举例的数据库版本为 (PostgreSQL) 11.5wa
PostgreSQL-乱序插入数据导致索引膨胀
在对索引进行重建的时候,发现索引比原来更小。针对这个现象,进行了如下测试:1.数据库版本为PostgreSQL12.1[postgres@ysla ~]$ postgres --version postgres (PostgreSQL) 12.12.先建表t1_ysl和索引ind_l,之后按乱序插入数值postgres=# create
PostgreSQL 数据库结构(DDL)比对工具 pgquarrel
pgquarrel是一个PostgreSQL数据库的数据库结构(DDL)比对工具。它会对比两个数据库源,并输出一个表示DDL差异的文件。 如果将输出文件运行到目标数据库中,它将具有与源数据库相同的结构。 主要使用场景是将数据库更改部署到测试或生产环境。pgquarrel不依赖于另一个工具(如pg_dump),而是直接连接到 PostgreSQL 服务器,从目录中获取元数据,比较对象并输出将目标数据
PostgreSQL的两个模板库
PostgreSQL里包含两个标准系统数据库,template0和template1。创建数据库时,CREATE DATABASE通过拷贝一个已有数据库进行工作。默认情况下,它拷贝名为template1的标准系统数据库 ,所以template1是创建新数据库的模板,如果给template1数据库增加对象,这些对象将被拷贝到后续创建的用户数据库中。postgres=# \c&n
openGauss1.1.0升级到2.0.1(无需root权限预安装)
该升级步骤,绕过用root用户预检查,变为手动执行升级的预安装,全部升级步骤均为omm用户进行。一.配置信息操作系统 X86:红旗7.6当前数据库版本 opengauss 1.1.0升级目标版本 opengauss 2.0.1二.操作步骤1.压缩包准备上传压缩包,压缩包可在openGauss官网进行下载https://opengauss.org/zh/download.html将 openGaus
MYSQL---SQL语句的数据缓存
1. 查询缓存设置1) 验证服务器是否支持查询缓存show variables like '%have_query_cache%';+------------------+-------+| Variable_name | Value |+------------------+-------+| have_query_cache | YES &
PostgreSQL事务隔离级别
1. 概念 脏读 一个事务读取了另一个并行未提交事务写入的数据。 不可重复读 一个事务重新读取之前读取过的数据,发现该数据已经被另一个事务(在初始读之后提交)修改。 幻读 一个事务重新执行一个返回符合一个搜索条件的行集合的查询, 发现满足条件的行集合因为另一个最近提交的事务而发生了改变。 序列化异常 成功提交一组事务的结果与这些事务所有可能的串行执行结果都不一致。 2. 事务隔离级别 设置事务隔离
PG12中新增:VACUUM命令的SKIP_LOCKED选项
PG12的VACUUM命令相对于之前版本,新增了SKIP_LOCKED选项。在拥有SKIP_LOCKED选项时,vacuum命令会跳过被lock住的table,并且vacuum命令会被看做是成功执行。之前的版本,vacuum命令遇到了lock住的table时,vacuum命令会一直处于等待状态。PostgreSQL 12.1postgres=# select version(); &nb
mysql大页配置
1、HugePages简介HugePages是kernel 2.6引入以便适应越来越大的物理内存在Linux下、page size默认是4K、如果使用HugePages、默认是2M再看2个术语:page table 映射表:物理内存和swap的对应关系、访问内存是先读page table、根据表里的映射关系操作TLB :cpu cache组件、缓存部分page table以提高转换速度2、MySQ
mysql 1129处理
● 1129 - Host '192.168.2.187' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'原因: 同一个ip在短时间内产生太多中断的数据库连接而导致的阻塞(超过mysql数据库max_connection_errors的最
结合操作系统线程 查看mysql中的sql资源 消耗
结合操作系统线程 查看mysql中的sql资源 消耗 (5.7 才可以, 5.7时 performance_schema.threads表 才加入的 thread_os_id 系统线程字段) --1、执行一个大sqlmysql> update test_limit_table set b=round(rand()*b,0);--2、查看cpu高的线程是 21
MySQL InnoDB update流程
以update test set idx = 2 where id=10;为例1.server层,语法解析,解析成mysql认识的语法,查询什么表,什么字段,生成查询路径树,选择最优查询路径2.InnoDB存储引擎,判断id=10这行对应的页是否在缓存池里,如果不在,则将对应的页从datafile中读到InnoDB缓冲池中,并对相关记录加独占锁3.undo tablespace回滚段&n
ORACLE SQL执行计划
--explain查看SQL执行计划EXPLAIN PLAN FOR select count(*) from steven.AWEN_OGG_TEST;select * from table(dbms_xplan.display());--查看AWR和CURSOR中的执行计划select * from table(dbms_xplan.display_awr('&sqlid
ORACLE TX锁
查看sidselect sid from v$mystat where rownum=1;查看tx锁源头 持有者SELECT /*+rule */ DECODE(request,0,'Holder: ','Waiter: ') ||sid sess, id1, id2, lmode, request, type,ctimeFROM V$LOCKWHERE (id1,