首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PostgreSQL安装使用教程

本文将向您展示如何在不同平台上安装配置PostgreSQL,并介绍一些基本的数据库操作,让您迅速掌握使用技巧。...对于WindowsmacOS,直接使用EDB网站上的安装器最简单了,见这里。 下载后双击安装,中间安装过程配置一下默认自带的postgres数据库的密码即可。...我们可以使用以下命令来查询学生信息表格的所有记录: SELECT * FROM students; 这将返回一个包含所有学生信息的表格。...以上就是一个简单的pgsql用法示例,展示了如何创建表格、插入数据查询数据。 创建外键 在 PostgreSQL ,创建外键需要以下步骤: 创建主表从表。...总结: PostgreSQL是一款强大的开源数据库系统,具有丰富的功能性能。通过本文提供的安装使用教程,您可以轻松掌握如何在不同平台上安装配置PostgreSQL,以及进行基本的数据库操作。

37810

进阶数据库系列(十):PostgreSQL 视图与触发器

值必须是一个布尔值, true 或者 false。...视图的选择列表不能包含任何聚集、窗口函数或者集合返回函数。 一个更加复杂的不满足所有这些条件的视图默认是只读的:系统将不允许在该视图上的插入、更新或者删除。...PostgreSQL 触发器 什么是触发器触发器函数 触发器:一个触发器是一种声明,告诉数据库应该在执行特定的操作时执行特定的函数。 触发器函数:是指一个没有参数并且返回trigger类型的函数。...,SQL语句如下: INSERT INTO timedb VALUES(1,3); -- 查询表的数据,SQL语句如下: SELECT * FROM timedb; 查看修改触发器 可在pgAdmin...操作 触发器的使用 创建一个account表,然后创建一个触发器,用于检测表account的列name的插入数据是否为空。

58910
您找到你想要的搜索结果了吗?
是的
没有找到

PostgreSQL 14TOAST的新压缩算法LZ4,它有多快?

可以在postgresql.conf配置,也可以通过SET命令仅改变当前连接: postgres=# SET default_toast_compression=lz4; SET 在CREATE TABLE...压缩率 PGLZLZ4的压缩率都依赖于重复数据,重复的元组越多,压缩率越高。但是如果PG评估这样的压缩率不好时,就不会执行压缩,即使数据大小达到了阈值。...因为压缩并没有高效节省磁盘空间,还会带来解压锁的额外时间资源消耗。 当前PG14,PGLZ需要至少25%的压缩率,LZ则仅比未压缩数据时小即可。我比较了LZ4、PGLZ的表与未压缩表大小。...插入多个小文件(PG文档),性能提升不大。未压缩的数据相比,有巨大提升,猜测使用压缩减少了写入磁盘的数据量。...未压缩数据相比,查询速度几乎一样,PGLZ相比,插入快80%。当然某些场景下压缩率不太好,但过你想要提升执行速度,强烈推荐使用LZ4算法。 同样需要注意,需要考虑表的数据是否合适压缩。

2.7K20

PostgreSQL数据库导入大量数据时如何优化

而且在一个事务里完成所有插入的动作的最大的好处就是,如果有一条记录插入失败, 那么,到该点为止的所有已插入记录都将被回滚,这样就不会面对只有部分数据,数据不完整的问题。...六、关闭归档模式并降低 wal 日志级别 当使用 WAL 归档或流复制向一个安装录入大量数据时,在导入数据结束时,执行一次新的 basebackup 比执行一次增量 WAL 更快。...为了防止录入时的增量 WAL,可以将 wal_level 暂时调整为 minimal, archive_modet 关闭,max_wal_senders 设置为 0 来禁用归档流复制。...这是因为向 PostgreSQL 载入大量的数据将导致检查点的发生比平常(由 checkpoint_timeout 配置变量指定)更频繁。 发生检查点时,所有脏页都必须被刷写到磁盘上。...这样就避免了重复分析规划 INSERT 的开销。 九、禁用触发器 导入数据之前先 DISABLE 掉相关表上的触发器,导入完成后重新让他 ENABLE。

1.3K20

进阶数据库系列(十四):PostgreSQL 事务与并发控制

这种现象就是 不可重复读。 幻读(Phantom read), 一个事务的两次执行相同的查询, 结果集数目不一致. 幻读 可以 认为是 受 INSERT DELETE 影响 不可重复读 的特例。...下面的语句,就是在插入第一条数据之后保存了一个检查点,然后继续insert,最后回滚到保存的检查点再进行提交,最终的效果是只有第一条数据插入有效: postgres=# begin; BEGIN postgres...pg_ctl restart step 4.使用COMMIT PREPARED进行最终提交: 重启了数据库之后,我们先查看下t1表里面有没有我们插入的数据,以验证预提交阶段是不会实际插入数据的: postgres...由于 MVCC 读写不会相互阻塞, 避免了大粒度长时间的锁定, 能更好地适应 对读的响应速度 并发性要求高的场景, 常见的数据库 Oracle, PostgreSQL, MySQL(Innodb...PostgreSQL 内部数据结构, 每个元组(行记录) 有 4 个与事务可见性相关的 隐藏列: xmin, 创建该行数据的 xid; xmax, 删除改行的xid; cmin, 插入该元组的命令在事务的命令序列号

1.1K30

Postgresql INDEX HOT 原理与更好的 “玩转” INDEX

以及新插入的行都需要对当前的索引负责。...Postgres 为了降低指针重新指向的问题,提出在一个行UPDATE后,就在原有的位置上插入他的新的版本的行,通过这样的方式让索引知道新的行就在老得行的下一个位置,避免大量的更新索引的操作,使用这样的方式就可以在索引上直接指向原来的位置的下一个位置...,引起插入效率低 2 重复索引导致的数据量加大的问题 3 进行VACUUM AUTOVACUUM 多余的重复索引导致的操作时间资源消耗过大的问题。...除此以外,我们还可以针对索引做如下的一些工作 1 在Postgresql 创建针对索引的表空间,数据索引进行分离,而不要将索引和数据创建在一个数据文件内。...还有一些问题基于索引的损坏导致的问题,会发现如下的一些问题 1 本来有索引但是在查询不走索引而是走全表扫描 2 通过 pg_stat_user_tables 表的 seq_scan idx_scan

1K40

PostgreSQLNULL的意义

NULL 值不能使用任何相等运算符(“=”“!=”等)进行测试。有一些特殊的语句可以针对 NULL 测试该值,但除此之外,没有任何语句可以用于测试 NULL 值。...这证明我们不能使用相等不等运算符来比较 NULL NULL。 postgres=# SELECT NULL !...NULL is NOT NULL result; result -------- f (1 row) 2)COALESCE PG的COALESCE函数返回参数第一个非NULL的值,要求参数至少有一个是非...NULL的,如果参数都为NULL则报错: COALESCE (NULL, 2 , 1); 3)NULLIF 另外一个函数是NULLIF,如果两个参数相等,则返回NULL,否则返回第一个参数: postgres...在这个例子,有 3 个学生:Alice 有 90 分,Bob 有 0 分,而 Davis 还没有分数。对于 Bob,我们插入了 0,对于 Davis,我们插入了 NULL。

2.1K20

《Postgresql 内幕探索》读书笔记 - 第一章:集簇、表空间、元组

堆表主键索引普通索引一样的,都是存放指向堆表数据的指针。索引组织表:数据存储在聚簇索引,数据按照主键的顺序来组织数据,两者合二为一。主键索引,叶子节点存放整行数据。...而堆表页则指向页尾。特殊空间指的是索引使用的特殊区域,具体内容根据索引类型而定,B树,GiST,GiN。理解堆元组结构对于理解PostgreSQL并发控制与WAL机制是必须的。...fastupdate(快速更新)模式:基表元组产生的新的GIN索引会以追加的方式被插入到pending list列表。...fastupdate(快速更新)模式这种优化思路Mysql的插入缓冲类似,就把大量的GIN插入合并为一次插入并且一次刷新到磁盘。...比较两个键(不是被索引项)并且返回一个整数。

46440

《Postgresql 内幕探索》读书笔记 - 第一章:集簇、表空间、元组

pg_databasepg_class,可以利用下面的SQL语句查询OIDs。...堆表主键索引普通索引一样的,都是存放指向堆表数据的指针。 索引组织表: 数据存储在聚簇索引,数据按照主键的顺序来组织数据,两者合二为一。 主键索引,叶子节点存放整行数据。...而堆表页则指向页尾。 特殊空间指的是索引使用的特殊区域,具体内容根据索引类型而定,B树,GiST,GiN。 理解堆元组结构对于理解PostgreSQL并发控制与WAL机制是必须的。...fastupdate(快速更新)模式:基表元组产生的新的GIN索引会以追加的方式被插入到pending list列表。...fastupdate(快速更新)模式这种优化思路Mysql的插入缓冲类似,就把大量的GIN插入合并为一次插入并且一次刷新到磁盘。

52910

SQL优化(六) MVCC PostgreSQL实现事务多版本并发控制的精华

xmin 在创建(insert)记录(tuple)时,记录此值为插入tuple的事务ID xmax 默认值为0.在删除tuple时,记录此值 cmincmax 标识在同一个事务多个语句命令的序列值,...=> COMMIT;COMMIT 开启一个新事务,通过2条语句分别插入2条id为45的tuple。...对于插入操作,PostgreSQL会将当前事务ID存于xmin。对于删除操作,其事务ID会存于xmax。...事实,PostgreSQL实现了三种隔离级别——未提交读提交读实际上都被实现为提交读。 下面将讨论提交读重复读的实现方式 MVCC提交读 提交读只可读取其它已提交事务的结果。...MVCC可重复读 相对于提交读,重复读要求在同一事务,前后两次带条件查询所得到的结果集相同。实际,PostgreSQL的实现更严格,不紧要求可重复读,还不允许出现幻读。

1.9K50

想熟悉PostgreSQL?这篇就够了

,还继承现有表的所有列。...将插入空间以填补任何额外的空间。 varchar(#):最多包含#个字符数。 整数值 smallint:-3276832767之间的整数。...如何在PostgreSQL创建表 我们将创建一个名为“pg_equipment”的表,它定义了各种游乐场设备。...如何在PostgreSQL更改表数据 我们可以使用以下通用语法更改表的定义: ALTER TABLE table_name Action_TO_Take; 例如,我们可以通过输入以下命令在我们的“pg_equipment...如果我们将该命令提供给不存在的表,我们将看到以下错误: ERROR: table "playground_equip" does not exist 为了避免这个错误,我们可以告诉postgreSQL删除表,并以任何方式成功返回

3.2K20

PostgreSQL13新特性解读-Btree索引去重Deduplication

在实际的生产环境的数据表可能有大量的重复数据,在13版本之前,每一个重复的数据都会占用索引的一个叶子元组leaf,这些重复的key值在索引页面重复存储,带来很大的空间浪费。...实验 下面通过实验,来看看PG13btree索引的变化。对比的PG版本为PG11.3PG13.0,表test1所有列相同,表test2所有列不相同。...先模拟插入数据,pg11pg13分别操作: test=# create table test1(id int); CREATE TABLE test=# create table test2(id int...); CREATE TABLE test1插入16777216条重复数据 test=# select count(*) from test1; count ---------- 16777216...(1 row) test2插入16777216条不重复数据 test=# insert into test2 select generate_series(1,16777216); INSERT 0

1.3K30

PostgreSQL数据的存储基础知识

OID 在旧版本还可以用于标识元组,对于没有主键,重复的行,此时 OID 作为唯一 ID,则可以根据它进行删除指定行数据。我们之前创建表时,default_with_oids 默认是关闭的。...XID 事务ID: 由32位组成,这就有可能造成事务ID回卷的问题,具体参考文档 顺序产生,依次递增 没有数据变更,INSERT、UPDATE、DELETE等操作,在当前会话,事务ID不会改变 数据库系统中使用的数据类型为...xmin xmax。...cmin:插入该元组的命令在插入事务的命令标识(从0开始累加) cmax:删除该元组的命令在插入事务的命令标识(从0开始累加) cmincmax用于判断同一个事务内的其他命令导致的行版本变更是否可见...若文件达到1GB,则重新创建一个新的表文件,然后重复上面的这个过程。

2.3K60

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券