PostgreSQL体系结构 本地内存 本地内存是服务器进程独占的内存结构,每个postgresql子进程都会分配一小块相应内存空间,随着连接会话的增加而增加,它不属于实例的一部分 work_mem:用于排序的内存 maintenance_work_mem:用于内部运维工作的内存,如VACUUM垃圾回收、创建和重建索引等等 temp_buffers:用于存储临时表的数据 共享内存 SharedBuffer: -用于缓存表和索引的数据块-数据的读写都是直接对BUFFER操作的,若所需的块不再缓存中,则需要从磁盘中读取-在buffer中被修改过的,但又没有写到磁盘文件中的块被称之为脏块-由sha...

  IE5LYMWlmdvL   2023年12月06日   15   0   0 面试postgresql

概念描述 在分析慢日志时,DBA常用PerconaToolkit中的pt-query-digest工具,该工具可对慢日志进行汇总分析,但是该工具首先需要去学习怎么使用及读懂分析结果,并且分析过程会耗费一定的时间。而且有些开发人员因为服务器权限问题,是无法获取到slowlog的,所以分享一个工具slow-log-summary。slow-log-summary工具会生成一个HTML格式的慢查询汇总报告。每一类SQL是一行。执行总耗时越久的SQL,排名越靠前,也最值得优化,可读性方面非常好。对于开发人员,可直接从performance_schema中获取SQL的执行耗时分布情况,非常的方便实用。 ...

MYSQL的同步方式有哪些 mysql主从同步三种模式:异步复制、半同步复制、全同步复制、无损复制 对MYSQL的MVCC的理解 MVCC只在COMMITTEDREAD(读提交)和REPEATABLEREAD(可重复读)两种隔离级别下工作。 另一种是数据多版本并发控制(MultiVersionConcurrencyControl,简称MVCC或MCC),也称为多版本数据库: 不用加任何锁,通过一定机制生成一个数据请求时间点的一致性数据快照(Snapshot), 并用这个快照来提供一定级别(语句级或事务级)的一致性读取。从用户的角度来看,好象是数据库可以提供同一数据的多个版本。 MVCC实现...

  IE5LYMWlmdvL   2023年12月05日   13   0   0 知识面试知识面试

中断概念 1、什么是中断? Linux中断是操作系统的自我保护机制,可以保证硬件的交互过程不被意外打断,所以短时间内的中断是正常的。 2、为什么要有中断? 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。 3、中断丢失 由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行。如果中断本身要做的事情不多,那么处理起来也不会有太大问题;但如果中断要处理的事情很多,中断服务程序就有可能要运行很长时间。 4、软中断 为了解决中断处理程序执行过长和中断丢失的问题,Linux将中断处理过程分成了两个阶段,也就是上半部和下半部: 上半部用...

  IE5LYMWlmdvL   2023年12月02日   19   0   0 软中断中断处理内核线程CPU

INDEX_SS提示的作用和使用方法 INDEX_SS提示是指导优化器,通过索引跳跃扫描的方式来访问指定的索引。所谓跳跃扫描,是指跳过索引前导列来对索引进行访问。所以,发生跳跃扫描的索引,一定是2列及以上列构成的组合索引。 INDEX_SS提示的使用语法如下图所示: INDEX_SS_ASC和INDEX_SS_DESC是指在索引跳跃扫描的前提下,以正序(ASC)或倒序(DESC)的方式来访问。在未指定是的正序还是倒时,默认的是正序访问。 INDEX_SS_ASC提示的使用语法如下图所示: INDEX_SS_DESC提示的使用语法如下图所示: 其中:tablespec表示目标表的名称或别名...

INDEX_COMBINE提示的作用和使用方法 INDEX_COMBINE提示是指导优化器,通过联合访问一个表上的多个索引来实现数据的检索。而“联合访问”的实现,是通过在目标索引上施加对应的过滤条件,将过滤后的结果行的ROWID转换为位图,然后做按位AND(对应于相关条件之间是AND的关系),或者按位OR(对应于相关条件之间是OR的关系),最后,再将该按位AND或者OR的结果转换为ROWID,最后基于ROWID回表获取相应的行。 INDEX_COMBINE提示的使用语法如下图所示: 其中: tablespec表示目标表的名称或别名(当有别名时,必须用别名)。但不要加入表的属主(SCHEMA...

LEADING提示的作用和使用方法 LEADING提示是指导优化器,尽量先访问指定的表或表的集合。该提示相较于ORDERED提示更灵活。 LEADING提示的使用语法如下图所示: 其中: tablespec表示目标表的名称或别名(当有别名时,必须用别名)。但不要加入表的属主(SCHEMA)名,哪怕在SQL中,明确写了属主,提示中也不能写。 queryblock表示查询块。优化器在为一条SQL制定执行计划时,会将该SQL中涉及的子查询和视图,拆分为相应的查询块。分别为每一个查询块制定执计划。 下面,我们通过实验来说明施加该提示时,优化器是如何选择表的访问次序的。 测试验证 首先,我们创建两个...

  IE5LYMWlmdvL   2023年11月26日   12   0   0 oraclehintoraclesql优化hintsql优化

ORDERED提示的作用和使用方法 ORDERED提示是指导优化器,按照FROM子句中表出现的次序来访问。 ORDERED提示的使用语法如下图所示: 下面,我们通过实验来说明施加该提示时,优化器是如何选择表的访问次序的。 测试验证 首先,我们创建两个测试表TAB1、TAB2: 并在其上收集统计信息,如下图所示: 然后我们在其这两个表上执行如下的查询: selectcount() fromtab1,tab2 wheretab1.object_id=tab2.object_id; 当我们什么提示都不加时,其执行计划如下: 如上图所示,此时是先访问TAB1表,然后才是TAB2表。 下面,...

作用和使用方法 PUSH_SUBQ:尽可能早的执行不能做子查询展开的子查询,不能子查询展开时,通常最后执行,当子查询能早些过滤条件时,应该让其先执行。NO_PUSH_SUBQ:不能展开时最后执行。 使用语法: 写在子查询中:SELECT/+PUSH_SUBQ/ 写在外层: select/+PUSH_SUBQ(@子查询代码块名称)/ from... where(子查询) 其中子查询代码块名称:也可以结合子查询qb_name定义代码块名称。 使用版本:ORACLE10G及以上。 测试验证 创建测试表: createtablet1asselectfromdba_objectsWHERERO...

死锁是每个MySQLDBA都经常会遇到的问题,之前也写过关于死锁的详细解析。多数时候死锁容易在update中发生,且一般是涉及到二级索引。而本次遇到的问题是发生在insert上的死锁,与常规的场景不太一样,因此单独拿出来分析一下。 问题概述 死锁的详细信息如下: -----------------------LATESTDETECTEDDEADLOCK-----------------------2022-06-0710:51:030x7f49b48f7700 (1)TRANSACTION:TRANSACTION254912,ACTIVE47secinsertingmysqltablesin...

PARALLEL提示的作用和使用方法 PARALLEL提示是指导优化器对目标SQL使用并行的方式来处理。 NO_EXPAND提示的使用语法如下图所示: 其中: 只有PARALLEL时,表示将使用由数据库自动计算的并行度。其并行度至少是2。 PARALLEL(DEFAULT)时,其作用同PARALLEL。 PARALLEL(AUTO)时,使用由数据库自动计算的并行度,但计算后的并行度可能是1,即非并行,而是串行。 PARALLEL(MANUAL)时,优化器会强制使用对象上设置的并行度。如果对象的并行度为1(默认值),则串行执行。 PARALLEL(integer)时,优化器使用由integ...

NO_EXPAND提示的作用和使用方法 NO_EXPAND提示是指导优化器,在处理where子句中的OR条件时,不考虑将每一个OR条件都拆成只包含OR条件中的其中一个的子句,然后将这些子句用UNIONALL联接起来的处理方法。 NO_EXPAND提示的使用语法如下图所示: 其中: tablespec表示目标表的名称或别名(当有别名时,必须用别名)。但不要加入表的属主(SCHEMA)名,哪怕在SQL中,明确写了属主,提示中也不能写。 queryblock表示查询块。优化器在为一条SQL制定执行计划时,会将该SQL中涉及的子查询和视图,拆分为相应的查询块。分别为每一个查询块制定执计划。 其使用...

INDEX和NO_INDEX提示的作用和使用方法 提示INDEX指导优化器,使用索引来访问相关表。在指定索引时,可以通过指定索引名称,也可以指定希望在哪个列上使用索引(即使用包含指定列的索引)。提示NO_INDEX则正好相反,其指导优化器,避免使用相应的索引。 提示INDEX的使用语法如下: 其中:tablespec表示目标表的名称或别名(当有别名时,必须用别名)。但不要加入表的属主(SCHEMA)名,哪怕在SQL中,明确写了属主,提示中也不能写。 indexspec表示要使用哪个索引,或者要在哪个列上使用索引。其语法图如下所示: queryblock表示查询块。优化器在为一条SQL制...

USE_CONCAT提示的作用和使用方法 USE_CONCAT提示是指导优化器,在处理where子句中的OR条件时,将每一个OR条件都拆成只包含OR条件中的其中一个的子句,然后将这些子句用UNIONALL联接起来,并去除那些在其它子句中已经出现的记录。 USE_CONCAT提示的使用语法如下图所示: 其中: tablespec表示目标表的名称或别名(当有别名时,必须用别名)。但不要加入表的属主(SCHEMA)名,哪怕在SQL中,明确写了属主,提示中也不能写。 queryblock表示查询块。优化器在为一条SQL制定执行计划时,会将该SQL中涉及的子查询和视图,拆分为相应的查询块。分别为每一...

  IE5LYMWlmdvL   2023年11月24日   20   0   0 use_concatuse_concatsql优化sql优化

MERGE提示的作用和使用方法 MERGE提示是指导优化器,合并查询中的视图。出现在from子句中的子查询,也被视为视图。 MERGE提示的使用语法如下图所示: 其中: tablespec表示目标表的名称或别名(当有别名时,必须用别名)。但不要加入表的属主(SCHEMA)名,哪怕在SQL中,明确写了属主,提示中也不能写。 queryblock表示查询块。优化器在为一条SQL制定执行计划时,会将该SQL中涉及的子查询和视图,拆分为相应的查询块。分别为每一个查询块制定执计划。 这里需要注意的是,当MERGE后面不带参数时,需要把MERGE写到视图所在的查询块内,而带参数时,则要写到外层的查询中...

适用范围 本文档适用于在CentOS/RHEL7.X环境下安装部署PostgreSQL14.X的pg_auto_failover高可用环境。 方案概述 一、总体概述 1.1、pg_auto_failover的简单介绍 1.1.1、pg_auto_failover的参考资料 软件下载地址:https://github.com/citusdata/pg_auto_failover/releases 帮助文档地址:https://pg-auto-failover.readthedocs.io/en/main/ 1.1.2、pg_auto_failover的三种高可用架构: SingleSt...

当我们在使用PostgreSQL数据库的时候,就算我们不新赋予Superuser权限给用户,默认,也会存在一个跟系统初始化用户同名的Superuser,这个Superuser的存在其实对于权限的管控是很有用的,但是如果我们误操作,把数据库所有的superuser都变成普通账号后,可能会引起很多问题。 如下,为找回Superuser权限的步骤,供参考。 一、误操作模拟 [xmaster@mogdb-kernel-0005]$psql psql(14.1) Type"help"forhelp. postgres=\du Listofroles Rolename|Attributes|Membe...

  IE5LYMWlmdvL   2023年11月22日   13   0   0 superuserpostgresql

问题概述 巡检时发现某套数据库中有大量的SQLNetmessagefromdblink等待事件,虽然这套库频繁使用dblink但是却未出现过这么多的会话同时处于dblink等待事件,检查dblink连接目标库,发现目标库中有大量的directpathread等待事件; 源端出现大量的SQLNetmessagefromdblink等待事件 INST_IDEVENTCOUNT(1) ------------------------------------------------------------------ 2SQLNetmessagefromdblink238 1SQLNetmessag...

方案概述 Oracle11g推出了增量(incremental)统计信息收集新特性,提高大表统计信息收集的效率问题。不同分区方式情况下,incremental和非incremental方式统计信息收集比较:范围分区:incremental和非Incremental的方式收集,之间的效率差异主要一是在分区数,如果分区的数量越多,二者的差异越明显,incremental明显占优势;二是Insert的数据量所占的分区数,如果所占分区数越多,Incremental的优势会慢慢被非incremental赶超,最终,如果是insert的数据占用了全分区,incremental不如非incrementalh...

mysql8.0,建议谨慎操作,在测试环境模拟成功之后生产操作 概述 数据目录中的ibdata1文件是默认的系统表空间。你可以使用innodb_data_file_path和innodb_data_home_dir配置项来配置ibdata1。innodb_data_file_path选项用于配置InnoDB系统表空间数据文件。它的值应该是一个或多个数据文件规范的列表。如果指定了两个或多个数据文件,则用分号(;)分隔。 如果你想要表空间中包含一个名为ibdata1的、固定大小为50MB的数据文件,并且在数据目录中有一个名为ibdata2的50MB的自动扩展文件,则可以这样配置: shell&g...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~