自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(339)
  • 资源 (5)
  • 收藏
  • 关注

原创 postgres:锁申请

为了提高并发控制,PG通过将锁信息在本地缓存(**LOCALLOCK**)和快速处理常见锁(fastpath),减少了对共享内存的访问,提高性能。从而出现了弱锁和强锁的概念。ShareUpdateExclusiveLock是强锁和弱锁的分界线。

2024-02-03 11:32:55 1135 1

原创 postgres自动安装脚本

工作中有没有人肉安装数据的?如果有,你可以使用以下脚本,或者根据自己的需求改造一下。

2023-12-05 17:27:10 196

原创 SSD的读写速度什么有关?

因此,SSD的读写速度不仅取决于其存储技术(如NAND类型)和控制器的效率,还取决于它们使用的数据传输接口(如SATA或PCIe/NVMe)的速度和带宽。- 例如,PCIe 3.0 x4接口的理论最大带宽为32 Gbit/s(大约4000 MB/s),远高于SATA。- 通过PCIe连接的M.2 SSD可以提供高速读写性能,而通过SATA连接的则受到SATA速度限制。- PCIe有不同的版本,例如PCIe 3.0和PCIe 4.0,每个版本的带宽都比前一个版本高。Ssd的读写速度是不是部分基于数据总线?

2023-11-21 17:55:16 395

原创 SSD傻傻分不清楚

市面上常见的NVMe SSD产品有很多,它们来自不同的制造商,提供各种存储容量和性能等级。- 尽管它们的形状类似于M.2 NVMe SSD,但它们仍然使用SATA接口,因此速度与传统的SATA SSD相似。- 提供与M.2 NVMe SSD类似的性能,但通常有更大的形状,适合服务器和工作站。- SATA SSD的速度受限于SATA接口的带宽,通常比NVMe SSD慢。- 这些SSD比传统的SATA SSD快,但可能不如NVMe SSD快。- 它们的优势在于体积小,适合空间有限的应用场景,如超薄笔记本。

2023-11-21 17:53:00 156

原创 性能分析利器:pg_stat_statements介绍

pg_stat_statements.max是模块所追踪的最大语句数(即pg_stat_statements视图中的最大行数)。只有超级用户可以改变这个设置。shared_blks_read bigint (未命中块数量) shared_blks_hit/(shared_blks_hit+shared_blks_read)可计算出命中率。pg_stat_statements_reset丢弃到目前为止由pg_stat_statements收集的与指定的userid、dbid和queryid相对应的统计数据。

2023-11-21 16:47:31 597 1

原创 CPU架构

每种CPU架构都有其独特的特点和适用场景。x86/x86-64 由于其广泛的软件兼容性和强大的性能,主导了个人电脑和服务器市场。ARM架构以其高能效比优势在移动设备和嵌入式系统中占主导地位,同时也在服务器市场逐渐增加影响力。其他架构则在特定的领域或应用中发挥作用。随着技术的发展,不同架构间的界限也在逐渐模糊,例如 ARM 架构的处理器正在进入传统由 x86 架构主导的领域,如笔记本电脑和服务器。

2023-11-21 16:44:46 89

原创 Intel Xeon 处理器系列

Intel Xeon 处理器是专为服务器和工作站设计的,其型号命名和分级体系相对复杂,涵盖了从入门级到高端的各种应用。

2023-11-21 16:38:00 4042

原创 pg 模拟主库down机之pg_kaboom

所以我们可以通过这个工具模拟主库down机。来测试主备切换、生成数据库core文件等工作。

2023-11-20 22:15:31 157

原创 vscode + gdb +gdbserver 远程调试Pg源码

本文主要介绍如何通过window或者macos远程调试虚拟机的postges源码。

2023-11-14 13:58:33 962

原创 gin索引 btree索引 gist索引比较

如果碰到Like 小于两个字符的时候,无法使用gin索引。比如like '%ab%'无法使用索引。但是如果‘%abc%’就可以使用索引。对于上面gin索引两个字符无法使索引的问题,gist可以使用索引。测试发现,上述测试条件下,gin的效率要高很多。测试结果:在=的测试中btree索引吊打。结论:gist索引更大。

2023-11-14 13:45:46 394

原创 pg运维之bloom filter index 扩展 for bigint

凡是支持HASH函数,以及相等operator操作符的类型,都可以使用bloom filter index .凡是支持HASH函数,以及相等operator的类型,都可以使用bloom filter index .创建bigint的bloom filter index支持。查询可以支持bloom filter的类型,HASH函数。查询可以支持bloom filter的类型,HASH函数。

2023-11-14 13:44:38 77

原创 pg运维之checkpoint

如果增加了一行,WAL可能包含一条记录,表明数据文件中的一行必须被改变,它可能包含几条指令来改变索引条目,也许需要写一个额外的块,等等。max_wal_size是一个比较棘手的问题:首先,这是一个软限制–不是一个硬限制。然而,在许多情况下,更多的工作是由检查点进程本身完成的。因此,不要把min_wal_size设置得太低(与max_wal_size相比),以减少在负载再次增加时创建新的WAL文件的需要,可能是一个好主意。在生产中,0.7 - 0.9的值似乎是大多数工作负载的最佳选择,但可以试验一下。

2023-11-14 13:39:51 98

原创 pg运维之REDUCE WAL BY INCREASING CHECKPOINT DISTANCE

如果你在生产中运行PostgreSQL,你可能已经注意到,调整检查点对调整服务器和提高数据库整体性能是一件非常有益的事情。然而,这里面还有更多的内容。增加检查点的距离也可以帮助实际减少首先创建的WAL的数量。这是对的。这不仅仅是一个性能问题,而且对创建的日志量也有影响。

2023-11-14 13:36:24 62

原创 pg13升级到pg14 inplace测试

由于运行pg_upgrade并不会把统计信息带过来,所以需要分析一下全库。

2023-11-09 18:30:20 149

原创 pg_waldump查看truncate过程

总结:truncat的后台操作是生成新的relfilenode,老的暂时没有删除。等更新完数据字典后,开始清除老表的数据。并切换新的relfilenode。

2023-11-09 18:28:50 105

原创 postgres file_fdw如何查询日志

创建file_fdw。

2023-11-09 18:27:48 142

原创 table 从unlogged到logged

我们知道unlogged表不会写日志,假如我们把unlogged表修改为logged会发生什么?

2023-11-09 18:26:03 135

原创 分区表锁以及如何增加分区

我们可以在共享内存中保留的锁的数量是 max_connections x max_locks_per_ transaction=110。结论:在查询分区表时,主表以及查询范围内的子分区都会被加上AccessSharelock锁。(1)在查询分区表时候,主表以及查询范围内的子分区都会增加AccessSharelock锁,无法新增分区。如果修改分区表的表空间,需要对各个分区子表都修改,不然只会修改主表的表空间而子表还是在默认表空间。结论:在查询范围的分区的同时,如果truncate不重叠的分区,则不会有锁。

2023-11-09 18:24:35 359

原创 postgresql字段长度修改和数据重写

总结:修改字段长度numeric(6)->numeric(8,2),数据会发生一次拷贝。如果我们要修改为numeric(10,3),那我们计算一下:atttypmod = precision * 65,536 + scale + 4=655360+4+4= 655368。总结:修改字段长度numeric(6,2)->numeric(7,3),数据会发生一次拷贝。如果我们修改了元数据,老的数据的精度是不会变化的。(2)如果是小数位的修改,relfilenode会改变,数据发生拷贝。

2023-11-09 18:22:47 2761 1

原创 b-tree的索引页总览

b-tree的索引页总览pg的B-Tree是一种变种,算法详情请参考src/backend/access/nbtree/README,btee的索引页分为以下几种:meta page ->root page #btpo_flags=2 ->branch page #btpo_flags=0 ->leaf page #btpo_flags=1 注:如果即是leaf又是root则 btpo_flags=3 其中mete

2021-07-13 09:14:17 533

原创 pg_basebackup基础备份多表空间

1. 基础备份pg_basebackup的两种格式pg_basebackup --help|grep F -F, --format=p|t output format (plain (default), tar) Fp 文本格式 Ft tar包可压缩格式出于节省磁盘空间考虑可使用tar包格式2. 多表空间文本方式备份多表空间基础备份需要使用–tablespace-mapping进行映射,特别是在同一机器对cluster做备份时2.1 准备wal目录及新建表空间目录...

2021-06-04 19:53:05 536

原创 pg12 一主两从同步模式

服务器列表 主库 172.16.1.4 备库1 172.16.1.5 备库2 172.16.1.6 主库配置wal_level = replica fsync = on synchronous_commit = on #同步配置至少为onwal_sync_method = fsync ...

2021-06-03 22:17:22 1079 1

原创 pgbench的使用

官网:http://www.postgres.cn/docs/12/pgbench.html构造环境:postgres=# create table test( postgres(# id int8 primary key, postgres(# info text default 'test', postgres(# state int default 0, postgres(# time1 timestamp default now(), postg

2021-05-19 11:27:20 393

原创 Exchanging a Leaf Child Partition with an External Table(分区表与外部表分区交换)

Exchanging a Leaf Child Partition with an External Table You can exchange a leaf child partition of a partitioned table with a readable external table. The external table data can reside on a host file system, an NFS mount, or a Hadoop file system (HDF

2021-04-29 16:14:03 167

原创 pxf 分区表(exchange)实现的冷热分离

参考:https://greenplum.org/multi-temperature-data-querying-from-heterogeneous-data-stores-with-greenplum-and-pxf/Often in businesses, it is hard to fit all data into a single store. Data that is old and not accessed often (cold data) is generally archived

2021-04-29 15:46:03 358

原创 PostgreSQL中 AnyElement AnyArray AnynonArray的区别与联系

http://www.postgresql.org/docs/current/static/extend-type-system.html#EXTEND-TYPES-POLYMORPHIC先看一个例子:CREATE OR REPLACE FUNCTION myappend01(anyelement, anyelement) RETURNS anyelement AS$$SELECT $1 || $2;$$ LANGUAGE SQL;执行(按 AnynonArray来传递输入参数):

2021-04-28 20:18:37 1225

原创 ERROR: could not find array type for data type information_schema.character_data

SELECT table_schema, TABLE_NAME, array_to_json ( ARRAY_AGG ( privilege_type ) ) AS privilege_type FROM information_schema.table_privileges t3 WHERE t3.grantee = 'user1' GROUP BY table_schema,TABLE_NAME 报错:> ERROR: could not find a..

2021-04-28 20:14:27 611

原创 使用pgbackrest进行远端备份和还原

​作者简介Granthana Biswas cybertec公司工程师。译者简介王志斌,从事数据库产品相关工作,主要致力于postgresql数据库高可用解决方案及云端产品化工作。校对者简介李鑫,任职于海能达通信股份有限公司,数据库开发高级工程师,致力于postgresql数据库在专网通信领域、公共安全领域的应用与推广。在上一篇关于pgBackRest的文章中,我们了解了如何安装和设置pgBackRest,并且为PostgreSQL进行一次备份。这是一个非常基本的单服务器设置,只是为

2021-04-27 10:34:50 1377

原创 postgres policy测试

=============创建表t_policy,创建三个用户user1 user2 user3=====================postgres=# create table t_policy(id int,name varchar(10));CREATE TABLEpostgres=# alter table t_policy enable ROW LEVEL SECURITY; #启用行级策略ALTER TABLEpostgres=# insert into t_policy...

2021-04-27 09:54:53 556

原创 How to implement Column and Row level security in PostgreSQL

转自:https://www.enterprisedb.com/postgres-tutorials/how-implement-column-and-row-level-security-postgresqlThis article discusses how to add column-level and row-level security as components of table-level security to restrict users from accessing certain

2021-04-27 09:53:54 1516

原创 Git 分支 - 分支的新建与合并

参考:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B63.2 Git 分支 - 分支的新建与合并分支的新建与合并让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤: 开发某个网站。 为实现某个新的用户需求,创建一个分支。

2021-04-08 15:58:08 199

原创 Adding Column-level Compression(增加列压缩)

Example 1 In this example, column c1 is compressed using zstd and uses the block size defined by the system. Column c2 is compressed with quicklz, and uses a block size of 65536. Column c3 is not compressed and uses the block size defined by th...

2021-03-31 10:33:16 144

原创 redis官网文档地址

http://redisdoc.com/debug/slowlog.html

2021-03-30 09:57:56 280

原创 redis优化建议

优化的一些建议1、尽量使用短的key当然在精简的同时,不要完了key的“见名知意”。对于value有些也可精简,比如性别使用0、1。**2、避免使用keys ***keys *, 这个命令是阻塞的,即操作执行期间,其它任何命令在你的实例中都无法执行。当redis中key数据量小时到无所谓,数据量大就很糟糕了。所以我们应该避免去使用这个命令。可以去使用SCAN,来代替。3、在存到Redis之前先把你的数据压缩下redis为每种数据类型都提供了两种内部编码方式,在不同的情况下redis会

2021-03-30 09:57:23 142

原创 REDIS----配置文件----MEMORY MANAGEMENT

MEMORY MANAGEMENT部分:1.内存上限:# Set a memory usage limit to the specified amount of bytes.# When the memory limit is reached Redis will try to remove keys# according to the eviction policy selected (see maxmemory-policy).## If Redis can't remove k.

2021-03-30 09:55:26 293

原创 TortoiseGit工具使用教程之二文件操作(克隆、更新、同步)

上一个教程中介绍了git在使用之前的环境搭建,包括账号的注册以及git工具和TortoiseGit工具的安装和基本配置,本文主要讲解如何在本地取回在远程服务器端的文件,以及提交新文件以及更新原文件。1、创建目录(本地无GitHub上的目录,首次创建)为了保证本地目录与远程github上的目录一致,第一次使用时,需使用TortoiseGit中的clone(克隆)与远程目录进行同步,操作步骤如下,选择本地磁盘下的某一目录,本文在E盘下新建了一个文件夹git,进入git文件夹后点击鼠标右键选...

2021-03-30 09:53:54 1581

原创 GoLand编译器获取依赖包的两种配置方式的比较

背景:项目环境配置(打开项目发现项目下的包自身找不到问题)关于go的项目配置一共是两种情况第一种就是传统的方式:Gopath的方式(两种方式都可以,都有各自的优势)一.首先要关闭Modules的mod启动配置:(不要勾选)然后就是在GOPATH配置中添加自己配置的GOpath路径:(里面可以添加多个路径,系统会默认进行全部查找相关的依赖包)最后就是关于依赖包没有的问题:采用go get -d -v ./ 具体的介绍如下:https://wiki.jikexuey...

2021-03-30 09:52:57 927

原创 postgres的权限管理(三):用户登录

目录目录 说明 User与Role pg_hba.conf对认证方式的限制 提前填坑:如果同时匹配了pg_hba.conf中的多个规则,选用第一个 Peer和Ident认证: 使用操作系统上的用户登陆 Peer方式演示 密码认证:使用PostgreSQL的用户(Role)和密码登陆 为不同数据库、不同用户设置不同的认证方式 参考说明PostgreSQL数据库的用法和MySQL很不一样,新创建的用户的创建要和pg_hba.conf中的配置对应才能成功登陆。很多人在这个地方卡壳,

2021-03-08 17:02:47 4351 1

原创 postgres的权限管理(二):赋权管理

postgres的赋权是层层赋权:(1) 先把schema的权限授予用户(2)把schema.table的权限授予用户注意:如果直接跳过第一步,第二步grant select onschema.table to user,这种赋值会成功,但是查询还是没有权限。如果要跳过第一步,可以再创建schema的时候指定AUTHORIZATION user,即:create schema XXX AUTHORIZATION user;然后再进行grant.举例:例子中我使用了rol...

2021-03-08 17:01:19 2652

原创 postgres的权限管理(一)

推荐权限管理方式:用户组1、创建不同权限的用户组create role PROJ1_DEV_GROUP; //表的Owner,拥有表的所有操作权限。create role PROJ1_WRITE_GROUP; //表的写入权限,可以写入数据至相应表。create role PROJ1_VIEW_GROUP; //查看表数据权限,可以查看相应表的数据。2、对各个用户组进行授权授权PROJ1拥有SCHEMA1中的相关权限。grant create,usage on schema pu

2021-03-08 16:43:16 1020 1

mysq源码调试activeperl、bison-2.4.1、boost_1_59_0.zip

mysq源码调试activeperl、bison-2.4.1、boost_1_59_0.zip

2019-11-06

RAC搭建过程

rac搭建过程.使用openfilter、vm_ware、oracle11g搭建

2015-08-28

Oracle_RMAN快速入门

这篇文章主要介绍RMAN的常用方法,其中包含了作者一些自己的经验,里面的实验也基本全在WIN 2K和ORACLE 8.1.6环境下测试成功(因为这个环境比较容易实现)。

2013-08-08

RAC在VMWARE安装

VMware在linux下安装oracle10g%2BRAC

2013-07-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除