postgresql
请叫我曾阿牛
宅男,技术控
展开
-
半夜处理了一下ODBC 连接数据库23101的错误
[GBasedbt][GBasedbt ODBC Driver][GBasedbt]Unspecified System Error = -23101原创 2022-12-01 20:52:44 · 1029 阅读 · 0 评论 -
PostgreSQL的vacuum流程
vacuum是一种维护过程,有助于PostgreSQL的持久运行,它的两个主要任务是删除死元组,以及冻结事务标识。vacuum的作用:1.释放,再利用更新/删除的行所占据的磁盘空间。2.更新postgresql查询计划中使用的统计数据。3.防止因事务ID的重置而使非常老的数据丢失。并发清理过程为指定的表或者数据库中的表执行以下任务:第一部分1.从指定的表中依次处理每一张表,2.获取表上的ShareUpdateExclusiveLock锁(该锁允许其他事物对该表进行读取)。..转载 2022-05-04 10:25:43 · 831 阅读 · 0 评论 -
数据库连接异常的问题处理
某大大大客户生产环境,云平台+HDR集群。故障现象:1、正常情况一切OK;2、后来突然发现连接数据库异常27001的报错3、已经建立的连接是OK的4、此时备节点是可以查询的,建立连接是OK的5、主节点关闭,备节点接管交易,刚开始正常,过半天也就报出了27001的错误6、一线工程师无从下手处理过程:1、登录主节点之后,确实发现了27001的错误2、vmstat 1 操作系统IO正常、内存使用正常、CPU状态正常3、onstat 一通查看,发现数据库各种正常原创 2022-05-04 09:44:12 · 4473 阅读 · 0 评论 -
数据库国产化的那些事儿----2
最近看到很多国产数据库厂商都是基于开源某斯库来的,而且还可以高举信创大旗,甚至有十几家都开始拥抱某开源社区。要知道是人家商业数据库还在开发和迭代呢。以我国产数据库的经验来看,国产数据库最难的迁移和适配工作,需要应用或数据库开发商做大量的妥协。我突然有一个恐惧的想法:当下大家都依赖开源社区开源生态把某斯做起来了,生态也起来了,数据库也迁移和适配过来了。你们那里来的技术底气和商务功夫保证自己的数据库不被平滑的迁移和替换掉???想到这里,突然感觉有人在下一盘大棋,好大好久远的一盘棋,很原创 2022-04-23 22:54:34 · 797 阅读 · 0 评论 -
送给国产数据库从业者和使用者几点建议
最近听说了一个国产数据库项目POC的若干故事,深有感触,与大家分享。1、国产数据库作为国产基础软件目前整体趋势是如火如荼,风生水起;2、国产数据库(无论分布式还是集中式)大部分的原型都是PG和mysql两大开源数据库,涉及 mysql分支的(包括mariDB和percana server)恐怕都难逃GPL协议的约束(至于是什么约束,请大家自行百度);从这个角度来说,以PG为原型的貌似风险低一点;3、国产数据库在国产硬件(包含飞腾、ARM、龙芯、兆芯等)上TPCC的值跑的超级高,有的时候甚至跑到了原创 2021-08-31 09:52:14 · 836 阅读 · 2 评论 -
PostgreSQL 查看参数或变量的值
查看某个变量的值:postgres=# show application_name;查看参数的值:postgres=# select * from pg_file_settings ;查看所有参数的值:postgres=# select * from pg_settings ;原创 2021-08-05 11:35:39 · 5144 阅读 · 0 评论 -
PostgreSQL 查看数据库的大小和表的大小
查看数据库的大小:SELECT d.datname as "Name", pg_catalog.pg_get_userbyid(d.datdba) as "Owner", pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", d.datcollate as "Collate", d.datctype as "Ctype", pg_catalog.array_to_st原创 2021-08-04 20:13:51 · 1291 阅读 · 0 评论 -
PostgreSQL 查询会话的内容并杀掉会话
postgres=# select pid,usename,client_addr,client_port,query_start,query,wait_event from pg_stat_activity; 查询会话相关的信息postgres=# select pg_terminate_backend('3362'); #杀掉进程为3362的会话pg_terminate_backend----------------------tpostgres=# \lFATA...原创 2021-08-04 19:36:45 · 3003 阅读 · 0 评论 -
PostgreSQL 创建用户
postgres=# create user ttuser superuser createdb login password 'ttuser123 ';postgres=# create user user1 password 'user1'; #具有login的权限postgres=# create role user2 password 'user2'; #不能具有login的权限postgres=# alter role user2 login; ...原创 2021-08-04 14:15:08 · 1101 阅读 · 0 评论 -
PostgreSQL psql两种登录方式
方法1:psql postgresql://postgres:pg123@172.17.0.3:5434/postgrespostgresql协议名称postgresql 用户名pg123 密码172.17.0.3 ip5434 portpostgres 需要访问的数据库名称方法2:psql -U postgres -h172.17.0.3 -p5434 -dpostgres-U 用户名-h 数据库I...原创 2021-08-04 11:47:42 · 30706 阅读 · 0 评论 -
数据库操作系统相关基本配置
1、关闭防火墙systemctl status firewalld.servicesystemctl stop firewalld.servicesystemctl disable firewalld.service2、关闭selinuxsetenforce 0sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config3、操作系统核心参数调整cat > /etc/sysctl.conf <<原创 2021-07-29 15:42:41 · 537 阅读 · 0 评论 -
PostgreSQL 常用的环境变量
环境变量 说明 PGHOST 要联接的主机名主机名以斜杠开头。 PGHOSTADDR 与之连接的主机的IP地址。 PGPORT 主机服务器的端口号,或者在 Unix 域套接字联接时的套接字扩展文件名。 PGDATABASE 数据库名 PGUSER 要连接的PostgreS...原创 2021-07-29 14:49:14 · 2301 阅读 · 0 评论 -
centos 7 设置数据库服务器随主机自动
cat > /etc/systemd/system/GBase8s.service <<"EOF"[Unit]Description=GBase8s database serverDocumentation=man:gbase8s(1)After=network.target[Service]Type=forkingUser=gbasedbtGroup=gbasedbtEnvironment=GBASEDBTDIR=/opt/gbaseEnvironment=GBA原创 2021-07-29 13:25:55 · 140 阅读 · 0 评论 -
PostgreSQL postgres用户常用的环境变量
export LANG=en_US.UTF-8export PS1="[\u@\h \W]\$ "export PGPORT=5432export PGDATA=/pgsql-13/pgdataexport PGHOME=//pgsql-13//pg13export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATHex原创 2021-07-29 12:30:36 · 883 阅读 · 0 评论 -
PostgreSQL unix socket登录设置
需要在环境变量中设置如下:export PGHOME=/usr/pgsql-13export PGUSER=postgresexport PGPORT=5434export PGHOST=localhostexport PATH=$PGHOME/bin:$PATH:$HOME/bin虽然可以实现如下效果:但是我怀疑我这个设置,不是unix socketl连接,貌似仍然是tcp的连接。具体情况后面再做实验补充吧。...原创 2021-07-29 12:11:56 · 592 阅读 · 0 评论 -
PostgreSQL 设置远程访问
pg安装之后默认的监听是启动在127.0.0.1上,需要为pg设置合理的监听端口和外部访问策略才可以通过远程的方式进行访问。此时需要修改两个文件:postgresql.conf 设置数据库的监听地址和端口pg_hba.conf 设置数据库的远程访问策略postgresql.conf 设置 如下:cat >> /var/lib/pgsql/13/data/postgresql.conf <<"EOF"listen_addresses =...原创 2021-07-29 09:36:38 · 3920 阅读 · 0 评论 -
PostgreSQL 修改用户密码
以postgres用户执行psql连接数据库:alter user postgres with encrypted password 'PG@sql123';以postgres用户执行psql连接数据库:\password查看PG的版本信息:select version();查看PG的系统表:select * from pg_tables;...原创 2021-07-29 08:49:23 · 2254 阅读 · 0 评论 -
PostgreSQL 的RETURNING 子句
insert into products (product_no, name, price) values (1, 'cheese', 9.99), (2, 'bread', 1.99),(3, 'milk', 2.99);update mytable set a = 5, b = 3, c = 1 where a > 0;从修改行中返回数据:insert、 update和delete命令都有一个支持这个的可选的 returning子句。使用returning 可以避免执行额外的数原创 2021-07-22 11:09:48 · 953 阅读 · 0 评论 -
PostgreSQL 的分区表
范围划分: 表被根据一个关键列或一组列划分为“范围”,不同的分区的范围之间没有重叠。例如,我们可以根据日期范围划分,或者根据特定业务对象的标识符划分create table measurement (city_id int not null,logdate date not null,peaktemp int,unitsales int) partition by range (logdate);create table measurement_y2006m02 ...原创 2021-07-20 16:26:47 · 294 阅读 · 0 评论 -
PostgreSQL 模式等基础概念
集簇: 一个PostgreSQL数据库集簇中包含一个或更多命名的数据库(类似于实例的概念)。 角色和一些其他对象类型被整个集簇共享,连接到服务器的客户端只能访问单个数据库中的数据,即在URL中指定的那个数据库。 一个集簇的用户并不必拥有访问集簇中每一个数据库(database)的权限。 角色名的共享意味着不可能在同一个集簇中出现重名的不同角色,即在两个database中也不能出现名称相同的角色。模式: 一个数据库包含一个或多个命名模式,模式中包含着表...原创 2021-07-19 17:38:06 · 776 阅读 · 0 评论 -
PostgreSQL 权限相关
赋权示例:GRANT SELECT ON mytable TO PUBLIC;GRANT SELECT, UPDATE, INSERT ON mytable TO admin;GRANT SELECT (col1), UPDATE (col1) ON mytable TO miriam_rw;权限回收:REVOKE ALL ON accounts FROM PUBLIC;原创 2021-07-19 15:45:08 · 142 阅读 · 0 评论 -
PostgreSQL alter语法
增加列:alter table products add column description text;alter table products add column description text check (description <> '');删除列:alter table products drop column descriptionalter table products drop column description cascade;增加约束:al原创 2021-07-19 15:40:53 · 674 阅读 · 0 评论 -
PostgreSQL 重载排序规则
COLLATE子句会重载一个表达式的排序规则,具体的表达式规则如下:expr COLLATE collation示例SQL:select a, b, c from tbl where ... order by a collate "c";select * from tbl where a > 'foo' collate "c";select * from tbl where a collate "c" > 'foo';...原创 2021-07-19 14:49:31 · 311 阅读 · 0 评论 -
PostgreSQL 数据类型转换
方法1: cast ( expression as type )方法2: expression::type原创 2021-07-19 12:47:40 · 1231 阅读 · 0 评论 -
PostgreSQL 的窗口函数
示例1: select depname, empno, salary, avg(salary) over (partition by depname) from empsalary; 第四列表示对与当前行具有相同depname值的所有表行取得平均值。 一个窗口函数调用总是包含一个直接跟在窗口函数名及其参数之后的OVER子句。这使得它从句法上和一个普通函数或非窗口函数区分开来。OVER子句决定究竟查询中的哪些行被分离出来由窗口函数处理。OVER子句中...原创 2021-07-19 11:29:04 · 342 阅读 · 0 评论 -
PostgreSQL 的savepoint
语法示例:begin;1. SQL语句;2.savepoint my_savepoint;3. SQL语句;4. rollback tomy_savepoint;commit;注意: 1. 不管是释放保存点还是回滚到保存点都会释放定义在该保存点之后的所有其他保存点。 2. 通过savepoint可以实现事务的部分提交...原创 2021-07-19 11:03:55 · 598 阅读 · 0 评论 -
PostgreSQL 外键示例
create table cities (city varchar(80) primary key,location point);create table weather (city varchar(80) references cities(city),temp_lo int,temp_hi int,prcp real,date date);原创 2021-07-19 09:53:42 · 280 阅读 · 0 评论 -
PostgreSQL异常日志获取
为最大化的获取数据库异常的日志信息,可以通过如下两个方式:\set VERBOSITY verbosepostgresql.conf文件中的log_error_verbosity参数的值调整为verbose原创 2021-07-19 09:37:43 · 928 阅读 · 0 评论 -
PostgreSQL的point类型的使用
#################### point类型的使用 #################################create table cities (name varchar(80),location point);insert into cities values (‘san francisco’, ‘(-194.0, 53.0)’);#################### 使用copy 状态数据文件 ################################原创 2021-07-18 21:57:38 · 2048 阅读 · 0 评论 -
PostgreSQL的多表关联
#################### inner join #################################select * from weather inner join cities on (weather.city = cities.name);#################### left out join #################################select * from weather left outer join citie原创 2021-07-18 21:46:20 · 1285 阅读 · 0 评论 -
postgres 用户的常用环境变量
export PGDATA=/var/lib/pgsql/13/dataexport PGHOST=/var/lib/pgsql/13/dataexport PGPORT=5433export PGUSER=postgres #设置默认的连接用户名PostgreSQL可以由任何非特权用户安装,并不需要超级用户(root)的权限。创建数据库:createdb mydb删除数据库:dropdb mydbpsql登录之后如果提示符是post原创 2021-07-18 18:20:28 · 840 阅读 · 0 评论 -
PostgreSQL的进程
1.数据库启动的初始进程是postmaster2.随后启动的进程都是postgres,每个进程的用途如上3.每个客户端的连接都会在server有一个连接进程postgres: postgres postgres [local] idle原创 2021-07-18 18:04:12 · 456 阅读 · 0 评论 -
关系型数据库之间的历史渊源---部分
IBM的研究员E.F.Codd发表了关系代数的论文《用亍大型共享数据库的关系数据模型》。IBM的 Don Chamberlin是SQL关系数据库语言的发明人,也是XQuery语言的设计基础Quilt语言的发明人之一,使得大家不用直接面对关系代数。ORACLE基于上述基础之上开始发布oracle数据库产品。Michael Stonebraker创作了Ingres(源码免费开放),后又基于Ingres诞生了Postgres,Postgres又演变为当前的PostgreSQL。greenplus是基于Pos原创 2021-07-18 17:23:39 · 246 阅读 · 0 评论 -
PostgreSQL中的AUTOCOMMIT
PostgreSQL的server并不控制自动提交的默认选择,需要在客户端或会话中进行设置。检查当前AUTOCOMMIT参数值:postgres=# \echo :AUTOCOMMIT修改当前AUTOCOMMIT参数值:postgres=# \set AUTOCOMMIT off|on|to修改psql工具的值默认值:$ echo “\set AUTOCOMMIT off” >>$HOME/.psqlrc注意:AUTOCOMMIT是大写的,不能使用小写。事务块的开始和结束:开原创 2021-07-18 15:21:54 · 1977 阅读 · 0 评论 -
PostgreSQL中的临时表
PostgreSQL中的临时表分两种,一种是会话级临时表,一种是事务级临时表。在会话级临时表中,数据可以存在于整个会话的生命周期中;在事务级临时表中的数据只能存在于事务的生命周期中。默认创建的是会话级别的临时表。不管是会话级还是事务级的临时表,当会话结束后,临时表就会被回收。“ON COMMIT” 子句有三种形式,默认使用的是PRESERVE ROWS,即会话临时表:1)ON COMMIT PRESERVE ROWS 表示临时表的数据在事务结束后保留,默认值,表示会话级临时表;2)ON COM原创 2021-07-18 15:04:44 · 6876 阅读 · 0 评论 -
PostgreSQL中的UNLOGGED表
dr_prsenddr_prpingdr_idx_senddrcb_bqe:如果有线程drcb_bqe处于等待状态,drcb_bqe的意思是等待空闲的DR BUFFER。========================================================未完,待补充。...原创 2021-07-18 14:44:19 · 3598 阅读 · 0 评论 -
postgreSQL 并行创建索引(CONCURRENTLY)
strace -o leo.out ontape -s -L 0 -B sg_db_0314原创 2021-07-18 10:26:35 · 4025 阅读 · 0 评论 -
pg_dump 逻辑备份
据说union 和 union all默认的情况下,各个部分是顺序执行的,无法并行执行?不知道Informix是否可以并行?不知道开启PDQ是否可以并行起来?原创 2021-07-16 07:34:50 · 551 阅读 · 0 评论 -
postgresql 开启归档
onaudit -l 1onaudit -p /tmp/auditonaudit -a -u usr1 -e +CRTB,DRTB建议在测试环境中配置drop table的审计,以防万一。数据库的审计掩码很多,需要单独下载:原创 2021-07-15 15:43:16 · 431 阅读 · 0 评论 -
authentication method 10 not supported
使用navicat 连接postgresql 报错如下: authentication method 10 not supported原创 2021-06-19 17:10:00 · 14265 阅读 · 8 评论