- 博客(158)
- 收藏
- 关注
原创 【SQLite数据库常规使用命令】
之前在做围绕数据库相关的一些小工具的时候,想找一款数据库作为小工具的资料库。需求是:不用复杂的安装,支持简单SQL,空间占用小,操作简单等等。结合着之前接触到的一些研发同事做的产品的使用经验,我想到了这款轻量级的数据库----SQLite。SQLite遵守ACID,它的设计目标是嵌入式的,已经被广泛用于各种嵌入式设备和应用程序中。大多数的操作系统已经预装了SQLite,如果没有,用包管理器装一下sqlite3就可以了。如下是一部分使用SQLite的常规命令,供参考。
2024-09-18 20:32:54 372
原创 【PostgreSQL里的子查询解析】
子查询是一种嵌套在其他SQL查询中的查询方式,也可以称作内查询或嵌套查询。当一个查询是另一个查询的条件时,就称之为子查询。子查询的语法格式与普通查询相同,但其在查询过程中起着临时结果集的作用,为主查询提供所需数据或对检索数据进行进一步的限制。子查询最重要的方面是有所谓的相关子查询和不相关子查询。
2024-09-13 23:04:22 720
原创 【PostgreSQL-patroni维护命令】
optime/leader是主库最后一次操作后的lsn位置,是持久节点不会因为session到期,删除该key值。1342177280。
2024-09-13 22:52:23 647
原创 【PostgreSQL里的restartpoint重启点】
不知道大家有没有关注过,配置文件里archive_cleanup_command参数的注释部分有着这么一句"command to execute at every restartpoint",意思是在每个restartpoint时执行的命令。提起checkpoint大家可能比较熟悉,对于这个restartpoint,可能有的人就不太了解了。一个restartpoint相当于恢复期间的检查点,并建立恢复可以前滚而无需重新replay整个恢复日志的点。是在PostgreSQL-8.2提交的。
2024-09-13 22:51:15 543
原创 【zabbix监控软件(配置及常用键值)】
z server使用 键值 采集agent数据,保存在 z mysql中,数据会以图谱的形式在web界面展示。当采集到的数据达到触发器的阈值时,会触发报警动作,通过报警媒介给报警接收人发送消息。浏览器访问:http://172.16.0.71/zabbix/主机群组:自带一部分,zabbix原生模板。同类产品:nagios、cacti。五、监控mysql-server。简介:能够部署企业级监控平台。八、部署 z proxy。监控软件–zabbix。密码: zabbix。六、监控nginx状态。
2024-09-13 22:23:48 781
原创 【PostgreSQL数据库表膨胀的一些原因】
PostgreSQL表膨胀的原因主要有两个:一个是垃圾数据,即dead tuple行数太多未及时清理,导致不能及时提供能重用的空间,二是数据页之间存在空闲空间。
2024-09-13 22:00:50 578
原创 【PostgreSQL里vacuum但是无法回收死元组的原因】
PostgreSQL数据库里的vacuum/autvacuum在我们日长的使用中可能会遇到很多问题,例如vacuum被阻塞,vacuum时间长,vacuum成功执行后,仍旧无法回收死元组等等。,本文主要介绍PostgreSQL的vacuum成功执行后,仍旧无法回收死元组的几种原因。
2024-09-13 21:59:47 545
原创 【GBase 8c V5_3.0.0 分布式数据库常用几个SQL】
以管理员用户 gbase,登录数据库主节点。接数据库,并执行如下 SQL 语句查看连接数。
2024-09-13 21:58:02 801
原创 【GBase 8c V5_3.0.0 分布式部署(单机安装)】
GBase 8c数据库分布式形态采用share nothing的分布式架构,计算节点和存储节点分离。节点间通过高速网络进行通信,所有节点都有主从互备,确保系统的极致高可用。本文主要包含GBase 8c V5_3.0.0 分布式部署(单机安装)的简单流程,供测试。GBase 8c分布式数据库实际包含CN、DN、GTM和HA管理组件,各个组件具体介绍如下:CN:协调器,采用完全对等的部署方式。对外提供接口,负责进行SQL解析和优化、生成执行计划,并协调数据节点进行数据查询和写入。在功能上CN上只存储系统的全局
2024-09-13 21:50:01 1081
原创 【PostgreSQL17新特性之-explain命令新增选项】
PostgreSQL17-beta1版本近日发布了,新版本里,explain命令新增了两个选项,分别是MEMORY 和SUMMARY。
2024-05-31 12:37:18 856
转载 【为什么我在 POSTGRESQL 中 COMMIT 很慢?】
原文标题:WHY DO I HAVE A SLOW COMMIT IN POSTGRESQL?原文作者:Laurenz Albe原文地址:https://www.cybertec-postgresql.com/en/why-do-i-have-a-slow-commit-in-postgresql/翻译:阎书利有时,我们的一位客户会查看数据库中最耗时的语句(使用pg_stat_statements或pgBadger),并发现COMMIT排名靠前。
2024-05-31 12:35:57 111
原创 【PostgreSQL17新特性之-COPY FROM的ON_ERROR容错选项】
经过测试,对于copy from的不同错误类型,就算选择了同样的ON_ERROR ignore选项,行为也可能不一样。
2024-05-30 15:23:34 964
原创 【PostgreSQL17新特性之-冗余IS [NOT] NULL限定符的处理优化】
David Rowley的相关邮件里也强调了:当我们优化Min/Max聚合时,规划器添加的IS NOT NULL qual会使重写的计划忽略NULL,这可能会导致索引选择不佳的问题。在PostgreSQL16版本及以前,就算原本的列上有非空索引,查询条件带有NULL和NOT NULL,也感知不到,依然会去扫描表去评估,增加额外的计划和执行的开销。在执行一个带有IS NOT NULL或者NOT NULL的SQL的时候,通常会对表的每一行,都会进行检查以确保列为空/不为空,这是符合常理的。
2024-05-30 15:21:59 458
原创 【PostgreSQL17新特性之-事务级别超时参数transaction_timeout】
PostgreSQL数据库里有多个和会话相关的参数,PostgreSQL17-beta1版本新增了一个transaction_timeout参数,来限制事务的持续时间。当前的一些和会话相关的超时参数如下。
2024-05-29 18:19:11 928
原创 【PostgreSQL17新特性之-新增系统视图】
PostgreSQL-17-beta1版本目前已经发布了,每个版本随着功能的增加和一些相关优化,会对部分视图进行调整,以及增加新的视图。目前的PostgreSQL-17-beta1新版本新增了两个视图,分别为pg_wait_events和pg_stat_checkpointer。pg_stat_checkpointer视图包含检查点信息,pg_wait_events 主要包含等待事件的描述。
2024-05-29 18:17:36 1401
原创 【PostgreSQL支持中文的全文检索插件(zhparser)】
PostgreSQL本身是支持全文检索的,提供两个数据类型(tsvector,tsquery),并且通过动态检索自然语言文档的集合,定位到最匹配的查询结果。而一个tsvector的值是唯一分词的分类列表,把一话一句词格式化为不同的词条,在进行分词处理的时候tsvector会自动去掉分词中重复的词条,按照一定的顺序装入。要支持中文的全文检索需要额外的中文分词插件,zhparser就是其中一种,是基于Simple Chinese Word Segmentation(SCWS)中文分词库实现的一个PG扩展。
2024-05-14 17:31:55 2274
原创 【PostgreSQL里的子查询解析】
子查询是一种嵌套在其他SQL查询中的查询方式,也可以称作内查询或嵌套查询。当一个查询是另一个查询的条件时,就称之为子查询。子查询的语法格式与普通查询相同,但其在查询过程中起着临时结果集的作用,为主查询提供所需数据或对检索数据进行进一步的限制。子查询最重要的方面是有所谓的相关子查询和不相关子查询。
2024-05-14 13:36:57 1051
原创 【PostgreSQL里insert on conflict do操作时的冲突报错分析】
最近在巡检PostgreSQL的数据库的时候,发现部分数据库里存在大量的如下报错。
2024-04-16 15:25:14 1408 1
翻译 【[译]简述PostgreSQL角色和权限】
PostgreSQL中的PUBLIC角色是一个特殊的角色,它为系统中的每个角色授予特权。它就像一个默认组,指示所有角色,甚至是后来创建的角色。它确保所有角色都有权访问某些特权。默认情况下,所有其他角色都会自动授予PUBLIC成员资格,并继承其特权。在PostgreSQL 15之前,每个用户都对公共模式拥有完全的权限(创建/使用),所有用户共享该权限。然而,从PostgreSQL 15开始,用户不再能够在公共模式中创建任何对象。此更改适用于代表所有用户的公共角色。
2024-04-11 16:14:26 225
原创 【PostgreSQL autovacuum清理死元组的相关优化】
如果有未提交的预定义语句,它们会阻止移除死元组。需要使用 COMMIT PREPARED或ROLLBACK PREPARED提交或回滚这些语句。//查询未提交的预定义语句的SQL如下。
2024-04-09 15:14:55 1077
原创 【PostgreSQL的指标采集工具--pgmetrics】
pgmetrics是用go语言写的一款PostgreSQL的健康监控指标采集软件。可以连接到数据库,获取当前数据库的相关信息,如果连接的是本地数据库,则同时会采集服务器的状态信息。可以把采集的结果以json或者text或者csv的形式存储。
2024-03-20 10:06:01 380
原创 【PostgreSQL里pg_filenode.map文件的意义】
通常情况下,PostgreSQL中每张表在磁盘上都有与之相关的文件,而这些文件的名字便是relfilenode,我们可以通过pg_class的relfilenode字段去查询。对于一张普通表,其relfilenode和oid默认是一样的。系统表有的也是。但当我们对该表进行了例如vacuum full、truncate之类的操作,表重建后,那么relfilenode便会发生变化。
2024-03-19 09:25:43 661
原创 【PostgreSQL的变长字段数据超过多少会写入到TOSAST表】
通常PostgreSQL里如果一个元祖的变长字段的数据量,超过2KB,则PostgreSQL会尝试进行压缩,把元组控制在2KB之内,如果不能满足2KB之内的需求,就需要独立的toast表来存储了。
2024-03-11 08:55:52 538
原创 【PostgreSQL实现psql连接时候提示用户的密码有效时间】
我这里写了两种,一种是只显示查看自己登陆的用户的有效期剩余时间,一种是一并显示数据库里所有的设置了有效期的用户的剩余可使用天数,以及打印出剩余时间小于七天甚至已经过期的用户。首先是涉及到的判断是否需要修改密码和有效期的查询SQL,这里根据距离过期前7天为标准作为是否需要修改密码的提示。2.一并显示数据库里所有的设置了有效期的用户的剩余可使用天数,以及打印出剩余时间小于七天甚至已经过期的用户。函数需要在所有的数据库中创建,否则psql登陆会有如下的warning,但不影响使用。更改完之后重启数据库。
2024-02-21 09:09:26 860
原创 PostgreSQL限制密码的有效期(每次增加180天)
创建用户时,可以使用如下语句,自动在当前时间的基础上增加180天,作为这个用户密码的有效时间。等到密码到期后或者临近的时候,可以使用SQL修改用户密码,并且重新定义密码的有效期。(也可以直接指定时间,下面方法是为了不用自己算增加180天的天数)把生成的SQL粘贴执行。可以通过pg_roles这个视图查看用户的密码有效时间。
2024-02-20 09:01:23 1424
原创 PostgreSQL使用session_exec和file_fdw实现失败次数锁定用户策略
缺陷:实测发现锁用户后,进去解锁特定用户。只能允许一次登陆,应该再次登陆的时候,触发函数,把之前的日志里的错误登陆的信息也计算到登录次数里了。需要删除对应的pg_log,才能使foreign table信息清理掉,来重制该用户的密码错误记录。解锁同时需要删除pg_log下csv文件里的对应有改用户登陆失败的日志记录,重制密码登录错误的记录,否则可能会重复计算之前的错误登陆记录。用户是否被锁/是否允许登陆,可以查看pg_roles系统视图里的rolcanlogin字段。使用如下语句,可以查询登陆失败的记录。
2024-02-19 16:46:10 1068 1
原创 PostgreSQL里实现计算多个数字的排列组合
在进行排列组合的时候,每一次需要知道是否有重复的值,并过滤出已经排列过的值。这个可以创建支持可变参数的函数来实现。下边的函数用到了聚合判断,并且可变参数使用variadic标记的数组。然后下边使用创建的判断是否有重复数据的函数以及使用SQL实现获取所有的排列组合。根据4的阶乘可以得到,总共应该有24种,阶乘可以使用factorial函数。然后是如何使用这个函数结合查询语句对一组数据进行排列组合。例如,一张表里有1234这四个值。想使用四个值做排列组合。先创建一个测试的表,里边存放要进行排列组合的数据。
2024-02-19 09:01:15 673
原创 【PostgreSQL灵活使用psql执行SQL的一些方式】
可以不进入数据库,在命令行,使用psql 的-c选项跟上需要执行的SQL。来获取SQL的执行结果可以使用psql的选项对查询结果进行一些处理。
2024-02-01 16:44:40 1708
原创 【openGauss/MogDB编写自定义extension】
例如openGauss的函数不支持PARALLEL语法等,有些opengauss不支持的不可以使用,这个需要注意。
2024-01-24 09:58:50 1016
原创 【PostgreSQL采用MD5密码认证时密码和pg_authid里rolpassword的关系】
通过上述测试可以发现,pg_authid系统表里的rolpassword字段的MD5码 ="md5"字符串+ md5(pwd+username)),MD5在理论上是几乎无法破解的,虽然不能反向解析,但是如果获取到了这个MD5处理后的字符串,可以通过撞库方式获取MD5算法处理前的字符,用预先计算好的MD5散列值与已知的散列值进行比较,以查找匹配的明文,从而获取到用户名和密码。但是这种方法需要预先有一定的可能的明文和计算MD5散列值的能力。
2024-01-23 13:54:44 1566
原创 【openGauss/MogDB使用mog_xlogdump解析 xlog文件内容】
REPLICA IDENTITY {DEFAULT | USING INDEX index_name | FULL | NOTHING} 调整逻辑复制时写入WAL日志中的信息量,该选项仅在wal_level配置为logical时才有效。当原数据表发生更新时,默认的逻辑复制流只包含主键的历史记录,如果需要输出所需字段更新或删除的历史记录,可修改本参数。//或者不指定事物id,只指定表对应的filenode。//指定事物id,表应的filenode。
2024-01-22 12:09:29 563
原创 [mysqldump备份单库、部分库、全库、及排除部分库]
本文针对MySQL的mysqldump工具在使用时,对于某些场景需要备份多个数据库或者排除部分数据库的场景进行举例。主要针对于备份的库是否符合预期,其余一些备份参数可根据使用场景增加调整。排除掉information_schema、performance_schema、sys、mysql、database1几个库,只备份其余的库。4.mysqldump排除部分库备份。2.mysqldump备份部分库。1.mysqldump备份单库。3.mysqldump备份全库。我的环境的mysql的版本为。
2024-01-17 12:46:21 744
原创 【pgBackRest备份工具使用】
pgBackRest是PostgreSQL数据库的一个开源备份工具,支持全量、增量和差异备份。这一点优于PG原生的备份工具pg_basebackup,因为pg_basebackup不支持增量备份,并且支持备份完整性检查等等。pgBackRest v2.49是当前的稳定版本。项目主页:https://pgbackrest.org/Github链接:https://github.com/pgbackrest/pgbackrest优点:支持本地或远程操作, 但是远程操作需要配置SSH。
2024-01-16 14:30:08 1524 1
原创 【PostgreSQL在线创建索引(CIC)功能的锁分析以及使用注意】
前一篇文章提到了普通创建索引会阻塞DML操作而PostgreSQL里可以使用create index concurrently 在线创建索引(CIC)功能,降低创建索引在表上申请的锁的级别,ShareUpdateExclusiveLock级别的锁和RowExclusiveLock不冲突,不会阻塞表上的DML操作。
2024-01-08 09:53:20 1467
原创 【PostgreSQL创建索引的锁分析和使用注意】
PostgreSQL里有很多可以加锁的对象:表、单个页、单个元组、事务ID(包括虚拟和永久ID)和普通数据库对象等等,常规锁的locktype主要有以下几种。有时候通过pg_locks查询的时候,根据pid会查到许多的锁,但是这些锁并不一定都是加在表上的,根据locktype以及relation过滤出不同对象上的锁。/**/
2024-01-08 09:49:47 1343
pgxmaster-sqlchecker
2023-04-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人